2017-01-03 63 views
1

Apache Cassandra節點正在複製因子爲3的3節點羣集中運行。所有配置都是正確的。卡桑德拉版本是2.1.8。如何通過從種子節點流式傳輸來恢復Cassandra節點?

讓我們假設數據在無法修復的情況下被邏輯損壞,這意味着通常的工具無法恢復數據(擦洗/修復)。

節點處於正常狀態。

考慮節點恢復的情況下通過有不同於cassandra.yaml註冊的種子節點流(而不是用另一個替換節點):

  1. 如果我刪除頂級數據會發生什麼該節點上的目錄,包括commitlog,data,hints和saved_caches目錄並啓動服務?該節點是否會從該點恢復正常,我可以運行節點工具修復以獲取最早的數據到節點中?

  2. 如果我啓動服務並運行nodetool rebuild它是適當和足以解決問題嗎?

  3. 如果以上都不是最佳實踐,是否會解決停用節點並使其再次加入羣集?

回答

2

你有更好的運氣退役節點,擦拭(數據,commitlog,& saved_caches迪爾斯),將其指定IP作爲cassandra-env.sh替換地址,並重新加入到集羣。

nodetool rebuild在您有多個數據中心並且您希望將流指向來自特定DC時非常有用。

nodetool repair將在技術上工作(回答#1的「是」),但是您將花費大量時間等待Merkle樹計算。修理每週都很好,對於修復較小的一致性差異非常有用。但是在某個點之後,比較發現差異(Merkle樹)和修復它們比單純地對節點進行分解/重新加入要慢。

相關問題