[Redis][主从复制][中]详细讲解

  • 主节点的复制id,主节点重新启动,或者从节点晋级成主节点,都会生成一个replicationid
    • 同一个节点,每次重启,生成的replicationid也会变化
  • 从节点和主节点建立连接之后,就会获取到主节点的replicationid
  • 通过info replication即可看到replicationid
    127.0.0.1:6379> info replication
    # Replication
    role:master
    connected_slaves:0
    master_replid:1da596acecf5a34b4b2aae45bd35be785691ae69
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:0
    second_repl_offset:-1
    repl_backlog_active:0
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:0
    repl_backlog_histlen:0
    
  • 关于master_replidmaster_replid2,每个节点需要记录两组master_replid,这个设定解决的问题场景是这样的:
    • 比如当前有两个节点A和B,A为master,B为slave
      • 此时B就会记录A的master_replid
    • 如果网络出现抖动,B以为A挂了,B自己就会成为主节点,于是B给自己分配了新的master_replid,此时就会使用master_replid2来保存之前A的master_replid
      • 后续如果网络恢复了,B就可以根据master_replid2找回之前的主节点
      • 后续如果网络没有恢复,B就按照新的master_replid自成一派,继续处理后续的数据
  • 明辨replidrunid
    • runid:主要用在支撑实现Redis哨兵这个功能,和主从复制没关系
    • replid:主要在主从复制中起到作用
  • 上一篇:鸿蒙操作系统(HarmonyOS)生态与机遇


    下一篇:使用Python创建EXE运行器和截图工具-功能概述