即使从cassandra db和compaction

时间:2015-10-13 13:32:57

标签: cassandra

我在其中创建了一个键空间和一个表(columnfamily)。 让我们说"ks.cf"

在columnfamily cf中输入几十万行后,我看到使用df -h的磁盘使用情况。

然后,我使用DROP KEYSPACE ks中的cqlsh命令删除了键空间。

删除后,磁盘使用量remains the same。我也做了nodetool compact,但没有运气。

任何人都可以帮我配置这些东西,以便在删除数据/行后释放磁盘使用情况吗?

4 个答案:

答案 0 :(得分:10)

最近遇到这个问题。删除表后,会生成快照。如果不是这样的话,此快照将允许您将其回滚。如果你确实想要那个硬盘空间,你需要运行:

nodetool -h localhost -p 7199 clearsnapshot

在适当的节点上。此外,您可以使用cassandra.yml中的auto_snapshot: false关闭快照。

编辑:拼写/语法

答案 1 :(得分:5)

如果您只是想删除行,则需要让删除步骤经历通常的删除周期(delete_row-> tombstone_creation-> compaction_actually_deletes_the_row)。

现在,如果你想完全摆脱你的密钥空间,请检查你的cassandra数据文件夹(它应该在你的yaml文件中指定)。就我而言,它是" / mnt / cassandra / data /"。在这个文件夹中,每个键空间都有一个子文件夹(即ks)。您可以完全删除与键空间相关的文件夹。

如果你想保留文件夹,最好知道cassandra会在删除之前创建密钥空间的快照。基本上是所有数据的备份。你可以进入'''文件夹,找到snapshots子目录。进入snapshots子目录并删除与密钥空间删除相关的快照。

答案 2 :(得分:0)

nodetool cleanup从磁盘上删除不再需要的 all 数据,即该节点不负责的数据。 (clearsnapshot将清除所有快照,而这可能不是您想要的。)

答案 3 :(得分:0)

当您删除表或键空间时,Cassandra不会自动清除快照。如果您在cassandra.yaml中启用了auto_snapshot,则每次删除表或键空间时,Cassandra都会捕获该表的快照。如果未正确完成操作,此快照将帮助您回滚此表数据。如果确实从磁盘上清除了这些表数据,则需要在clearsnapshot命令下面运行以释放空间。

nodetool -u XXXX -pw XXXXX clearsnapshot -t快照名称

您可以随时在cassandra.yaml中禁用此auto_snapshot功能。

相关问题