【问题标题】:Correct usage of nodetool repair commandnodetool修复命令的正确使用
【发布时间】:2018-05-28 02:36:07
【问题描述】:

运行 nodetool repair 命令的正确方法是什么? 在单数据中心的 3 节点 Cassandra 集群中,我们应该运行 nodetool repair 还是 nodetool repair -pr ?

根据 Cassandra apache 文档http://cassandra.apache.org/doc/latest/operating/repair.html

“默认情况下,修复将在您正在运行修复的节点复制的所有令牌范围上运行,如果您在每个节点上运行它会导致重复工作。-pr 标志将仅修复“主要”范围在一个节点上,因此您可以通过在单个数据中心的每个节点上运行 nodetool repair -pr 来修复整个集群。”

运行“nodetool repair”需要超过 5 分钟。但是运行“nodetool repair -pr”需要更少的时间。所以,我想知道“nodetool repair -pr”是否是 3 节点 Cassandra 集群的正确选择单一数据中心。 请指教。

【问题讨论】:

  • 您必须在集群中的每个节点上运行nodetool repair -pr。而且你必须按顺序进行,因为你不能同时运行多个修复。所以经过的时间会长 3 倍。

标签: cassandra


【解决方案1】:

如果您定期运行修复,最好的方法是运行 -pr 选项,从而仅修复主令牌范围。这样一来,整环就修好了。

但如果您直到现在才运行修复,最好的方法可能是运行完整修复,然后使用 -pr 选项进行维护修复。

另外,请注意,根据您的 cassandra 版本,修复行为会有所不同。 2.2 及之后的默认修复是增量的。如果要触发完全修复,则必须显式使用 -full 选项。对于 2.2 之前的版本,请查看文档。

【讨论】:

    【解决方案2】:

    注意如果你使用-pr,不要同时使用-inc,因为这两个是not recommended一起使用。所以基本上就像其他人建议的那样,在 2.2 之前,您可以在每个节点上运行 nodetool repair -pr;而在 2.2 之后,你最好使用 nodetool repair -pr -full 来抑制增量修复。

    【讨论】:

      猜你喜欢
      • 2021-06-18
      • 2018-09-13
      • 2016-02-02
      • 1970-01-01
      • 2021-11-16
      • 1970-01-01
      • 2022-11-14
      • 2020-01-14
      • 1970-01-01
      相关资源
      最近更新 更多