Redis主从复制原理解析之三阶段
2019-10-28 本文已影响0人
一如既往wfqwfq
1、Redis主从复制原理
Redis主从复制可以分为三个阶段:
1.复制初始化阶段
2.数据同步阶段
3.命令传播阶段
1、复制初始化阶段
当执行完slaveof masterip port命令后,slave根据指定的masterip和端口向master发起socket连接。当socket连接建立后,slave向master发送ping确认master是否可用,如果返回pong则表示可用。如果master设置了密码,则还要做身份验证。身份验证通过后进入数据同步阶段。
2、数据同步阶段
主库和从库都确认对方信息以后,便可开始数据同步,此时slave向master发送psync命令(需要注意的是redis4.0版本对2.8版本的psync做了优化,后续会进行说明),master收到该命令后判断是进行增量复制还是全量复制,然后根据策略进行数据的同步,当主库有新的写操作时候,此时进入复制第三阶段:命令传播阶段。
3、命令传播阶段
当数据同步完后,主从维护着心跳来判断对方是否存在。master要发送ping命令判断slave是否在线,slave要想master发送自己的复制偏移量。master根据slave的复制偏移量向slave发送同步命令,slave接收命令并执行,最终达到主从一致性。