redis学习——redis主备同步原理

2.8主从分为同步sync和命令传播两个操作

1.sync为初始化

2 命令传播为主从同步

2.8主备同步sync原理:

1.从服务器向主服务器发送SYNC命令

2.主服务器执行BGSAVE命令,生成RDB文件,并使用一个缓冲区记录从bgsave开始的所有写命令

3.主服务器BGSAVE执行完后,讲RDB发送给从服务器,从服务器载入RDB文件,将自己的状态更新至主服务器的BGSAVE时的状态

4.主服务器将缓冲区的写命令发送给从服务器,从服务器执行写命令,讲从服务器更新为主服务器的当前态

2.8及以前,主从断开连接需要重新sync初始化

扫描二维码关注公众号,回复: 12121461 查看本文章

2.8以后,支持部分重同步(psync)

1.主从断开后,从库发送psync命令

2.向从库返回+continue命令,表示执行部分重同步

3.接受+continue命令,准备执行部分重同步

4.想从服务器发送自断开连接以来的写入命令

5.从库执行写入命令

复制积压缓冲区:

1 复制缓冲区是主服务器固定长度(默认1mb)先进先出队列

2 主库将写入操作放在复制缓冲区,从库断开后,发送从库的偏移量给主库,主库在复制缓冲区中找是否有这个偏移量,有就发送continue继续从这个偏移量写,没有就重新初始化。

redis server ID

serverID自动生成,建立主备关系时报错serverID,重连时校验

复制实现的详细步骤:

1.设置主服务器的地址和端口

2.建立套接字连接

3.从向主发送ping命令

4.auth身份验证

5.replconf端口信息

6.psync初始化

7.psync同步

心跳检测

从服务器每秒向主库发送 replconf ack <复制偏移量>。如果主库因为某种原因发送偏移量到备库失败,备库可以主动发送偏移量到主库,主库可以根据这个偏移量再次发送同步。(2.8以后才支持,2.8以前没有这个动作replconf ack)

参考:

《redis设计与实现》

猜你喜欢

转载自blog.csdn.net/qq_40687433/article/details/108734816
今日推荐