2014-07-03 45 views
3

如果我们向C *环添加了新节点,是否需要运行“nodetool cleanup”以摆脱现在已分配到别处的数据?或者在正常的压缩过程中会发生这种情况吗? 在正常的压缩过程中,C *是否删除不再属于这个节点的数据,或者我们是否需要运行“nodetoool cleanup”?询问是因为“清理”会耗尽并在完成之前崩溃节点。Cassandra - 避免nodetool清理

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

+0

nodetool清理只是在我的设置上造成了超过2500万行的丢失。根据文档,我一直等到新节点启动并运行(UN),但文档没有提及需要同步的模式。原来'nodetool describecluster'显示出一个问题,即模式不同步,但节点正常的UN。所以不知道这个我运行'nodetool cleanup'。 30分钟后,它完成了摧毁20多天的工作。 –

回答

4

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

相关问题