失败后跨数据中心同步

时间:2019-03-11 13:25:25

标签: database database-design cassandra

谁能解释我在这些情况下会发生什么,特别是为什么在第二种情况下数据永远不会同步。

简介:

  • 2个DC,带有NetworkTopologyStrategy {DC-1:3,DC-2:3}的键空间
  • 所有写入和读取均使用CL = LOCAL_QUORUM
  • “将x写入dc-2”意味着我使用cqlsh连接到DC-2中的某些cassandra实例并执行一些写操作。
  • “ dc-1 die”表示所有cassandra实例均已终止(kubectl删除容器)

方案1-我了解

  1. DC-1死了。
  2. 将x写入DC-2
  3. DC-1复活
  4. 读取DC-1会在几秒钟后返回正确的结果

这是想要的行为-数据最终会同步


场景2

  1. DC-1死了。
  2. 将x写入DC-2
  3. DC-2死了
  4. DC-1复活
  5. 在DC-1上读取会返回陈旧数据
  6. DC-2复活
  7. 长时间读取DC-1会返回陈旧数据

在这种情况下,数据是否将在整个DC中再次同步?

1 个答案:

答案 0 :(得分:0)

对于这两种情况,您都需要在两个DC的每个节点上运行nodetool repair。但是,cassandra节点会存储特定时间的提示,默认时间为3小时。修复可确保cassandra群集上数据的一致性。