如果节点修复不在 GCGraceSeconds 内 运行 怎么办?

What to do if node repair wasn't ran within GCGraceSeconds?

我认为我的任何节点都不会停机很长时间,所以我相信我的所有删除操作都应该复制到所有节点中。但是,我一直看到建议作为对 GCGraceSeconds 中 运行 节点修复的正常维护。我不相信节点修复曾经在我的集群上 运行 (我几个月前继承了它)。我有什么可担心的吗?如果我 运行 节点修复,即使我在很长一段时间内没有任何节点关闭,我是否会有僵尸数据?

我的主要问题是 - 我可以做些什么来摆脱这种状态,这样我就可以开始例行的 运行ning nodetool 修复?

Cassandra 没有关系数据库那样的 'normal' 删除。当你删除一些东西时,Cassandra 只是添加一些记录,将数据标记为已删除,命名为 'tombstone'。即使您的所有墓碑都已正确复制,它们仍然存在于您的文件中,并且会影响性​​能,甚至会使一些已删除的记录再次 'alive'。

一般来说,您需要定期在集群的每个节点上 运行 'nodetool repair'。

您可以在documentation中查看详细信息。