我有一个 Cassandra 3 节点集群和一个使用replication_factor
3 创建的密钥空间。
我使用nodetool snapshot
. 根据 Cassandra 文档的建议,为了进行全局备份,我在每个节点上使用 cron 作业启动它(3 个节点是 NTP 同步的)。我没有使用增量快照,它总是一个新的全局快照。
不幸的是,我在恢复过程中遇到了一些麻烦。
首先,我将复制因子设置为 3(以及QUORUM
READ 和 WRITE 操作的一致性级别),以确保即使 1 个节点关闭,我的应用程序也能继续工作。
我的第一个场景并不是真正的恢复过程:一个节点出现故障是因为,比如说某人或某事关闭了该节点正在运行的虚拟机。其他 2 个节点继续工作并接收写入/读取请求。24小时后,我设法重启了第一个节点的虚拟机,所有服务和文件都还在,我即将重启节点。 在重新启动之前或之后我应该执行哪些操作?
第二种情况几乎相同,但我无法恢复第一个节点的 VM,我需要重新安装它上面的所有内容,包括 Cassandra。 我应该如何使用我的备份来重新同步这个节点?我应该使用它还是 Cassandra 能够重新同步所有内容而无需我恢复任何内容?在这种情况下我应该怎么做?
我的最后一个场景是不同的。我丢失了所有节点,无法恢复任何东西。我有我的全局快照(3 个快照,每个节点 1 个,同时拍摄)。这种情况下的流程是什么?
我已经阅读了有关恢复过程的 Cassandra 文档,并且我更喜欢简单的复制恢复(换句话说,我宁愿不使用sstableloader
)。我很难理解在这些情况下何时应该使用refresh
和/或repair
命令。