【问题标题】:Datastax Cassandra Remove and cleanup one column familyDatastax Cassandra 删除和清理一个列族
【发布时间】:2015-02-21 23:52:00
【问题描述】:

经过一些 IT 清理后,我们注意到我们可能应该对一个列族进行全面清理/恢复。我们认为 Cassandra 有没有清理的重复数据。是否可以清除并让 Cassandra 从头或快照重建单个列族?

在升级期间,一些节点决定重新加入集群,而不仅仅是重新启动。在此过程中,nodetool netstats 显示将新数据文件传输到原始节点的节点。集群稳定,但磁盘使用量大幅增长。我正在考虑我们将迁移到一个新的环,但同时我想看看我是否可以减少一些磁盘使用量。戒指很稳定,维修看起来不错。

如果我们能够清理一个 cf,它将大大减少磁盘空间的使用。

nodetool cleanup 不会减小 sstable 的大小。

如果我们有一个新节点加入集群,它将使用大约 50% 的磁盘空间作为其他节点。

我们可以跳nodetool decommision && nodetool join 的舞蹈,但这不会很有趣:)

我们已经验证了环中的数据是一致的,并且修复表明整个环的数据是一致的。

【问题讨论】:

  • 简短回答:“是”。您看到哪些症状导致您做出“重复数据”诊断?
  • 查看编辑 - 更新您的问题
  • 您也可以运行nodetool cleanup 命令来清理所有不再属于特定节点的数据。当您向集群添加更多容量时,通常会观察到这种行为。
  • @MUFC 添加了更多信息。 nodetool cleanup 没有打扫房间。
  • 我们成功地使用了nodetool scrub,然后是nodetool clearsnapshot。这确实从头开始重建 sstable。它还会在发生故障时留下快照(这就是为什么之后会出现clearsnapshot),所以它非常安全。在我们的(相当具体的)案例中工作得很好!

标签: cassandra datastax


【解决方案1】:

添加新节点并成功运行修复意味着已分配给该节点的分区范围的数据已流式传输到新节点。

如果发生这种情况后,您运行 nodetool cleanup,则其他节点中不再需要的任何数据都会被清除。

如果您仍然看到某些节点的数据比其他节点多,这可能是因为您的某些分区中有一些更宽的行,或者是因为您的节点不平衡。不应该有任何数据重复的情况(如果你能证明这一点,那么它是值得 jira 的)。

如果您希望在节点间更均匀地分布数据(或设计数据模型以避免上述宽行),您可以在 OpsCenter 中运行重新平衡或手动重新分配令牌。

【讨论】:

    【解决方案2】:

    使用 nodetool compact 清理所有的墓碑,并将所有更新的记录压缩成一条记录。

    {nodetool compact}

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-20
      • 2014-07-05
      • 1970-01-01
      • 1970-01-01
      • 2012-05-18
      • 1970-01-01
      • 2012-09-17
      相关资源
      最近更新 更多