描述:
repair 命令修复集群中的一个或多个节点,并提供将修复限制为一组节点的选项. 定期执行修复很重要,尤其是在频繁删除数据的环境中。
重要提示:在运行修复之前,请确保所有相关的副本已启动并且可访问。
控制修复的运行方式:
-
执行修复的节点数:
(1) 默认情况下,同时在具有相同副本数据的所有节点上并行运行修复。
(2)-seq, --sequential,顺序的在一个节点上一个接一个地运行修复。
(3)-dcpar, --dc-parallel,数据中心并行,通过在所有数据中心同时运行顺序修复,将顺序和并行结合起来;每个数据中心中的单个节点一个接一个地运行修复,直到修复完成。 -
修复的数据量:
(1)全量修复:-full 比较运行命令的节点上存储的数据的所有副本,并将每个副本更新为最新版本。不将数据标记为已修复或未修复。
(2)分区修复:-pr, --partitioner-range 修复的分区器范围,仅修复存储在命令运行节点上的数据的主副本。
(3)增量修复:将数据拆分为已修复和未修复的SSTables,仅修复未修复的数据。将数据标记为已修复或未修复。
顺序修复和并行修复的区别:
顺序修复在一个接一个节点上执行操作。并行修复同时修复具有相同副本数据的所有节点。数据中心并行(-dc par)通过在所有数据中心同时运行顺序修复,将顺序和并行结合起来;每个数据中心中的一个节点运行修复,直到修复完成。
并行修复同时为所有数据中心中的所有节点构造Merkle表。它同时在节点A、B和C上工作。在并行修复期间,动态snitch使用快照中未进行修复的副本处理对此表的查询。使用并行修复可以快速完成修复。
顺序修复对每个复制副本进行快照。快照是指向现有SST表的硬链接。它们是不可变的,几乎不需要磁盘空间。
与顺序修复不同,数据中心并行修复同时为所有数据中心构建Merkle表。因此,不需要(或生成)快照。
cassandra版本:3.11