我试图了解如何在Riak节点上正确备份Bitcask。我的印象是,Bitcask的优点之一是在节点运行时运行文件系统备份的可能性。查看官方文档,它表示在进行备份之前总是停止节点,即使使用Bitcask后端也是如此。
我可以看到3种备份方式,从简单到复杂的顺序排序:
使用tar,rsync或cp复制正在运行的节点的bitcask目录。
节点运行时的快照文件系统。
停止节点,快照文件系统,启动节点。
那么,选项1是否会成功备份bitcask,还是存在数据丢失的风险?如果是这样,那么选项2呢?
编辑如下。这是对Craig的答案的回应:
阅读Bitcask"白皮书"它说内置了压缩逻辑。但是,我猜Riak可能会在其上添加自己的合并逻辑。
http://basho.com/wp-content/uploads/2015/05/bitcask-intro.pdf
此外,Riak 1.4.12的官方文档仅声明在使用LevelDB后端时必须停止节点,而不是Bitcask。当然,在riak 2.0 +中可能会发生一些变化。
http://docs.basho.com/riak/1.4.12/ops/running/backups/
另外,在最新的官方文档中阅读有关Bitcask后端的信息让我觉得可以进行实时备份。
docs.basho.com/riak/kv/2.1.4/setup/planning/backend/bitcask /
如果节点因合并和压缩而停止。在合并窗口之外的正在运行的节点上备份Bitcask或将合并策略设置为永不安全吗?
我理解文档,但认为关于Bitcask的一个简洁的事情是实时备份,它与Riak"高可用性"的目标非常吻合。但看起来情况并非如此。至少不再这样了。
答案 0 :(得分:2)
备份Riak节点的最佳建议如下:
http://docs.basho.com/riak/kv/2.1.4/using/cluster-operations/backing-up/
虽然正常的Bitcask数据库(与Riak节点无关)可能适用于在线备份,但建议您停止Riak节点:“防止因Riak后端的后台合并和压缩过程导致数据丢失“。换句话说,如果节点在运行时对其进行快照,则很有可能某些文件在快照上损坏。
正在完成LevelDB后端的工作,这将允许运行节点备份(并且一些组织已经使用他们自己的技术来完成)。我不知道将为Bitcask后端添加相同的功能。