cassandra在Cassandra修理


参数

选项/国旗描述
选项 选项说明
-H 主机名。默认为“localhost”。如果未指定主机,则在执行命令的主机上运行主机修复。
-p JMX端口。默认值为7199。
-u 用户名。仅在启用JMX安全性时才需要。
-pw 密码。仅在启用JMX安全性时才需要。
国旗描述
-本地仅比较和流式传输“本地”数据中心节点的数据。
-PR “分区范围”修复。仅修复副本的主令牌范围。比修复所有副本范围更快,因为它可以防止多次修复相同的数据。请注意,如果使用此选项修复一个节点,则还必须将其用于群集的其余部分。
-par 并行运行维修。更快地完成修复,但显着限制了集群处理请求的能力。
-hosts 允许您指定以逗号分隔的节点列表以从中流式传输数据。如果您拥有已知“良好”的节点,则非常有用。虽然它被记录为Cassandra 2.1+的有效选项,但它也适用于Cassandra 2.0。

备注

Cassandra反熵修理:

Cassandra的抗熵修复有两个不同的阶段。要进行成功的高效维修,了解这两者非常重要。

  • Merkle Tree计算 :计算节点及其副本之间的差异。

  • 数据流 :根据Merkle Tree计算的结果,数据被安排从一个节点流式传输到另一个节点。这是尝试在副本之间同步数据。

停止修复

您可以通过从nodetool发出STOP VALIDATION命令来停止修复:

$ nodetool stop validation

我怎么知道维修何时完成?

您可以通过检查nodetool compactionstats来检查第一阶段的修复(Merkle Tree计算)。

您可以使用nodetool netstats检查修复流。修复流也将在您的日志中可见。您可以在系统日志中grep它们,如下所示:

$ grep Entropy system.log

INFO [AntiEntropyStage:1] 2016-07-25 07:32:47,077 RepairSession.java (line 164) [repair #70c35af0-526e-11e6-8646-8102d8573519] Received merkle tree for test_users from /192.168.14.3
INFO [AntiEntropyStage:1] 2016-07-25 07:32:47,081 RepairSession.java (line 164) [repair #70c35af0-526e-11e6-8646-8102d8573519] Received merkle tree for test_users from /192.168.16.5
INFO [AntiEntropyStage:1] 2016-07-25 07:32:47,091 RepairSession.java (line 221) [repair #70c35af0-526e-11e6-8646-8102d8573519] test_users is fully synced
INFO [AntiEntropySessions:4] 2016-07-25 07:32:47,091 RepairSession.java (line 282) [repair #70c35af0-526e-11e6-8646-8102d8573519] session completed successfully

也可以使用此(Bash)命令监视活动修复流:

$ while true; do date; diff <(nodetool -h 192.168.0.1 netstats) <(sleep 5 && nodetool -h 192.168.0.1 netstats); done

参考: 我怎么知道nodetool修复是否完成

如何检查卡住或孤立的修复流?

在每个节点上,您可以使用nodetool tpstats监视此nodetool tpstats ,并检查“AntiEntropy”行上的“阻塞”内容。

$ nodetool tpstats
Pool Name                    Active   Pending      Completed   Blocked  All time blocked
...
AntiEntropyStage                  0         0         854866         0                 0
...
AntiEntropySessions               0         0           2576         0                 0
...

在Cassandra修理 相关例子