【问题标题】:cassandra sync with recovered nodecassandra 与恢复的节点同步
【发布时间】:2020-12-22 11:23:24
【问题描述】:

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

假设我有 2 个节点 A 和 B 以及表 C,副本因子为 2。 在表 C 中,我们有 ID=5 和 Name="Alex" 的行。 现在,节点 B 发生了一些不好的事情,我们需要将其关闭几分钟以进行恢复。 同时,当节点 B 宕机时,有人将 ID=5 的行从 Name="Alex" 更改为 Name="Alehandro"。

节点 B 再次启动,数据已恢复,并且 ID=5 的该节点行仍分别包含 Name="Alex"。

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

谢谢。

【问题讨论】:

    标签: cassandra cassandra-3.0


    【解决方案1】:

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

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

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

    附:我建议查看 DSE Architecture Guide - 它涵盖了 Cassandra 的工作原理。

    【讨论】:

      猜你喜欢
      • 2017-10-27
      • 1970-01-01
      • 1970-01-01
      • 2012-04-10
      • 1970-01-01
      • 2020-07-11
      • 2013-05-09
      • 1970-01-01
      • 2016-08-04
      相关资源
      最近更新 更多