Cassandra tablestats显示完全修复后修复的百分比为0.0

时间:2018-09-08 04:39:37

标签: cassandra

我有一个由4个节点组成的C * 3.11集群,RF为3。运行nodetool repair -full ks1 tb1后,命令窗口将显示

Starting repair command #18 (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx), repairing ks1 with repair options (parallelism: parallel, primary range: false, incremental: false, job threads: 1, ColumnFami lies: [device], dataCenters: [], hosts: [], # of ranges: 404, pull repair: false)

[2018-01-01 01:25:57,730] Repair completed successfully [2018-01-01 01:25:57,734] Repair command #18 finished in 29 seconds

因此,我认为维修成功。但是,当我选中nodetool tablestats ks1.tb1时,命令窗口仍显示

Percent repaired: 0.0

根据表,结果可能是Percent repaired: 100.0Percent repaired: 70.0,尽管修复命令显示修复成功,许多结果仍显示Percent repaired: 0.0

我在这里想念什么?

1 个答案:

答案 0 :(得分:2)

“已修复百分比”度量标准用于增量修复。随着增量修复,有2套稳定器。已修复且未修复。一旦修复了稳定机,它将被移至已修复的设备中,并且不再参与以后的修复。当放置--full时,您指定不使用增量式修复,而是使用子范围修复,在某些情况下,修复某个范围内的整个数据集仍然是必需的,无论先前是否修复过该数据集。示例场景是非本地DC中1台主机上的磁盘出现故障,因此需要进行修复以使备份从备份中更新,或者单个节点超过提示的切换窗口等。

拥有2套sstable会有很多开销(修复过程中由于压缩而将sstable锁定,而将范围拆分为sstable则产生反压缩)。因此,当非增量维修运行时,不会对sstable进行标记,因为它们避免了这些步骤。