处理不同的用卡珊德拉2.2

问题描述:

恢复的情况我有一个卡桑德拉3个节点的集群,并与3处理不同的用卡珊德拉2.2

一个replication_factor我做我的备份,这个密钥空间与nodetool snapshot创建一个密钥空间。按照Cassandra文档的建议,为了进行全局备份,我在每个节点上使用cron作业来启动它(3个节点是NTP同步的)。我没有使用增量快照,它总是一个新的全局快照。

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

首先,我已将复制因子设置为3(和QUORUM读取和写入操作的一致性级别),以确保我的应用程序即使在1节点关闭的情况下也能继续工作。

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

  • 第二种情况几乎相同,但我无法恢复第一个节点的虚拟机,我需要重新安装包括Cassandra在内的所有内容。 我应该如何使用我的备份重新同步此节点?我应该甚至使用它还是卡桑德拉能够重新同步一切,而不需要我恢复任何东西?在这种情况下我应该怎么做?

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

我读过的恢复过程卡桑德拉文件,我已经为简单的复制恢复(换句话说,我宁可不使用sstableloader)的偏好。我很难理解在这些情况下我应该使用refresh和/或repair命令。

我有麻烦了解何时应该使用刷新和/或修复命令在这些情况下

根据documentation你应该执行refresh当你从一个快照,第二和恢复数据第三种情况。

我想所有三种情况下都不需要修复步骤。但我会建议执行它,因为在恢复的节点上保存一致的数据非常简单且有用。

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

+0

谢谢你的回答。但是在第一种情况下,在重新启动已关闭几个小时或几天的节点之后,我应该在'nodetool repair'旁边执行其他操作吗?而对于第二个,我应该使用来自丢失节点的快照,还是Cassandra能够使用其他两个节点自己重新同步所有内容? –

+0

@TheWingman,修复对于第一种情况是足够的,即使节点长时间停机。而对于第二个,Cassandra可以从其他节点引导数据(http://cassandra.apache.org/doc/latest/operating/topo_changes.html#bootstrap),但与从snashot恢复相比,它可能需要很长时间。 –