Redis--主从数据同步

6 篇文章 0 订阅

1:从库刚刚加入,这是需要执行一次全量复制,首先需要与主库进行协商,向主库发送psync ? -1 命令,主库收到命令后回复 FULLPSYNC {自己的id} {自己的偏移量}
然后开始执行BGSAVE命令 保存当前数据库状态 生成RDB文件 并传输给从库
从库收到文件后 首先清空自身的数据库 然后加载RDB文件
由于在此过程中 主库还是可以接收到用户的写请求 主库会暂时将这些命令记录到replaciton buufer 最后发送到从库 从库再重新执行这些命令 保持与主库数据一致性
2:全量复制完毕之后 就进入到了命令传播阶段 这阶段主从库保持长连接 主库每次收到写请求 都会发送从库 从库跟着执行
3:增量复制,当主从库之间断开连接 这是后主库收到的写命令还会被写入到积压队列(repl_backlog _buffer 这是一个环形的缓冲区 缓冲区满时会从头开始覆盖写入) 当网络恢复后 从库向主库发送 psync命令 并带上最后从主库接受命令的偏移量 主库根据将repl_backlog _buffer偏移量之后的内容发给从库 从库执行恢复断开期间主库接收到的命令 如果断开期间过久 或者主库此时写入频繁 积压队列发生了覆盖 此时只能执行全量复制了

为什么主从库同步采用RDB文件而不使用AOF文件?
因为RDB文件是二进制文件 且进行了压缩
传输和后续的加载效率都要高于AOF文件

从库过多时,主库给每一个从库全量复制都要调用BGSAVE命令 并发送RDB文件 影响主库性能 如何处理?
采用 主 从 从模式 一批从库选择从已经同步完成数据的从库进行同步

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值