即使从cassandra db和compaction删除密钥空间后,磁盘空间也不会释放
我在其中创建了一个keyspace和一个表(columnfamily)。 假设"ks.cf"
即使从cassandra db和compaction删除密钥空间后,磁盘空间也不会释放
在ColumnFamily中cf
进入几十万行后,我看到使用df -h
磁盘使用情况。
然后,我用cqlsh
的命令DROP KEYSPACE ks
删除了keyspace。
也下降后,磁盘使用率remains the same
。我也做过nodetool compact
,但没有运气。
任何人都可以帮助我配置这些东西,以便删除数据/行后磁盘使用情况得到释放?
如果您只是想删除行,那么您需要让删除步骤通过通常的删除周期(delete_row-> tombstone_creation-> compaction_actually_deletes_the_row)。
现在,如果您完全想摆脱您的密钥空间,请检查您的cassandra数据文件夹(它应该在您的yaml文件中指定)。在我的情况下,它是“/ mnt/cassandra/data /”。在这个文件夹中,每个密钥空间都有一个子文件夹(即ks)。您可以完全删除与您的密钥空间相关的文件夹。
如果您想保留该文件夹,最好知道cassandra在删除它之前创建了您的密钥空间的快照。基本上是所有数据的备份。你可以进入'ks'文件夹,找到快照子目录。进入快照子目录并删除与您的keyspace drop相关的快照。
最近碰到这个问题。在删除表格后,会创建一个快照。如果这不是有意的,这个快照将允许您回滚它。如果你想不过是硬盘空间还给你需要运行:
nodetool -h localhost -p 7199 clearsnapshot
。此外,您可以使用cassandra.yml中的auto_snapshot: false
关闭快照。编辑:拼写/语法
是!它维护可以手动删除的快照。但仍然使用df -h看到相同的磁盘空间,但是当我再次将数据推入cassandra时,它不会增长。也许操作系统或Cassandra做了某种我不知道的缓存或磁盘空间管理。 –
请记住,对于所有cassandra写入,数据首先保存在内存中,直到cassandra决定是时候以SStable形式将其刷新到磁盘。您可以通过'nodetool flush'手动将其刷新到磁盘。 –
Aki
哦,好的!那么必须有一些配置参数决定何时刷新以及刷新多少数据。那些配置参数是什么?我会在Cassandra官方文档中找到它吗? –