Nodetool repair -pr -full vs Nodetool repair -pr

Nodetool repair -pr -full vs Nodetool repair -pr

我是 运行 一个有 1 个数据中心(6 个节点)的集群,每个节点上都安装了 Cassandra 3.11.0,复制因子为 2。我知道 nodetool repair -pr 将对该节点上的主要范围进行修复。我的问题是 nodetool repair -pr -fullnodetool repair -pr 有何不同?

我应该在重负载生产系统上使用哪个修复选项?

对于生产系统,最好使用令牌范围修复(使用 -st/-et 选项)来限制节点上的负载。手动执行可能很乏味,但可以使用 Reaper 等工具自动执行,跟踪哪些令牌范围已经修复,哪些未修复。

my question is how nodetool repair -pr -full is different from nodetool repair -pr?

所以“完全”修复意味着源节点和目标节点之间的所有数据都将被验证和修复。本质上,它与“incremental”修复相反,后者只修复数据的一个子集。这两个选项控制修复了多少数据。

一旦决定(增量与完整),-pr 将 运行 在该子集上,然后才修复主副本。

此外,-full 是 Cassandra 3 的默认值;这将使 -pr-pr -full 基本相同。

Which repair option should I use on a heavy load production system?

我支持 Alex 所说的,并为此推荐 Cassandra Reaper。它能够安排较慢时间的维修,并允许您暂停未及时完成的​​维修。

建议不要使用-PR选项执行增量修复。 它会跳过未修复的非主副本,这在长时间 运行 !!

中不是一个好习惯