2014-07-03 61 views
3

如果我們向C *環添加了新節點,是否需要運行「nodetool cleanup」以擺脫現在已分配到別處的數據?或者在正常的壓縮過程中會發生這種情況嗎? 在正常的壓縮過程中,C *是否刪除不再屬於這個節點的數據,或者我們是否需要運行「nodetoool cleanup」?詢問是因爲「清理」會耗盡並在完成之前崩潰節點。Cassandra - 避免nodetool清理

如果我們需要運行「nodetool cleanup」,有沒有辦法找出哪個節點現在有數據,他們不應該擁有? (即現在屬於新節點的數據,但仍舊存在於舊節點上,因爲沒有人刪除它,這是「nodetool cleanup」將刪除的數據)。我們有RF = 3和兩個數據中心,每個它有一個完整的數據副本。我假設我們需要在已添加節點的數據中心的所有節點上運行清理,因爲新節點上的每一行都用於另一個節點(主節點),另外兩個副本(副本)位於另外兩個節點上。

+0

nodetool清理只是在我的設置上造成了超過2500萬行的丟失。根據文檔,我一直等到新節點啓動並運行(UN),但文檔沒有提及需要同步的模式。原來'nodetool describecluster'顯示出一個問題,即模式不同步,但節點正常的UN。所以不知道這個我運行'nodetool cleanup'。 30分鐘後,它完成了摧毀20多天的工作。 –

回答

4

如果您使用的是Apache Cassandra 1.2或更新版本,則清理會檢查文件的元數據,以便只在需要時才執行某些操作。所以你可以安全地在每個節點上運行它,只有那些有額外數據的節點纔會執行某些操作。在正常的壓縮過程中數據不會被刪除,您必須調用清理來刪除它。

相關問題