【问题标题】:Disk Space not freed up even after deleting keyspace from cassandra db and compaction即使从 cassandra db 中删除 keyspace 并压缩后磁盘空间也没有释放
【发布时间】:2016-01-11 06:52:50
【问题描述】:

我在其中创建了一个键空间和一个表(列族)。 假设"ks.cf"

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

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

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

谁能帮我配置这些东西,以便在删除数据/行后释放磁盘使用量?

【问题讨论】:

    标签: cassandra


    【解决方案1】:

    最近遇到了这个问题。删除表后会生成快照。如果不打算这样做,此快照将允许您回滚。但是,如果您确实想要恢复该硬盘空间,则需要运行:

    nodetool -h localhost -p 7199 clearsnapshot

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

    编辑:拼写/语法

    【讨论】:

    • 我使用了相同的方法,但即使在清除快照后仍然有空目录。我的猜测是删除它们是安全的。有人吗?
    • @gubble 是的,由于强迫症,我最终手动删除了它们。如果您有类似命名的表,请让哈希值对齐。
    【解决方案2】:

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

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

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

    【讨论】:

    • 是的!它维护可以手动删除的快照。但是我仍然使用 df -h 看到相同的磁盘空间,但是当我再次将数据推送到 cassandra 时它并没有增长。也许操作系统或 Cassandra 做了某种我不知道的缓存或磁盘空间管理。
    • 请记住,对于所有 cassandra 写入,数据首先保存在内存中,直到 cassandra 决定是时候将其以 SStable 的形式刷新到磁盘。您可以通过“nodetool flush ”手动将其刷新到磁盘。
    • 哦,好的!那么必须有一些配置参数决定何时刷新以及要刷新多少数据。这些配置参数是什么?我会在 Cassandra 官方文档中找到它吗?
    • 是的 - memtable_total_space_in_mb ...这是官方文档中的链接:docs.datastax.com/en/cassandra/2.0/cassandra/configuration/…
    • 非常感谢 :) 我会看看我可以在我的应用程序中使用这些参数做什么。
    【解决方案3】:

    当您删除表或键空间时,Cassandra 不会自动清除快照。如果您在 cassandra.yaml 中启用了 auto_snapshot,那么每次删除表或键空间时,Cassandra 都会捕获该表的快照。如果没有错误地执行此操作,此快照将帮助您回滚此表数据。如果你确实从磁盘中清除了这些表数据,那么你需要运行下面的 clearsnapshot 命令来释放空间。

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

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

    【讨论】:

    • 我认为这是对 OP 问题的更好回答
    【解决方案4】:

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

    【讨论】:

    • nodetool cleanup 触发应用于所有或特定键空间/表的特殊类型的压缩。如果表被删除,那么 Cassandra 就不再关心它了,所以不会发生压缩...
    猜你喜欢
    • 2017-03-09
    • 1970-01-01
    • 1970-01-01
    • 2010-11-19
    • 2022-01-09
    • 2010-09-24
    • 2021-11-17
    • 2021-08-09
    • 1970-01-01
    相关资源
    最近更新 更多