如何正确备份 Tarantool memtx?

How to backup Tarantool memtx properly?

设置:

tarantool 实例,使用 memtx/vinyl 存储。 box.cfg.snapshot_period(memtx 拍摄磁盘快照的频率)设置为 14400(每 4 小时)。

用户几乎永久地向数据库提交他们有价值的提交。

备份系统:

我每 15 分钟通过调用 box.backup.start() 并使用一些外部脚本将列出的文件复制到备份存储来进行备份。

最近我发现复制文件的校验和仅在拍摄快照后(每 4 小时)发生变化。

我已经检查过备份文件中是否包含任何 *.xlog(据我所知,memtx 将所有信息提交到这里)文件 - 但它们没有。

我想说明的事情:

  1. 有什么方法可以备份xlog文件吗?将它们与文件列表的其余部分一起复制就足够了吗?或者它们可能会在 box.backup.start() 和 box.backup.stop() 之间的复制过程中被更改并变得不一致?

  2. box.backup.start() 是否有任何参数来备份所有信息,如果备份发生在快照之间,则存储在 memtx 中?

我看到了在每次备份之前拍摄快照的可能解决方法,但我想确保在实施之前无法备份 xlog 文件。

好的,box.backup.start() 不是为这种情况设计的 - 它列出了来自检查点的文件,但没有列出检查点之后创建的 WAL 文件。看起来您正在为我们通常设置复制的场景使用备份。

作为解决方法,您可以简单地 rsync() 您的 en

The things I want to made clear: ...

嗯。对于 1 - 2。我有一个建议:在到达检查点后,只需使用 rsync or/and scp 以及任何其他外部工具复制文件。

意味着没有机会让它成为可能,并且你不能有你使用 box.backup.* 函数描述的行为。

我更喜欢使用 rsync 而不仅仅是 Tarantool。例如,有时为了获得 PosgreSQL 的存档日志的最佳体验(我希望有一个恢复点),我也一直在使用 rsync。