定期停止 cassandra 的复制

Stopping replication of cassandra in regular intervals

我们有个主意。我们想考虑,并可能在生产中使用。

我们想使用 1 个数据中心作为主 cassandra。 2 Datacenter 是第二个和第三个数据中心,以 cassandra 集群作为备份集群。

数据中心 1 和 2 正常复制。数据中心 3 应该滞后 30 分钟。我们想通过关闭数据中心 3 复制来强制执行它。基本上每 30 分钟通过 nodetool 启动/停止八卦。

我认为这应该偶尔起作用(例如,您有架构更改,您关闭 DC3 并更新,如果出现问题,您 bootstrap 来自 DC3 的 DC1 和 DC2 具有空数据)但是如果你经常这样做会怎样?

大家怎么看?复制迟早会中断?

你想完成什么?

首先,如果你这样做,DC3 就不会真的一直落后 30 分钟。事实上,DC3 在 30 分钟内没有获得任何更新,然后几乎没有延迟地获取到 'consistent' 状态。

您会将所有写入的提示都放入提示中,因此您需要确保其中 none 丢失,否则您将需要经常进行维修。默认情况下,提示切换保留 3 小时,也有限制。在某些情况下这可能会失败,例如高写入加载时间。 (http://docs.datastax.com/en/cassandra/3.0/cassandra/configuration/configCassandra_yaml.html#configCassandra_yaml__max_hint_window_in_ms)

你想要一个灾难恢复的安全点吗?

您可以每隔 30 分钟通过 cron 在 DC3 中创建快照。快速,不需要额外的 space(硬链接),您可以轻松地从中恢复。用时间戳标记它们 201707-1200 可以很容易地找到正确的 - 也可以清理旧的。

http://docs.datastax.com/en/cassandra/3.0/cassandra/tools/toolsSnapShot.html

http://docs.datastax.com/en/cassandra/3.0/cassandra/operations/opsBackupSnapshotRestore.html