【问题标题】:Cassandra - avoid nodetool cleanupCassandra - 避免 nodetool 清理
【发布时间】:2014-08-24 22:38:54
【问题描述】:

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

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

【问题讨论】:

  • nodetool 清理刚刚导致我的设置丢失了 25+ 百万行。根据文档,我一直等到新节点启动并运行(UN),但文档没有提到需要同步模式。原来nodetool describecluster 显示了架构不同步的问题,但节点正常运行。所以在不知道这一点的情况下,我跑了nodetool cleanup。 30 分钟后,它完成了 20 多天的工作。

标签: cassandra cassandra-3.0 nodetool


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2019-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-20
    • 2017-05-19
    • 2015-06-03
    • 2017-06-11
    • 2019-01-31
    相关资源
    最近更新 更多