2012-03-27 35 views
5

我有一個複製因子爲2的3節點Cassandra集羣。 因爲其中一個節點已被替換爲新節點。 我已經使用「nodetool修復」來修復所有的密鑰空間。 但不知道如何驗證所有密鑰空間是否同步。驗證Cassandra節點同步的方法

之前,剛剛發現這篇文章會有所幫助,但有一點。 Cassandra Data Replication problem

是否有任何方法來驗證卡桑德拉複製因子> 1的密鑰空間?

非常感謝。

馬布裏

回答

5

首先,如果你再次運行nodetool修復和很少的數據被傳輸(假設所有的節點,因爲你跑了最後一次已高達),你知道數據幾乎完全同步。您可以查看日誌以查看在此過程中傳輸的數據量。

其次,通過查看nodetool cfstats的寫入計數,可以驗證所有節點的寫入次數是否相同。請注意,每次Cassandra重新啓動時,寫入計數值都將被重置,因此如果它們沒有在同一時間重新啓動,則必須查看它們每次都會隨着時間的推移而快速增加。最後,如果您只想查看一些最近更新的值,您可以嘗試讀取一致性級別爲ONE的那些值。如果您始終獲得最新版本的數據,則會知道副本可能同步。

作爲一般說明,複製是卡桑德拉這樣一個根深蒂固的部分,它不可能在沒有你注意的情況下自行失效。通常情況下,節點將在問題開始後立即標記。另外,我假設你正在寫一致性級別ONE或ANY;更高的任何東西,你肯定知道這兩個副本都已經收到了寫入。

1

一種檢查方法是使用nodetool getendpoints。通過幾個隨機密鑰並檢查哪個端點持有該密鑰。這應顯示副本是否放置在兩個節點中。