Cassandra 修复:为什么我必须 运行 -pr 在集群中的每台主机上?
Cassandra repair: why do I have to run -pr on every host in the cluster?
根据我阅读的关于 Cassandra 反熵手动修复主题的所有资料,例如 this one,如果我要使用 "nodetool" 分区程序范围(或 -pr)选项,我需要在整个集群中的所有主机上 运行 它:
Note: If you use this option, you must run nodetool repair -pr on every node in the cluster to repair all data. Otherwise, some ranges of data will not be repaired.
除非上面的段落是为了使用-pr 来修复整个 集群,否则对我来说没有意义。因为当 nodetool 运行s 没有这个选项时,它会修复所述节点上的所有范围:如果 RF=3,则范围包括主要范围,加上来自相邻节点的次要和第三范围。而使用 -pr 选项时,它只会修复主副本。
所以如果有一个环有节点A,B,C,D,E,F,如果我的目标是修复C,那我运行"nodetool" 仅在 C 上或当我 运行 "nodetool -pr" 在 A、B 和 C 上?
我的理解是,如果你在节点C上运行nodetool repair -pr,那么修复的范围只有C是主节点的范围。所以不是 C 是 secondary/tertiary 的那些。
所以评论说如果你想修复整个集群,那么你需要在每个节点上 运行 它。这是大多数人的意图,他们希望整个集群不断修复,他们不会考虑单个节点。
根据我阅读的关于 Cassandra 反熵手动修复主题的所有资料,例如 this one,如果我要使用 "nodetool" 分区程序范围(或 -pr)选项,我需要在整个集群中的所有主机上 运行 它:
Note: If you use this option, you must run nodetool repair -pr on every node in the cluster to repair all data. Otherwise, some ranges of data will not be repaired.
除非上面的段落是为了使用-pr 来修复整个 集群,否则对我来说没有意义。因为当 nodetool 运行s 没有这个选项时,它会修复所述节点上的所有范围:如果 RF=3,则范围包括主要范围,加上来自相邻节点的次要和第三范围。而使用 -pr 选项时,它只会修复主副本。
所以如果有一个环有节点A,B,C,D,E,F,如果我的目标是修复C,那我运行"nodetool" 仅在 C 上或当我 运行 "nodetool -pr" 在 A、B 和 C 上?
我的理解是,如果你在节点C上运行nodetool repair -pr,那么修复的范围只有C是主节点的范围。所以不是 C 是 secondary/tertiary 的那些。
所以评论说如果你想修复整个集群,那么你需要在每个节点上 运行 它。这是大多数人的意图,他们希望整个集群不断修复,他们不会考虑单个节点。