Cassandra节点-重建v.s.修复



之间有什么区别

a) nodetool rebuild

b) nodetool repair [-pr]

换句话说,相应的命令究竟做什么?

nodetool rebuild:类似于引导过程(在集群中添加新节点时),但适用于数据中心。这里的过程主要是从已经活动的节点到新节点的流(新节点是空的)。因此,在快速定义了节点的键范围之后,剩下的可以看作是复制操作。

nodetool repair-pr:不是复制操作,要修复的节点不是空的,它已经包含数据,但如果复制因子大于1,则需要将该数据与其他副本上的数据进行比较,如果存在差异,则会进行更正。该过程涉及大量流式传输,但不是数据流式传输:被修复的节点请求merkle树(基本上是哈希树),以验证两个节点拥有的信息是否相同,如果不相同,则请求具有任何差异的数据部分的完整流(因此所有副本都具有相同的数据)。如果流式传输此哈希比验证前流式传输整个数据更快,那么这是在假设两个节点上的大多数数据都相同的情况下进行的,只是有些不同。这个过程还删除了从数据库中删除时创建的逻辑删除,像定义一个新的"检查点"一样,在删除数据后将创建新的逻辑删除点,但旧的逻辑删除点将不再使用。

希望它能有所帮助!

最新更新