LevelDB快照可以在数据库关闭后继续存在吗?

时间:2012-01-17 07:38:59

标签: key-value key-value-store leveldb

我想知道LevelDB库的'snapshot'工具是否可以创建一个快照引用,即使在关闭打开的数据库对象之后也可以保存它(因此在后续打开时重用)。

我怀疑没有,这会导致后续跟进:是否有一种好的/推荐的方法可以在快照瞬间进行数据库的一致备份,理想情况下即使其他活动仍在继续? (也就是说,没有通过API迭代整个快照键范围?)

(基本上我正在寻找一些类似于将BerkeleyDB-JE的仅附加JDB日志文件保存到某个检查点的地方。)

2 个答案:

答案 0 :(得分:3)

一个好方法是关闭数据库,然后硬链接所有sst文件(cp -l)并复制所有非sst文件。这样您实际上只能复制少量数据(日志大小,默认为4MB)。然后你可以再次打开数据库。

在发生这种情况时你必须阻止,但希望它应该很快。

答案 1 :(得分:1)

  

我怀疑没有,这会导致后续跟进:是否有一种好的/推荐的方法可以在快照瞬间进行数据库的一致备份,理想情况下即使其他活动仍在继续? (也就是说,没有通过API迭代整个快照键范围?)

我没有在leveldb中看到任何可以保存快照的内容,除了做真正想做的事情之外:创建一个新的leveldb实例,迭代整个当前快照键范围并将其写入新的leveldb实例。你的情况会阻止你这样做吗?