Cassandra节点 - 重建vs.修理

时间:2013-07-11 19:47:12

标签: cassandra

有什么区别:

a)nodetool rebuild

b)nodetool repair [-pr]

换句话说,各个命令究竟做了什么?

1 个答案:

答案 0 :(得分:23)

nodetool rebuild:类似于引导过程(向集群添加新节点时),但对于数据中心。这里的过程主要是从已经存在的节点到新节点的流传输(新的节点是空的)。因此,在定义非常快的节点的键范围之后,其余的可以被视为复制操作。

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

希望它有所帮助!