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

发布于 2024-12-27 07:09:42 字数 244 浏览 3 评论 0原文

我想知道 LevelDB 库的“快照”工具是否可以创建一个快照引用,即使在关闭打开的数据库对象后也可以保存该快照引用(从而在后续打开时重用)。

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

(本质上,我正在寻找类似于通过某个检查点位置保存 BerkeleyDB-JE 的仅附加 JDB 日志文件的东西。)

I'm wondering if the 'snapshot' facility of the LevelDB library can create a snapshot reference that could be saved even after a close of the open database object (and thus reused on a subsequent open).

I suspect not, which leads to a followup: is there a good/recommended way to make a consistent backup of the database as of a snapshot-instant, ideally even while other activity continues? (That is, short of iterating the entire snapshot keyrange via the API?)

(Essentially I'm looking for something analogous to saving aside the append-only JDB log files of BerkeleyDB-JE up through a certain checkpointed place.)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

故人的歌 2025-01-03 07:09:42

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

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

A good approach would be to close the DB, then hard link all the sst files (cp -l) and copy all the non-sst files. This way you only actually copy a small amount of data (size of your log, 4MB by default). Then you can open the DB again.

You do have to block while this happens, but hopefully it should be quick.

亚希 2025-01-03 07:09:42

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

我在 leveldb 中没有看到任何可以让您保存快照的东西,除了做您真正想要的事情要做的事情:创建一个新的 leveldb 实例,迭代整个当前快照键范围并将其写入新的 l​​eveldb 实例。您的情况是否阻止您这样做?

I suspect not, which leads to a followup: is there a good/recommended way to make a consistent backup of the database as of a snapshot-instant, ideally even while other activity continues? (That is, short of iterating the entire snapshot keyrange via the API?)

I haven't seen anything in leveldb that would allow you to save the snapshot, aside from doing what you don't really want to do: create a new leveldb instance, iterate over the entire current snapshot key range and write it into the new leveldb instance. Does your situation prevent you from doing that?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文