最近,我在使用 3 节点集群的客户设置中遇到了一个问题,其中一个节点出现故障并仅在 12 天后才上线。在我们的场景中,大多数表的默认 gc_grace_seconds 已设置为 1 天,并且有很多表。
当这个宕机节点出现时,来自该节点的陈旧数据被复制到其他节点,导致所有三个节点中的僵尸数据。
我能想到的一个解决方案是在节点加入集群之前对其进行清理,然后运行修复以防止出现僵尸数据。在我不需要清理节点的情况下,是否有任何其他可能的解决方案来避免这个问题。
如果节点停机时间超过最短时间,则永远不应使节点重新联机gc_grace_seconds
。
在 GC 宽限设置为非常低的值的环境中,这是一个挑战。在这些情况下,该过程是完全重建节点,就好像它从未成为集群的一部分一样:
data/
的所有内容。commitlog/
saved_caches/
replace_address
标志将节点替换为自身。干杯!