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

时间:2018-02-27 16:32:31

标签: cassandra cassandra-3.0

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

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

3 个答案:

答案 0 :(得分:3)

  

各个节点上的rm -rf /var/lib/cassandra/data/<keyspace_name>/*命令是否足够?

是的,那就可以了。

更简单的方法是在每个节点上运行清理。这将删除该节点不负责的任何数据:

nodetool cleanup

答案 1 :(得分:1)

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

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

查看此表的响应查询的ID。

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

for examlpe:cql中的id是:d9b8ab90-1240-11e8-8680-f9685b9421a5或其他ID。

但/ data包含dir类似下面这个id不响应cql! :

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

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

答案 2 :(得分:1)

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

nodetool clearsnapshot
受影响的节点上的

。请注意,此命令形式将删除所有快照。在cassandra 3中指定特定快照或键空间的完整命令是:

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