`nodetool repair` 是否也会修复持有环中不拥有的数据的机器?

Will `nodetool repair` also repair against machines holding data they don't own in ring?

假设我有一个由三个节点组成的集群,(为简单起见)复制因子为 1。我们将节点称为 A、B 和 C。

根据环,分区键 X 应该存储在 A 上。但是,由于数据库恢复,分区键 X 的数据最终在节点 B 上(并且 A 根本不存储 X ).

问题:如果我发出 nodetool repair,它会确保分区键 X 最终出现在 A 上吗?

我知道,进行数据库恢复的真正方法是使用 sstableloader 之类的方法,但是由于不可预见的情况,对我来说,执行上述操作可能是一个更简单的解决方案(如果可行!) .

您不能对复制因子为 1 的集群使用修复。如果每个节点都独占其自己的令牌范围,那么 Cassandra 跨节点修复数据就没有意义。在这种情况下,使用 sstableloader 将是更清洁的解决方案。