我想避免使用Aerospike客户端(例如,对于Python),并使用本机asinfo命令“ truncate”从集中删除记录,因为它允许快速执行此操作。但是在我重新启动Aerospike之后,所有删除的记录都恢复了。我看到了这句话:删除集合中的所有记录,但是没有回答我的问题。AS文档中的此页面也没有。它说,一个逻辑删除应在持久删除后写入,我是否必须手动创建它还是有其他方法?
UPD:感谢@kporter在下面提供了可接受的答案,因此我能够查看Aerospike社区版和企业版之间的区别,并找到了有关该问题的更多信息,有些人可能也会发现它也有所帮助:
如果我正确理解所有内容,最好在CE中完全删除记录的最佳方法是确保它们具有正确的TTL并可以自然过期。并且,如果由于某种原因(如本例)您有很多没有TTL的旧记录,则可以通过asinfo发出truncate命令,并且在重新覆盖SSD上的数据之前不要重新启动AS服务器。或者只是在每次重新启动时使用旧记录截断集。
另外我想知道是否有可能彻底擦除AS存储,然后从已经被截断的数据备份中恢复它,以作为紧急措施?
UPD1:因此,我能够使用Aerospike存储擦除SSD,并仅从备份中还原所需的记录。这是我的做法:
有用的链接:如何删除和清理aerospike服务器安装,关于SSD设置的AS文档
我不确定这对于大型生产设置是否是一个好的解决方案,但是在我的情况下,它仅按一个AS节点就可以正常工作,并且有机会停止它一段时间。通过这种方式,我可以将AS中的数据大小从160Gb减少到11Gb,因为我的服务器现在仅在半小时内即可完全重启,而之前的时间约为8个小时。
您可以在此处找到有关截断集合的更多信息:https : //www.aerospike.com/docs/operations/manage/sets/
如此处所述,截断在Aerospike社区中并不持久。
在企业版中,截断是持久的,并通过冷重启来保留记录删除。在Community Edition中,类似于记录删除,以前截断的集中的记录不是持久的,删除可以通过冷启动返回。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句