cassandra - 数据中心宕机后的 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'?
解决方案
在 datacenter2 上的节点上执行nodetool cleanup
应该能够使数据同步,但根据受影响的数据大小,这可能是一项需要时间和资源的任务。如果 datacenter2 仅作为灾难恢复目的的备份,则备份当前 dc1 集群并在第二个数据中心中恢复它可能更容易和更快(更多信息可在此处获得。
推荐阅读
- kotlin - Kotlin 返回的变量没有通过
- javascript - 如何使用 TypeORM leftJoinAndSelect 连接多个表?
- html - Figure in header having a wierd width when using @media
- javascript - 首选特定库的自动导入
- swift - XCode 13. 如何查看对象的类型
- javascript - 需要帮助启动此按钮并使用 CSS 和 HTML
- python - 如何使用 python 中的队列触发函数应用程序将 Azure 队列消息存储到 blob
- python - 识别导致布尔表达式为假的原因
- r - 如何用ggplot在x轴上得到一个间隙?
- java - 是否可以将颜色更改为形状或绘制以突出显示日历?