我正在尝试从我的套装中删除垃圾箱 问题是当我删除它们时,它们仍然显示在
中aql> show bins
+-------+------------------+-------+-----------+
| quota | bin | count | namespace |
+-------+------------------+-------+-----------+
| 32768 | "family" | 14 | "test" |
| 32768 | "querybinstring" | 14 | "test" |
| 32768 | "querybinint" | 14 | "test" |
| 32768 | "binstringfoo" | 14 | "test" |
+-------+------------------+-------+-----------+
虽然数据已从集中删除。
aql> select * from test.testset
0 rows in set (0.000 secs)
当我的 binNames达到32k限制的唯一binNames约束时会出现问题。
我 必须重新启动 aerospike才能删除已删除的bin名称。
除了在删除垃圾箱后重启还有其他方法吗? 重新启动空中加速器后会发生什么? (删除已删除的[标记为已删除]垃圾箱)
注意:我已经通过使用
删除垃圾箱进行了测试还有一个问题 - 我是否可以通过 aql 从一组中删除所有垃圾箱?
答案 0 :(得分:3)
请查看此讨论论坛,了解删除Aerospike中垃圾箱元数据的方法列表。
https://discuss.aerospike.com/t/bin-names-deletion/731
您可以使用AQL删除bin,方法是将其设置为NULL
E.g:插入namespace.set(PK,bin)值(' 1',NULL) 将从包含主键' 1'
的记录中删除分档Aerospike将数据分为两部分:索引和值。索引始终存储在DRAM中,该值可以存储在SSD或DRAM中(有或没有磁盘用于持久性)。删除记录时,将从索引中删除对它的引用。实际数据不会从磁盘中删除。另一个过程会发现磁盘上的数据没有被使用并回收空间。
请注意,删除的对象可能会重新出现。为此,必须发生以下情况:
必须将节点配置为从磁盘加载数据。如果数据已被删除,但尚未从磁盘中删除。 (即索引条目已被删除)。在这种情况下,当节点启动时,它将从磁盘读取数据并重建索引。由于数据尚未从磁盘中删除,因此节点会认为它仍处于活动状态并为其构建新的索引条目。所以删除的对象将返回。如果您知道将关闭节点,则可以使用快速重启功能阻止已删除的数据返回。即使数据库进程已经关闭,这也会将索引保存在内存中。
较新版本中的另一个选项是使用'冷启动 - 空白'防止数据从磁盘加载的配置,但仅限于从群集中的其他节点迁移。
更多信息: http://www.aerospike.com/docs/reference/configuration/#cold-start-empty
答案 1 :(得分:1)
您创建的每个键空间都将成为Aerospike数据文件夹的一部分。您可以直接删除该文件。
这是我们发现一次删除所有数据的简单方法之一。
folder loc :: /opt/aerospike/usr/