如何处理mutil-datacenter Cassandra集群中的数据中心中断

时间:2015-12-18 07:18:20

标签: cassandra cql cassandra-2.0 cassandra-2.1 nosql

我们的应用程序在具有两个数据中心的六个节点的Cassandra集群中运行。

群集信息:

Cassandra版本:2.0.3

Snitch :GossipingPropertyFileSnith

分区程序:Murmur3Partitioner

每个dc都有三个节点。

每个dc的复制因子为2。

每个节点使用num_vnodes = 256.(所有都是虚拟节点)

DC1是直流直流(本地直流),可为当前用户提供数据。 DC2只是一个备用直流(远程直流),它不向用户提供任何数据。由于我们仅计划在DC1中进行维护操作,因此我们将在维护期间为远程DC DC2提供服务。

在停电期间,整个DC1可能会停机几天。维护完成后,我们将再次使DC1为数据提供服务,并使DC2进行备份。所以我们需要在停电后在DC1中获得最新数据。我们的应用程序将在停机期间处理大量数据(几GB)。

在关闭DC1之前,

1)在DC1节点中需要注意的是什么(比如提交日志设置等)

2)在DC2节点中需要注意的是什么(如提示切换设置等)

停电期间

3)当整个DC1关闭时,将写入提示(在DC2的任何节点中?)以及如何处理这些提示?

DC1启动后

4)在中断期间,DC1节点中的复制可能会失败。如何使用DC2有效地使用最新数据制作/修复DC1?

1 个答案:

答案 0 :(得分:1)

  

使DC1失效

在关闭DC1之前,请确保已通过nodetool修复运行完整修复。

这可确保所有数据从DC1传播到DC2。

然后从DC1开始逐个删除节点。按照here

给出的步骤

确保您的DC2本身符合您的写入一致性,否则您将丢失所有数据。

如果您使用一致性级别ANY编写,那么它将保证您的写入是持久的。

  

停电期间

如果您使用默认的cassnadra设置,那么提示将只存储3个小时。增加这个会给您的机器带来不必要的开销,我不会建议您保留5天的提示。

您可以使用cassandra.yaml文件中的max_hint_window_in_ms属性配置提示时间间隔。

我不确定你应该允许cassandra为DC1写提示。

  

DC1启动后

再次使用nodetool修复运行完全修复,以在数据中心内复制数据。