Datastax Cassandra删除并清理一个列族

时间:2014-12-23 19:54:37

标签: cassandra datastax

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

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

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

nodetool cleanup并没有减少sstables的大小。

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

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

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

2 个答案:

答案 0 :(得分:0)

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

如果在发生这种情况之后,运行nodetool cleanup,则会清除不再需要的其他节点的所有数据。

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

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

答案 1 :(得分:0)

使用nodetool compact清理所有墓碑并将所有更新的记录压缩为单个记录。

{nodetool compact}