【问题标题】:Does node tool repair command repair all the nodes in cluster or repair single node on which command is executed?节点工具修复命令是修复集群中的所有节点还是修复执行命令的单个节点?
【发布时间】:2019-08-17 18:30:01
【问题描述】:

根据 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”命令修复集群中的所有节点还是只修复执行命令的单个节点?

【问题讨论】:

    标签: cassandra nodetool


    【解决方案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

    【讨论】:

      【解决方案2】:

      假设我们有一个三节点集群,复制因子为 2,复制策略是 SimpleStrategy。 Node1 将拥有 Node1 的数据以及 Node2 的副本。 Node2 将拥有 Node2 的数据以及 Node3 的副本。 Node3 将拥有 Node3 的数据以及 Node1 的副本。

      现在,如果您在 Node1 上运行 nodetool repair。由于默认是完全修复。修复以下数据:

      1) Node1中Node1的数据

      2) Node1 在 Node3 中的副本

      3) Node2 在 Node1 中的副本

      4) Node2中Node2的数据

      在这种情况下,Node3 的数据或副本不会被修复。所以 nodetool repair 应该在 Node3 上运行,以便修复整个集群。

      在 3:44 的视频中,他谈到了 --partitioner-range,这意味着只修复了主分区。所以在上面的集群中,如果你在 Node1 上运行 nodetool repair --partitioner-range 那么

      1) Node1中Node1的数据

      2) Node1 在 Node3 中的副本

      在这种情况下 nodetool repair --partitioner-range 应该在所有节点上运行。

      【讨论】:

      • 假设如果我有 3 个节点集群,复制因子为 3,那么 IMO 我不必在每个节点上运行 nodetool repair --full,因为节点 1 将拥有自己的数据和节点 2 的副本和节点 3。
      • @AmanJain 没错。在您的情况下,在一个节点上运行完全修复会修复整个集群。
      猜你喜欢
      • 2015-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-13
      相关资源
      最近更新 更多