正如大家都同意的那样,Cassandra修复是必要的,但非常昂贵并且容易出现故障,如果群集中的任何节点在群集中的任何其他节点上运行时,群集中的任何节点都会停止运行,那么大部分时间都会卡住。我正在使用以下命令以滚动方式在主要范围上运行完整顺序修复:
node repair -pr -full -seq
但有疑问,是否足以在数据中心的每个节点上运行此修复(我有4个不同的数据中心),还是需要在整个集群的每个节点上运行?我找到了一些关于这个主题的文档,但语言没有正确回答这个问题。例如3.1 Primary range repair
答案 0 :(得分:3)
更新:我实际上错了,这里认为响两个DC而不是单个,实际令牌Ring更多:
| DC | Node | Token |
|-----|------|-------|
| DC1 |node1 | 1 |
| DC2 |node2 | 5 |
| DC1 |node3 | 10 |
| DC2 |node4 | 15 |
| DC1 |node5 | 20 |
| DC2 |node6 | 25 |
此处node4的主要范围是11-15,而不是6-15(这是主要范围+本地范围)。您必须在每个节点上执行-pr。删除原文以免引起混淆。
答案 1 :(得分:3)
使用repair -pr -full
,您必须在群集中的每个节点上运行修复。请参阅此blog post几年前我写的有关原因的详细说明。