redis_主从复制


redis的复制

旧版复制功能的实现

直接使用SLAVEOF IP:port 实现

  1. 同步(sync):将slaver状态更新到master状态
  2. 命令传播(command propagate):当 master 被修改,主从服务器不一致,让从服务器重新回到一致状态。

同步

SLAVEOF 要求slaver复制master, 首先就会执行 同步 操作

  1. 从服务器向主服务器发送SYNC命令。
  2. 收到SYNC命令的主服务器执行BGSAVE命令,在后台生成一个RDB文件,并使用一个缓冲区记录从现在开始执行的所有写命令。
    3.当主服务器的BGSAVE命令执行完后,主服务器会将BGSAVE命令生成的RDB文件发送给从服务器,从服务器接受并载入RDB文件,更新到主服务器执行BGSAVE命令时的数据库状态
  3. 主服务器将记录在缓冲区里面的所有写命令发送给从服务器,从服务器执行这些命令,将自己的数据库状态更新。

命令传播

当主服务器修改后,数据出现不一致,主服务器将自己执行的命令发送个从服务器执行。

旧版复制的问题

当从服务器断线后,会重新sync,重新生成RDB传入到从模式。消耗大量性能和IO

新版复制功能的实现

为了解决旧版复制功能在处理器断线重复制的低效问题,参与PSYNC命令代替SYNC。

PSYNC

PSYNC具有完整重同步和部分重同步两种模式:

  1. 完整重同步用于初次复制情况
  2. 部分重同步用于处理断线后复制情况,将断开期间执行的写命令发送给从服务器。

心跳检测

在命令传播阶段,从服务器默认会以每秒一次的频率,向从服务器发送命令
REPLCONF ACK <replication_offset>

  1. 检测主从服务器的网络连接状态(ACK请求和回应)
  2. 辅助实现min-slaves配置选项(配置从服务器的数量和从服务器的延迟)
  3. 检测命令丢失 (偏移量来实现)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值