我有一个Cassandra 3节点集群和一个用replication_factor
创建的密钥空间。
我使用nodetool snapshot
为此密钥空间进行备份。根据Cassandra文档的建议,为了进行全局备份,我在每个节点上使用cron作业启动它(3个节点是NTP同步的)。我没有使用增量快照,它始终是一个新的全局快照。
不幸的是,我在恢复过程中遇到了一些麻烦。
首先,我已将复制因子设置为3(以及QUORUM
一致的READ和WRITE操作级别),以确保即使1个节点关闭,我的应用程序也能继续工作。
我的第一个场景并不是真正的恢复过程: 一个节点发生故障,因为,让某人或某事关闭运行该节点的VM。其他2个节点继续工作并接收写/读请求。 24小时后,我设法重启第一个节点的虚拟机,所有服务和文件仍然存在,我即将重启节点。 在重新启动之前或之后是否应该采取任何措施?
第二种情况几乎相同,但我无法恢复第一个节点的虚拟机,我需要重新安装其中的所有内容,包括Cassandra。 我应该如何使用备份重新同步此节点?我应该使用它还是Cassandra能够重新同步所有内容而不必恢复任何东西?在这种情况下我该怎么做?
我的最后一个场景是不同的。我丢失了所有节点,无法恢复任何状态。我的全局快照(3个快照,每个节点1个,同时拍摄)。 这种情况下的流程是什么?
我已经阅读了Cassandra文档以了解还原过程,并且我更喜欢简单的复制还原(换句话说,我宁愿不使用sstableloader
)。在这些情况下我应该使用refresh
和/或repair
命令时,我有些麻烦。
答案 0 :(得分:1)
在我应该在这些场景中使用刷新和/或修复命令时,我有些麻烦
根据documentation,您应该在从快照,第2和第3个方案恢复数据时执行refresh
。
我认为所有三种情况都不需要修复。但我建议执行它,因为在刚恢复的节点上获得一致的数据是一个简单而有用的步骤。
此外,repair
定期是cassandra集群维护的推荐部分。