运行nodetool repair命令的正确方法是什么? 在单个数据中心的3节点Cassandra集群中,我们应该运行nodetool repair还是nodetool repair -pr?
根据Cassandra apache文档http://cassandra.apache.org/doc/latest/operating/repair.html,
"默认情况下,修复将对您正在运行修复的节点复制的所有令牌范围进行操作,如果在每个节点上运行它,将导致重复工作。 -pr标志仅修复节点上的“主要”范围,因此您可以通过在单个数据中心的每个节点上运行nodetool repair -pr来修复整个集群。"
运行" nodetool repair"需要5分钟以上。但是运行" nodetool repair -pr"花费较少的时间。所以,我想知道" nodetool repair -pr"是单数据中心中3节点Cassandra集群的正确选择。 请指教。
答案 0 :(得分:1)
请注意,如果使用-pr,请不要同时使用-inc,因为这两个not recommended可以一起使用。所以基本上像其他人建议的那样,在2.2之前,你可以在每个节点上运行nodetool repair -pr;而在2.2之后,你最好使用nodetool repair -pr -full来抑制增量修复。
答案 1 :(得分:0)
如果定期运行修复,最好的方法是运行-pr选项,从而仅修复主令牌范围。这样,整个戒指就会得到修复。
但是如果你到现在为止没有进行维修,可能最好的方法是使用-pr选项运行完整维修然后进行维修。
另请注意,根据您的cassandra版本,修改行为会发生变化。 2.2及之后的默认修复是增量修复。如果要触发完整修复,则必须明确使用-full选项。对于2.2之前的版本,请查看文档。