我们最近在我们的一个Cassandra节点(其复制因子为3的5个Cassandra 2.2集群)中出现磁盘故障。在该节点上执行完整修复大约需要一周或更长时间。每个节点包含3/5的数据,并且在所有节点上执行nodetool修复修复了3/5的令牌范围。现在它已被修复,它很可能会更快地修复,因为它进行了增量修复。我想知道使用nodetool repair -pr在所有节点上执行定期修复是否是一个好主意(我们在2.2,我认为增量修复在2.2中是默认的)。
我认为这是一个好主意,因为如果定期执行它将需要更少的时间来修复,因为它只需要修复未修复的SStables。我们也可能有过这样的情况:节点可能已经关闭了超过提示的切换窗口,我们可能没有做任何事情。
答案 0 :(得分:5)
是的,它是运行预定增量修复的良好做法。足够频繁地运行修复,以便在达到gc_grace_seconds设置中指定的时间之前修复每个节点。
答案 1 :(得分:0)
此外,如果您经常进行增量修复,并且每月/每周一次不太频繁地进行全面修复,那将会很棒。增量维修将修复之前没有标记为已修复的SSTable,但是完全修复可以照顾更全面的情况,如SSTable腐烂。检查数据存储区中的引用:https://docs.datastax.com/en/cassandra/2.1/cassandra/operations/opsRepairNodesWhen.html