6

如果我们在 C* 环中添加了新节点,我们是否需要运行“nodetool cleanup”来清除现在已经分配到其他地方的数据?还是在正常压实期间无论如何都会发生这种情况?在正常压缩期间,C* 是否会删除不再属于该节点的数据,或者我们是否需要为此运行“nodetoool cleanup”?询问是因为“清理”需要永远并且在完成之前使节点崩溃。

如果我们需要运行“nodetool cleanup”,有没有办法找出哪些节点现在拥有不应再拥有的数据?(即现在属于新节点上的数据,但仍然存在于旧节点上,因为没有人将其删除。这是“nodetool cleanup”将删除的数据。)我们有 RF=3 和两个数据中心,每个其中有完整的数据副本。我假设我们需要在添加节点的数据中心中的所有节点上运行清理,因为新节点上的每一行曾经位于另一个节点(主节点)上,加上另外两个节点上的两个副本(副本)。

4

1 回答 1

5

如果您使用的是 Apache Cassandra 1.2 或更高版本,清理会检查文件上的元数据,以便它只在需要时执行某些操作。所以你可以安全地在每个节点上运行它,只有那些有额外数据的节点才会做一些事情。在正常的compaction过程中数据不会被删除,你必须调用cleanup来删除它。

于 2014-07-04T02:34:21.473 回答