2rs2ts Asked: 2014-11-12 12:46:11 +0800 CST2014-11-12 12:46:11 +0800 CST 2014-11-12 12:46:11 +0800 CST 你必须在每个节点上运行 nodetool repair 吗? 772 您是否必须nodetool repair在集群中的每个节点上运行,还是只需要在一个节点上运行它,然后 Cassandra 会处理其余的工作? maintenance cassandra 3 个回答 Voted Best Answer Aaron 2014-11-15T06:52:37+08:002014-11-15T06:52:37+08:00 在查看文档时,我很难找到参考,但简短的回答是“是”,您需要nodetool repair在集群中的每个节点上运行。我能找到的最接近的是关于修复节点的文档,它建议您一次不应在集群中的多个节点上运行修复。 您还可以使用标志运行修复-pr,它将修复操作限制在当前节点负责的第一个令牌范围内。这减少了在其余节点上运行时的重复工作。 Gene 2017-05-05T19:39:31+08:002017-05-05T19:39:31+08:00 它的行为方式取决于您的配置、使用的 Cassandra 版本以及运行修复命令的方式。 如果您只nodetool repair在集群中的单个节点上运行,它将修复该节点负责的所有数据(令牌范围)以及负责该数据的其他节点。 例如,如果您要nodetool repair在给定集群中的单个节点上运行命令: 如果您正在运行复制因子为 3 的三节点集群,则所有节点都将拥有所有数据,因此将对所有节点执行修复。 如果您正在运行复制因子为 2 的六节点集群,则只能在六个节点中的两个节点上修复数据。需要在其余四个节点中的另外两个上启动修复。 也就是说,可以定义哪些主机和数据中心使用-hosts和-dc标志执行修复。此外,如果您使用-pr标志(只会选择节点负责的第一个令牌范围),您将必须在集群中的所有nodetool repair -pr节点上运行。 要记住的另一个标志是该-inc标志,它包含在 Cassandra 2.1 中。此选项将仅修复新数据(以前未修复的数据)。依赖它时要小心,特别是如果您经常删除数据。(更多关于这个) 还有一点需要记住的是,Cassandra 中的默认修复方式可能会有所不同。从 Cassandra 2.1 开始,在运行时nodetool repair它默认执行完整的顺序修复。您将需要查看您的版本的功能。 有关该主题的更多阅读: https://www.datastax.com/dev/blog/repair-in-cassandra nkzscorpion 2015-10-28T01:06:25+08:002015-10-28T01:06:25+08:00 不,您不必在每个单独的节点上运行。在一组节点上运行,这在文档nodetool repair中有明确说明。 您可以限制要对其运行修复的节点或部分数据。例如,您可以提供-pr分区器范围选项,即节点负责的范围,但这必须在整个集群上运行。但是如果你选择了-local,那么节点的本地数据中心中的节点将得到修复。
在查看文档时,我很难找到参考,但简短的回答是“是”,您需要
nodetool repair
在集群中的每个节点上运行。我能找到的最接近的是关于修复节点的文档,它建议您一次不应在集群中的多个节点上运行修复。您还可以使用标志运行修复
-pr
,它将修复操作限制在当前节点负责的第一个令牌范围内。这减少了在其余节点上运行时的重复工作。它的行为方式取决于您的配置、使用的 Cassandra 版本以及运行修复命令的方式。
如果您只
nodetool repair
在集群中的单个节点上运行,它将修复该节点负责的所有数据(令牌范围)以及负责该数据的其他节点。例如,如果您要
nodetool repair
在给定集群中的单个节点上运行命令:也就是说,可以定义哪些主机和数据中心使用
-hosts
和-dc
标志执行修复。此外,如果您使用-pr
标志(只会选择节点负责的第一个令牌范围),您将必须在集群中的所有nodetool repair -pr
节点上运行。要记住的另一个标志是该
-inc
标志,它包含在 Cassandra 2.1 中。此选项将仅修复新数据(以前未修复的数据)。依赖它时要小心,特别是如果您经常删除数据。(更多关于这个)还有一点需要记住的是,Cassandra 中的默认修复方式可能会有所不同。从 Cassandra 2.1 开始,在运行时
nodetool repair
它默认执行完整的顺序修复。您将需要查看您的版本的功能。有关该主题的更多阅读:
https://www.datastax.com/dev/blog/repair-in-cassandra
不,您不必在每个单独的节点上运行。在一组节点上运行,这在文档
nodetool repair
中有明确说明。您可以限制要对其运行修复的节点或部分数据。例如,您可以提供
-pr
分区器范围选项,即节点负责的范围,但这必须在整个集群上运行。但是如果你选择了-local
,那么节点的本地数据中心中的节点将得到修复。