0

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

集群信息:

卡桑德拉版本 :2.0.3

告密者 :GossipingPropertyFileSnith

分区 器:Murmur3Partitioner

每个 dc 有三个节点。

每个 dc 的复制因子为 2。

每个节点使用 num_vnodes = 256。(都是虚拟节点)

DC1 是一个实时的 dc(本地 dc),它为当前的用户提供数据。DC2 只是一个备份 dc(remote dc),它不向用户提供任何数据。由于我们计划单独在 DC1 进行维护操作,因此我们将在维护期间制作远程 DC DC2 来为用户服务。

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

在关闭 DC1 之前,

1)在 DC1 节点中需要注意哪些事项(如提交日志设置等)

2) 在 DC2 节点中需要注意哪些事项(如提示切换设置等)

停电期间,

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

DC1启动后,

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

4

1 回答 1

1

使 DC1 下降

在关闭 DC1 之前,请确保您已使用 nodetool repair 运行完整修复。

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

然后从 DC1 开始一个一个地杀死节点。按照此处给出的步骤

确保您的 DC2 本身可以实现写入一致性,否则您将丢失所有数据。

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

停电期间

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

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

我不确定您是否应该允许 cassandra 为 DC1 编写提示。

DC1 启动后

再次使用 nodetool repair 运行完整修复以跨数据中心复制数据。

于 2015-12-18T11:59:51.037 回答