redis主从复制原理

1.建立连接

(1)从服务器执行slaveof后,创建连接master的socket连接

(2)从服务器向master发送ping,如果回复不是pong,则断开重连

(3)身份验证,密码一致

(4)从服务器发送自己的监听端口,master保存下来

2.数据同步

(1)完整重同步(首次复制,也可能是断线后重连)

  

(2)部分重同步(断线重连)

  • runid:主服务器运行id,Redis实例运行id
  • offset,复制偏移量。主服务器和从服务器各自维护一个复制偏移量,记录传输的字节数。当主节点向从节点发送N个字节数据时,主节点的offset增加N,从节点收到主节点传来的N个字节数据时,从节点的offset增加N
  • replication backlog buffer,复制积压缓冲区。是一个固定长度的FIFO队列,默认大小1MB。需要注意的是该缓冲区由master维护并且有且只有一个,所有slave共享此缓冲区,其作用在于备份最近主库发送给从库的数据

3.命令传播

master每执行一次写,都会想slave发送同样的写命令,slave会每秒向master发送一次心跳检测,心跳检测命令会附带上从服务器的复制偏移量,可以检测是否有同步命令丢失

原文地址:https://www.cnblogs.com/jy107600/p/13788735.html