Cassandra修复:为什么我必须在集群中的每个主机上运行-pr?

时间:2016-10-25 20:06:34

标签: cassandra-2.1

根据我阅读Cassandra反熵手动修复主题的所有资料来源,例如this one,如果我使用" nodetool"分区范围(或-pr)选项,我需要在整个集群中的所有主机上运行它:

  

注意:如果使用此选项,则必须在群集中的每个节点上运行nodetool repair -pr以修复所有数据。否则,某些数据范围将无法修复。

除非上段用于使用-pr来修复整个群集,否则对我来说没有意义。因为当nodetool在没有此选项的情况下运行时,它会修复所述节点上的所有范围:如果RF = 3,则范围包括主要节点,以及来自相邻节点的辅助节点和第三节点。而使用-pr选项时,它仅修复主副本。

所以,如果有一个环有节点A,B,C,D,E,F,如果我的目标是修复C,那么当我运行" nodetool&#时,它是不一样的34;仅在C上或当我运行" nodetool -pr"在A,B和C上?

1 个答案:

答案 0 :(得分:1)

我的理解是,如果在节点C上运行nodetool repair -pr,那么将要修复的范围只是C是主节点的范围。所以C不是二级/三级的。

所以评论说如果你想修复整个集群,那么你需要在每个节点上运行它。这是大多数人的意图,他们希望整个群集能够不断修复,他们不会想到个别节点。