1

我有一个 Cassandra 3 节点集群和一个使用replication_factor3 创建的密钥空间。

我使用nodetool snapshot. 根据 Cassandra 文档的建议,为了进行全局备份,我在每个节点上使用 cron 作业启动它(3 个节点是 NTP 同步的)。我没有使用增量快照,它总是一个新的全局快照。

不幸的是,我在恢复过程中遇到了一些麻烦。

首先,我将复制因子设置为 3(以及QUORUMREAD 和 WRITE 操作的一致性级别),以确保即使 1 个节点关闭,我的应用程序也能继续工作。

  • 我的第一个场景并不是真正的恢复过程:一个节点出现故障是因为,比如说某人或某事关闭了该节点正在运行的虚拟机。其他 2 个节点继续工作并接收写入/读取请求。24小时后,我设法重启了第一个节点的虚拟机,所有服务和文件都还在,我即将重启节点。 在重新启动之前或之后我应该执行哪些操作?

  • 第二种情况几乎相同,但我无法恢复第一个节点的 VM,我需要重新安装它上面的所有内容,包括 Cassandra。 我应该如何使用我的备份来重新同步这个节点?我应该使用它还是 Cassandra 能够重新同步所有内容而无需我恢复任何内容?在这种情况下我应该怎么做?

  • 我的最后一个场景是不同的。我丢失了所有节点,无法恢复任何东西。我有我的全局快照(3 个快照,每个节点 1 个,同时拍摄)。这种情况下的流程是什么?

我已经阅读了有关恢复过程的 Cassandra 文档,并且我更喜欢简单的复制恢复(换句话说,我宁愿不使用sstableloader)。我很难理解在这些情况下何时应该使用refresh和/或repair命令。

4

1 回答 1

1

我很难理解在这些情况下何时应该使用刷新和/或修复命令

根据文档refresh,当您从快照恢复数据时,您应该执行第 2 和第 3 个场景。

我想这三种情况都不需要修复。但我建议执行它,因为在刚刚恢复的节点上拥有一致的数据是一个简单而有用的步骤。

此外repair,定期是 cassandra 集群维护的推荐部分。

于 2016-12-13T14:31:23.783 回答