1

我有一个关于潜在场景的问题,想知道我们的假设是否正确。(使用 cassandra 3.x 和 DSE 5.x)

我们从文档中了解到,为了向集群添加一个新的(新鲜的)数据中心,我们需要像这样临时设置 ReplicationFactor:

{'class' : 'NetworkTopologyStrategy', 'DC1' : 3, 'DC2' : 0 }

其中 DC1 是当前正在运行的数据中心,而 DC2 是我们正在添加的数据中心。该测试帮助我们了解数据流从现有直播环到全新直播环的影响。

现在到我们的假设场景,即能够开始复制最初仅复制到一个 DC 的密钥空间,现在保存到其他当前正在运行的 DC。

创建键空间时:

CREATE KEYSPACE Foo WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'US' : 2, 'EU' : 0};

然后,当业务需求发生变化时:

ALTER KEYSPACE Foo WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'US' : 2, 'EU' : 2};

在所有 DC 为 0 的应用程序中定义所有新密钥空间是否被认为更安全,以便可以在某个时候修改该值。并且更改该复制因子是否足以触发密钥空间到其他数据中心的流式传输 - 还是我们还需要运行nodetool rebuild

4

1 回答 1

2

公认的做法是简单地不为您不希望将特定密钥空间复制到的 DC 定义复制因子。我认为如果你按照自己的方式去做,不会发生任何不好的事情,但我觉得定义它会是更安全的方式。

更改该复制因子是否足以触发将密钥空间流式传输到其他数据中心 - 还是我们还需要运行 nodetool 重建?

更改键空间上的复制因子将告诉所有未来对该键空间的写入也转到新的数据中心。但是,要将现有数据复制到新数据中心,您必须运行nodetool repairnodetool rebuild.

于 2017-02-06T18:22:09.463 回答