我计划建立一个多数据中心Cassandra 2,每个数据中心有2-4个节点,数个10个数据中心。我们在每个数据中心的特定数量的节点上复制了密钥空间。我们有一个基于vnode的部署。因此,令牌应自动分配给节点。
http://www.datastax.com/documentation/cassandra/2.0/cassandra/operations/ops_add_node_to_cluster_t.html处的文档表明,添加新节点需要在群集的所有其他节点上运行清理。但是,它没有说明多数据中心设置中的过程。
我的理解是nodetool cleanup删除不再属于该节点的数据。在设置新的数据中心时,我们正在创建全新的副本和AFAICT,它不会导致数据移动/重新平衡在此新数据中心之外,因此对其他数据中心的节点没有清理要求。有人能够确认我的理解是否正确,并且其他数据中心的节点不需要清理吗?
答案 0 :(得分:2)
您的理解是正确的,但您的问题的答案取决于您在创建密钥空间时设置的复制策略。如果您在所有键空间上使用NetworkTopologyStrategy,则多个数据中心的行为将按照您的理解和解释,并且不需要在添加新数据中心后进行清理。但是如果您在任何键空间上使用SimpleStrategy,则所有数据中心都将作为该键空间的单个集群工作,因此在添加新节点/节点后需要进行清理。
您可以在cqlsh上使用此命令检查当前复制策略:
describe KEYSPACE keyspacename
希望它有所帮助!