备份 Riak Bitcask 后端

Backup Riak Bitcask backend

我正在尝试了解如何在 Riak 节点上正确备份 Bitcask。我的印象是 Bitcask 的优势之一是可以在节点处于 运行ning 时 运行 文件系统备份。查看官方文档,它说在进行备份之前始终停止节点,即使在使用 Bitcask 后端时也是如此。

我可以看到 3 种备份方式,从简单到复杂排序:

  1. 使用 tar、rsync 或 cp 复制 运行ning 节点的 bitcask 目录。

  2. 节点处于 运行ning 时的快照文件系统。

  3. 停止节点,快照文件系统,start 节点。

那么,方案1会成功备份bitcask吗,还是会有数据丢失的风险?如果是这样,选项 2 呢?

编辑下方。这是对克雷格回答的回应:

阅读 Bitcask "whitepaper" 它说内置了压缩逻辑。但是,我猜 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/

如果节点由于合并和压缩而应该停止。在合并 window 之外的 运行ning 节点上备份 Bitcask 或将合并策略设置为从不是否安全?

我理解文档,但认为 Bitcask 的优点之一是实时备份,它与 Riak 的 "high availability" 目标非常吻合。但看起来并非如此。至少现在不会了。

备份 Riak 节点的最佳建议在这里:

http://docs.basho.com/riak/kv/2.1.4/using/cluster-operations/backing-up/

虽然普通的 Bitcask 数据库(不与 Riak 节点相关联)可能可以用于在线备份,但建议您停止 Riak 节点:"to prevent data loss as a result of the background merging and compaction processes of Riak’s backends." 换句话说,如果您在节点处于运行状态时对其进行快照运行 快照上的某些文件很可能会损坏。

LevelDB 后端正在做一些工作,这将允许备份 运行 个节点(一些组织已经在用他们自己的技术来做这件事)。我不知道是否会为 Bitcask 后端添加相同的功能。