【发布时间】: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),所以它非常安全。在我们的(相当具体的)案例中工作得很好!