【Redis】浅谈INFO replication中的两个master_replid

首先说一下含义:

  • master_replid是master启动时生成的40位16进制的随机字符串,用来标识master节点

  • master_repl_offset是复制流中的一个偏移量,master处理完写入命令后,会把命令的字节长度做累加记录,统计在该字段。该字段也是实现部分复制的关键字段。

  • slave_repl_offset同样也是一个偏移量,从节点收到主节点发送的命令后,累加自身的偏移量,通过比较主从节点的复制偏移量可以判断主从节点数据是否一致。

  • 当从实例连接到主实例时,从实例会发送master_replidmaster_repl_offset(标识与主实例同步的最后一个快照)请求部分复制。如果主实例接收部分复制的话则从最后一个偏移量开始增量进行部分复制,否则将进行全量复制

以下集群的节点信息:

我将用主节点172.24.29.164:6302和从节点172.24.29.163:6304做演示

先看看节点172.24.29.164:6302的信息:(当前角色是master)

由于之前我做过切换实验,所以master_replid2和second_repl_offset有值,先不用管这个值,后面我会细说。

再来看看节点172.24.29.163:6304的信息:(当前角色是slave)

可以看到第一个master_replid的值正好和master的第一个master_replid对应。

接下来172.24.29.164:6302节点执行shutdown save命令,停掉master节点:

可以看到172.24.29.164:6302的状态已经是fail,172.24.29.163:6304节点自动切换成了master。

观察172.24.29.163:6304节点的master_replid变化情况:

可以看到,172.24.29.163:6304切换为master之后,生成了自己的master标识73c383cdab10bf45ece339a370caa6fdf803ee28,之前的master节点的标识存到了master_replid2的位置。

我们再把172.24.29.164:6302启动,此时自动成为了172.24.29.163:6304的从节点:

再来看一下172.24.29.164:6302的master_replid信息:

此时,172.24.29.164:6302的master_replid正好是172.24.29.163:6304新生成的master_replid。

总结一下:

1、主从关系建立后,master节点会生成一个随机的40位16进制字符,作为唯一标识;

2、slave节点连接master节点之后,会将master节点的master_replid存储到自己的master_replid中;

3、如果master节点宕机了,slave节点成功切换为master后,会将之前master_replid记录的值存储到master_replid2中,自己生成一个新的随机字符,作为自己的master标识,存储在master_replid中;

4、当之前的master节点重启后,会自动成为当前master节点的slave节点,并将当前master节点的master_replid存储在自己的master_replid中;

master_replid和master_repl_offset分为两组:

第一组:master_replid(为了区别,后面称此为replid1)和master_repl_offset:如果redis是主实例,则表示为自己的replid和复制偏移量; 如果redis是从实例,则表示为自己主实例的replid1和同步主实例的复制偏移量。

第二组:master_replid2和second_repl_offset:无论主从,都表示自己上次主实例repid1和复制偏移量;用于兄弟实例或级联复制,主库故障切换psync。

主从复制时,当slave节点上报master_replid串,与master节点的master_replid1或replid2有一个相等,就会进行复制。

作用:
Redis4.0之后才用了PSYNC2.0,在使用星形复制时,如一主两从。A—>B , A—>C ,主节点为A。当A出现问题,B提升为主节点,C 重新指向主节点B,此时C节点可以在B节点找到A节点的master_replid。C节点只做增量同步即可。(个人想法,仅供参考)


参考:
https://blog.csdn.net/dupeng0811/article/details/89897261
https://www.cnblogs.com/any-way/p/10411567.html


Guess you like

Origin blog.csdn.net/sinat_14840559/article/details/107563837