Cassandra

在 Cassandra 中分配空間

  • February 18, 2019

我們執行一個帶有 2 個 DC、每個 3 個節點(2 個 RF)的 Cassandra 集群。集群的狀態非常糟糕(從未修復)並且磁碟已滿,因此我們添加了額外的節點,這些節點在引導過程成功加入集群之後。根據 Cassandra 文件,應該在添加新節點後執行清理,但在我們的例子中:

由於我們從不執行修復(現在執行為時已晚,因為舊節點中的磁碟使用率 > 90 %)數據執行是否安全:

nodetool cleanup

在每個節點中以釋放空間?

乾杯,

jbrl

簡而言之,nodetool cleanup將從不再負責的節點中刪除數據。將新節點添加到集群時可能會發生這種情況,因為它們假定令牌範圍曾經由其他節點持有。數據流式傳輸到新節點後,不會自動從預先存在的節點中刪除。這是有意的,因為如果新節點無法引導,則不會失去任何數據。

執行 acleanup確實會刪除潛在的孤立副本。通常,在執行之前確保已成功完成修復是一個好主意nodetool cleanup

在這種情況下,由於repair從未執行,我無法想像應用程序使用者此時真的關心數據一致性。但是要嘗試的一件事可能是cleanup在一個節點上執行以獲取一些空間,然後repair在同一個節點上執行。在每個集群上執行repair/ cleanup(按此順序)。這應該可以最大限度地減少數據失去的風險,同時允許恢復一些表面上的一致性。

如果您的磁碟空間較少,則可以按如下方式執行清理鍵空間和表。

對鍵空間和表使用“nodetool cleanup keyspace_name table_name”

有關更多詳細資訊,請參閱以下連結 https://docs.datastax.com/en/cassandra/3.0/cassandra/tools/toolsCleanup.html

引用自:https://dba.stackexchange.com/questions/224773