首页 > 解决方案 > 数据中心宕机后的 Cassandra 修复

问题描述

我有一个在 AWS 中运行的 Cassandra db(版本 3.11.2),有 2 个数据中心——每个数据中心位于另一个 AWS 区域,每个区域有 3 个节点。

所有键空间的复制因子为 3,因此每个节点上的数据都完全复制。每个节点的数据大小约为 10GB。我们所有的写入都在针对一个 DC(我们称之为 DC1)的 LOCAL_QUORUM 中。基本上另一个 DC 只是为了一种备份和灾难恢复,如果 DC1 的 AWS 区域不可用,我们会将流量重定向到 DC2。

我的问题是两个 DC 之间的网络断开了几个小时,几天后我们注意到 DC2 中的数据丢失。这一切都是有道理的,因为 DC 分开的时间大于提示切换窗口(3 小时)。所以我们需要进行修复以使 DC2 恢复与 DC1 的同步。

我浏览了 cassandra 文档,并阅读了无数 SO 答案,对于我的一生,我无法理解正确的修复方法是什么......我是否需要发出“nodetool repair --full --sequential”只有一个节点?我需要在集群中的每个节点上运行它吗?也许最好运行'nodetool rebuild'?

标签: cassandra

解决方案


在 datacenter2 上的节点上执行nodetool cleanup应该能够使数据同步,但根据受影响的数据大小,这可能是一项需要时间和资源的任务。如果 datacenter2 仅作为灾难恢复目的的备份,则备份当前 dc1 集群并在第二个数据中心中恢复它可能更容易和更快(更多信息可在此处获得。


推荐阅读