我们的应用程序在具有两个数据中心的六个节点的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?
答案 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修复运行完全修复,以在数据中心内复制数据。