在 Cassandra 修理
Cassandra 反熵修理:
Cassandra 的抗熵修復有兩個不同的階段。要進行成功的高效維修,瞭解這兩者非常重要。
-
Merkle Tree 計算 :計算節點及其副本之間的差異。
-
資料流 :根據 Merkle Tree 計算的結果,資料被安排從一個節點流式傳輸到另一個節點。這是嘗試在副本之間同步資料。
停止修復 :
你可以通過從 nodetool 發出 STOP VALIDATION 命令來停止修復:
$ nodetool stop validation
我怎麼知道維修何時完成?
你可以通過檢查 nodetool compactionstats
來檢查修復的第一階段(Merkle Tree 計算)。
你可以使用 nodetool netstats
檢查修復流。修復流也將在你的日誌中可見。你可以在系統日誌中為他們提供如下所示:
$ 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 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
...