1

最近,我在使用 3 节点集群的客户设置中遇到了一个问题,其中一个节点出现故障并仅在 12 天后才上线。在我们的场景中,大多数表的默认 gc_grace_seconds 已设置为 1 天,并且有很多表。

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

我能想到的一个解决方案是在节点加入集群之前对其进行清理,然后运行修复以防止出现僵尸数据。在我不需要清理节点的情况下,是否有任何其他可能的解决方案来避免这个问题。

4

1 回答 1

2

如果节点停机时间超过最短时间,则永远不应使节点重新联机gc_grace_seconds

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

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

干杯!

于 2021-09-08T07:32:25.740 回答