根据用于修复nodetool的datastrax文档(最新版本)
所有nodetool修复命令选项都是可选的。如果未指定可选的命令参数,则默认值为:
但是根据https://academy.datastax.com的在线课程,他们提到我们需要在每个节点上分别运行nodetool repair命令。
下面是视频的链接:转到3:44
我感到困惑的是,“ nodetool repair”命令会修复群集中的所有节点,或者仅修复执行命令的单个节点?
答案 0 :(得分:0)
让我们说我们有一个三节点群集,复制因子2,复制策略为SimpleStrategy。 Node1将具有Node1的数据以及Node2的副本。 Node2将具有Node2的数据以及Node3的副本。 Node3将具有Node3的数据以及Node1的副本。
现在,如果您在Node1上运行nodetool repair。由于默认为完全修复。修复了以下数据:
1)Node1中的Node1数据
2)Node1在Node3中的副本
3)Node1中Node2的副本
4)Node2中的Node2数据
在这种情况下,Node3的数据或副本未修复。因此,应该在Node3上运行nodetool修复,以修复整个群集。
在3:44的视频中,他谈到了--partitioner-range,这意味着仅主分区得以修复。因此,在上述群集中,如果您在Node1上运行nodetool repair --partitioner-range,那么
1)Node1中的Node1数据
2)Node1在Node3中的副本
在这种情况下,应在随后的所有节点上运行nodetool repair --partitioner-range。
答案 1 :(得分:-1)
如果未指定节点(与数据中心无关),则可以在特定节点或群集中的所有节点上运行nodetool repair命令。
http://cassandra.apache.org/doc/latest/operating/repair.html
https://docs.datastax.com/en/archived/cassandra/2.2/cassandra/operations/opsRepairNodesWhen.html