根据datastrax文档(最新版本)进行nodetool修复
所有nodetool修复命令选项都是可选的。如果未指定可选命令参数,则默认值为:
完全修复在所有键空间和所有表上运行。
修复在同时具有相同副本数据的所有节点上并行运行。
作业线程数为1。
没有追踪。没有验证。
但根据网上课程https://academy.datastax.com ,因为他们提到我们需要在每个节点上分别运行nodetool repair命令。
下面是视频链接:转到3:44
https://academy.datastax.com/units/21018-repair-dse-operations-apache-cassandra?resource=ds210-datastax-enterprise-6-operations-with-apache-cassandra
我搞不懂“nodetool repair”命令是修复集群中的所有节点,还是只修复执行命令的单个节点?
2条答案
按热度按时间cgh8pdjw1#
假设我们有一个三节点集群,复制因子2,复制策略是simplestrategy。node1将拥有node1的数据以及node2的副本。node2将拥有node2的数据以及node3的副本。node3将拥有node3的数据以及node1的副本。
现在,如果在node1上运行nodetool修复。因为默认值是完全修复。修复以下数据:
1) node1中node1的数据
2) node3中node1的副本
3) node1中node2的副本
4) node2中node2的数据
在这种情况下,node3的数据或副本不会被修复。所以nodetool修复应该在node3上运行,以修复整个集群。
在3:44的视频中,他谈到了--partitioner range,这意味着只有主分区被修复。因此,在上面的集群中,如果在node1上运行nodetool repair--partitioner range
1) node1中node1的数据
2) node3中node1的副本
在这种情况下,nodetool repair—应该在所有then节点上运行分区器范围。
but5z9lq2#
nodetool repair命令可以在特定节点上运行,或者在集群中的所有节点上运行(如果不考虑数据中心而指定节点)。
http://cassandra.apache.org/doc/latest/operating/repair.html
https://docs.datastax.com/en/archived/cassandra/2.2/cassandra/operations/opsrepairnodeswhen.html