2016-03-28 866 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 并向下滚动到“截断”方法。

请注意,此功能可以选择时间规格。这允许您删除记录,然后开始插入新记录。随着时间戳的使用,请确保您的服务器时钟很好地同步。

另请注意,在企业版中,这些删除操作很耐用,可以在重新启动后继续运行。

相关问题