我在其中创建了一个键空间和一个表(columnfamily)。
让我们说"ks.cf"
在columnfamily cf
中输入几十万行后,我看到使用df -h
的磁盘使用情况。
然后,我使用DROP KEYSPACE ks
中的cqlsh
命令删除了键空间。
删除后,磁盘使用量remains the same
。我也做了nodetool compact
,但没有运气。
任何人都可以帮我配置这些东西,以便在删除数据/行后释放磁盘使用情况吗?
答案 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功能。