程序核心或强制终止时 LevelDB 数据损坏?

LevelDB data broken when program core or force killed?

我们的游戏服务器使用 LevelDB 作为数据缓存。

最近,我们发现了一个严重的问题:

当服务器死锁时,我们kill是使用kill -9,LevelDB中的一些数据被破坏了。

所以,我有两个疑问:

  1. 为什么数据坏了?我确定我的数据已写回 LevelDB?
  2. 有办法修复损坏的 LevelDB 吗?

关于第一个问题:

  • 使用 WriteBatch-es(又名原子操作)
  • 使用同步写入

阅读 this 文章(原子更新和同步写入部分)。好像你不做。

关于第二个问题:使用备份 :D 始终使用备份!