避免cassandra中的僵尸数据



最近,我在一个3节点集群的客户设置中遇到了一个问题,其中一个节点宕机了,12天后才重新上线。在我们的场景中,大多数表的默认gc_grace_seconds被设置为1天,并且有很多表。

当这个down节点启动时,来自该节点的陈旧数据被复制到其他节点,导致所有三个节点中的僵尸数据。

我能想到的一个解决方案是在使节点加入集群之前清理节点,然后运行修复,这可以防止僵尸数据的发生。有没有其他可能的解决方案来避免这个问题,我不需要清理节点。

如果一个节点宕机的时间超过了最短的gc_grace_seconds,就不应该让它重新上线。

在GC宽限期设置为非常低的值的环境中,这是一个挑战。在这些情况下,过程是完全重新构建节点,就好像它从来不是集群的一部分:

  1. 完全擦除data/,commitlog/saved_caches/的所有内容。
  2. 如果该节点被列为种子节点,则从其种子列表中删除该节点的IP。
  3. 使用replace_address标志将节点替换为自身

干杯!

相关内容

  • 没有找到相关文章

最新更新