Redis主从复制模式是如何进行数据同步的

记录一个面试题

Redis主从复制模式是如何进行数据同步的

先画个图让自己记忆深刻一点
在这里插入图片描述

  • 主从复制数据同步分为两类
    • 第一次同步
    • 增量或者全量同步

描述一下回答的关键点

  1. 每一个redis实例都会有一个 runId 作为唯一标识
  2. 在slave 执行命令 replicaof [ master ip] ,注册为slave
  3. 第一次同步时,为全量同步
    3.1 slave 发送psync 命令给master
    3.2 master 接受命令后,执行save 命令,生成RDB文件
    3.3 发送RDB文件给slave,同时会发送 runid 给slave
    3.4 slave 清空之前数据,加载RDB文件
    3.5 master 推送 replication buffer中的写操作给slave
    后续正常的命令同步也是主库将命令写到replication buffer然后发给从库
    完成数据同步
  4. 如何增量同步
    4.1 master 除了会将写操作保存到 replication buffer ,同时会保存一份到repl_backlog_buffer。
    4.2 每一次同步,master 和slave 都会记录 一个偏移量。保持一致
    4.3 需要增量同步时,slave 发送 master runid 和 offset 偏移量 ,master从repl_backlog_buffer记录中获取后面的写操作,发送给 replication buffer ,由replication buffer 将增量操作发送给slave
  5. 那些情况会发生全量同步
    5.1 第一次同步
    5.2 当slave下线重新下线时,发送runid发现不是之前的master,会重新全量同步。全量同步会清空之前数据
    5.3 当偏移量数据不在repl_backlog_buffer中,进行全量同步
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值