【问题标题】:How to reclaim storage from a column family in Cassandra如何从 Cassandra 中的列族中回收存储
【发布时间】:2014-10-06 17:49:20
【问题描述】:

我在 EC2 中使用 Datastax 2.1 社区版本。我在键空间中放置了一个大表(列族)并运行“nodetool compact”,但从 OpsCenter UI 中,我看不到存储容量有任何增加。

我运行了“nodetool compactionstats”来查看压缩是否正在进行,但什么也没有: $ nodetool 压缩统计 待处理任务:0 主动压实剩余时间:n/a

我还需要遵循其他流程吗?

【问题讨论】:

  • 磁盘上是否还存在 sstable 文件?
  • 我在数据目录 (keyspace/cf/snapshots/*) 下看到大文件。那些是 sstable 文件吗?
  • 不,这些是快照(某种 sstable 备份)。看起来好像您的集群配置为在删除 cf.因此 cf 被删除,但创建了相同大小的快照。如果您不需要快照,可以将其删除(请参阅datastax.com/documentation/cassandra/2.0/cassandra/tools/…
  • 就是这样。您会回答您之前的评论,以便我可以将其标记为答案吗?谢谢!

标签: cassandra


【解决方案1】:

Cassandra 在其默认配置中保留了每个被删除的列族的快照。这是设计使然,因此如果您不小心删除了 cf,您不会丢失 cf 的数据。

您可以在cassandra.yaml 中禁用快照创建。来自文档(参见:http://www.datastax.com/documentation/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html):

自动快照 (默认值:true)启用或禁用快照是否 在键空间截断或删除表之前获取数据。至 防止数据丢失,强烈建议使用默认设置。如果 如果设置为 false,则会在截断或丢弃时丢失数据。

如果您不禁用自动快照,您可以通过nodetool clearsnapshot 删除生成的快照。见:http://www.datastax.com/documentation/cassandra/2.0/cassandra/tools/toolsClearSnapShot.html

【讨论】:

    猜你喜欢
    • 2014-09-19
    • 2011-01-26
    • 2013-01-24
    • 2012-11-25
    • 2013-09-18
    • 2010-12-29
    • 1970-01-01
    • 2014-11-23
    • 1970-01-01
    相关资源
    最近更新 更多