cassandra与恢复的节点同步



我正在尝试构建cassandra备份和恢复过程。

假设我有2个节点A和B,以及具有复制因子2的表C。在表C中,我们有ID=5和Name="0"的行;亚历克斯";。现在,节点B出现了一些不好的情况,我们需要将其停机几分钟来进行恢复。同时,当节点B关闭时,有人将ID=5的行改为Name=";Alex";to Name=";Alehandro";。

节点B再次向上,具有恢复的数据,并且分别针对ID=5的该节点行仍然包含Name=";亚历克斯";。

当我尝试查找ID为5的行时会发生什么?节点A会与节点B同步吗?

谢谢。

Cassandra有几种方法可以将数据同步到因节点停机或垃圾收集暂停等原因而错过写入的节点。这包括:

  • 提示-协调器节点在一段时间内(默认为3小时,可配置(将收集其他节点错过的所有写入操作,当它回来时,这些操作将针对它重播
  • 修复-数据的显式同步,通过nodetool repair手动触发,或者可以使用Reaper等工具来实现自动化
  • 读取修复-如果您使用的一致性级别需要从几个节点(TWO、LOCAL_QUORUM、QUORUM等(读取,则协调器节点将检测差异,并返回具有最新时间戳的数据,如有必要,修复具有旧数据的节点上的数据

回答您的最后一个问题-当第二个节点回来时,如果提示还没有重播,您可以获得旧数据,并且您直接从该节点读取,并且您读取的一致性级别为ONE或LOCAL_ONE。

附言:我建议浏览一下DSE体系结构指南,它介绍了Cassandra的工作原理。

最新更新