如何正确备份Tarantool memtx?

时间:2018-09-05 09:29:55

标签: backup tarantool

设置:

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文件之前没有办法备份它。

2 个答案:

答案 0 :(得分:3)

  
    

我想说明的事情:...

  

好吧。对于1-2。我有个建议:到达检查点后,只需使用rsync或/和scp以及任何其他外部工具复制文件即可。

这意味着没有机会使其成为可能,并且您无法拥有使用box.backup。*函数描述的行为。

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

答案 1 :(得分:2)

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

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