2016-03-28 86 views
2

我正在使用aerospike進行測試。我正在使用社區版本。羣集有2個節點。我正在使用存儲引擎作爲SSD的設備。我的配置文件 -aerospike:刪除集合中的所有記錄

namespace test { 
     replication-factor 2 
     memory-size 16G 
     default-ttl 0 

     storage-engine device { 
       device /dev/sdb1 
       data-in-memory false 
       write-block-size 128K 
     } 
} 

我已成立一個名爲數據。在添加1M記錄進行測試之後,現在我想刪除此集合中的所有內容(如果可能的話,也可以使用drop set)。我想在兩個節點 -

asinfo -v "set-config:context=namespace;id=test;set=data;set-delete=true;" 

它的工作,直到我重新啓動我的羣集(sudo /etc/init.d/aerospike restart兩個節點上)這個命令。重新啓動所有數據後回來。我通過這個鏈接http://www.aerospike.com/launchpad/deleting_sets_and_data.html但沒有找到任何方便。

回答

3

編輯複製從@薩沙的評論貼:

塞式3.10.0介紹[耐用刪除] [1]的機制,(雖然只有塞式企業)增加了持久性的缺失。它是通過所謂的Tombstone記錄實現的,這些記錄是作爲被刪除記錄的最後一個版本而寫入的。它保證冷啓動時沒有刪除的記錄進入內存(從磁盤讀取)。然後碎片整理過程最終運行,並從包括墓碑在內的所有記錄版本釋放內存和磁盤空間。 [1]:aerospike.com/docs/guide/durable_deletes.html

+1

Aerospike 3.10.0引入了[持久刪除] [1]爲刪除添加了持久性的機制(儘管如此,僅針對Aerospike Enterprise)。它是通過所謂的Tombstone resords來實現的,它被寫爲刪除記錄的最後一個版本。它保證冷啓動時沒有刪除的記錄進入內存(從磁盤讀取)。然後碎片整理過程最終運行,並從包括墓碑在內的所有記錄版本釋放內存和磁盤空間。 [1]:http://www.aerospike.com/docs/guide/durable_deletes.html – Sasha

1

在我們的生產經驗特別java deletion utility工作得很好,即使沒有最近引入durable deletes。您可以從源構建它,把某處集羣附近,這樣運行的:

java -jar delete-set-1.0.0-jar-with-dependencies.jar -h <aerospike_host> -p 3000 -s <set_to_delete> -n <namespace_name> 

然而,在我們的督促環境冷重啓是非常罕見的事件,基本上塞崩潰時。而且數據流量非常高,因此碎片整理在早期開始,我們沒有這個殭屍記錄問題。

BTW asinfo刪除方式不適用於我們。記錄在那裏呆了幾天,所以我們使用delete-set工具馬上工作。

+0

delete-set命令目前在NSUP週期上運行,並且至少需要2個週期。我們已經看到NSUP小時完成一個週期(儘管後續週期通常很快)。 – kporter

1

從2017年3月發佈的Aerospike 3.12開始,數據庫現在支持刪除集合或名稱空間中所有數據的功能。

請參閱下列文件: http://www.aerospike.com/docs/reference/info#truncate

它提供了命令行命令,看起來像: asinfo截斷:命名空間=;設置=; LUT =

也可以從客戶端截斷API,這裏是java文檔: http://www.aerospike.com/apidocs/java/com/aerospike/client/AerospikeClient.html 並向下滾動到「截斷」方法。

請注意,此功能可以選擇時間規格。這允許您刪除記錄,然後開始插入新記錄。隨着時間戳的使用,請確保您的服務器時鐘很好地同步。

另請注意,在企業版中,這些刪除操作很耐用,可以在重新啓動後繼續運行。