在 Cassandra 3.0 多节点集群中回收磁盘 space 的最佳实践

Best Practice on reclaiming disk space in Cassandra 3.0 multi-node cluster

在我的 5 节点集群上,我发出了各种 drop table <keyspace_name>.<table_name> 命令。在该操作之后,他们在各个节点上的数据仍然存在于 /var/lib/cassandra/data//

我想知道是否有关于释放的最佳实践space。 或者,各个节点上的 rm -rf /var/lib/cassandra/data/<keyspace_name>/* 命令是否足够?

would the rm -rf /var/lib/cassandra/data/<keyspace_name>/* command on respective nodes suffice?

是的,这样就可以了。

首先,运行 此命令显示文件目录的散列包含 keyspacse_1.table_1 在 /var/lib/cassandra/data 中的数据:

SELECT * from system_schema.tables WHERE keyspace_name='keyspace_1' AND table_name='table_1';

查看此 table 的响应查询 ID。

然后检查 /data 中没有此 id 的文件并删除它们。

例如:cql 中的 id feteched 是:d9b8ab90-1240-11e8-8680-f9685b9421a5 或其他 id。

但是 /data include dir 类似于下面这个 id 不是 cql 的响应! :

table_1-c9b8ab90-1240-11e8-8680-f9685b9321e5/

在此阶段,您可以删除此文件以释放空间 space

当您删除 table 时,cassandra 会自动创建一个快照(以防万一)。如果您确定不再需要这些数据,则应该 运行

nodetool clearsnapshot

在受影响的节点上。请注意,这种形式的命令将删除所有快照。在 cassandra 3 中指定特定快照或键空间的完整命令是:

nodetool <options> clearsnapshot -t <snapshot> -- <keyspace> ...