1

我计划建立一个多数据中心 Cassandra 2,每个数据中心有 2-4 个节点和几十个数据中心。我们在每个数据中心的一定数量的节点上复制了键空间。我们有一个基于 vnode 的部署。所以令牌应该自动分配给节点。

http://www.datastax.com/documentation/cassandra/2.0/cassandra/operations/ops_add_node_to_cluster_t.html上的文档建议添加新节点需要在集群的所有其他节点上运行清理。但是,它没有阐明多数据中心设置中的过程。

我的理解是 nodetool cleanup 删除不再属于该节点的数据。当一个新的数据中心正在建立时,我们正在创建全新的副本和 AFAICT,它不会导致这个新数据中心之外的数据移动/重新平衡,因此对其他数据中心的节点没有清理要求。是否有人可以确认我的理解是否正确,并且不需要在其他数据中心的节点上进行清理?

4

1 回答 1

2

您的理解是正确的,但您的问题的答案取决于您在创建键空间时设置的复制策略。如果您在所有键空间上使用 NetworkTopologyStrategy,则多个数据中心将按照您的理解和解释运行,并且不需要在添加新数据中心后进行清理。但是,如果您在任何键空间上使用 SimpleStrategy,则所有数据中心都将作为该键空间的单个集群工作,因此在添加新节点后需要进行清理。

您可以在 cqlsh 上使用此命令检查当前的复制策略:

describe KEYSPACE keyspacename

希望能帮助到你!

于 2014-08-26T15:12:15.443 回答