redis主从复制

日常学习小结,不计格式、不计内容,只做笔记之用,若有不对请留言赐教!!!

主从复制

redis将主节点上数据拷贝到从节点上。只能从主节点复制到从节点。

作用

实现数据冗余、服务冗余、负载均衡,即高可用、读写分离。

复制过程
  1. 连接准备
    在这里插入图片描述
    a. 从节点保存主节点ip、port,异步发送slaveof命令,主动与主节点尝试连接,连接不上不停止,除非slaveof no one命令停止。
    b. 主从建立连接,从节点发送ping命令到主节点,判断socket是否可以正常请求,主节点会返回pong,超时、非pong。
    c. 身份验证。
    d. 以上步骤都成功,将自己的ip、port发给主节点。

  2. 同步数据
    全量复制:
    a. 命令:psync ? -1 ?:主节点的runid -1:偏移量,代表全量复制。
    b. 适用场景:当新节点加入集群、或节点宕机一段时间,部分复制不可用时。
    c. 原理:
    c1. 从节点向主节点发送psync命令。
    c2. 主节点收到从节点发过来的全量复制命令,执行BGSAVE命令,在子进程中生成 RDB文件,主进程继续接收写请求,将接收到的写请求写进复制缓冲区。
    c3. 主节点将RDB文件传给从节点,从节点接收到文件,先清空自己的旧数据,在加载RDB文件,达到与主节点bgsave时数据一致。
    c4. 主节点将复制缓冲区的写命令传给从节点,从节点执行这些命令,达到数据一致。

    部分复制:
    a. 命令:psync runid offset, offset:偏移量
    b. 使用场景: 由于脑裂问题,从节点短暂下线后又上线。
    c. 组成:偏移量、复制积压缓冲区、服务器运行id
    d. 原理:
    d1. 从节点向主节点发送部分复制命令,并将自己的偏移量发送给主节点。
    d2. 主节点根据从节点的偏移量与自己偏移量的差,到复制积压缓冲区中查找数据,如果能全部找到。将积压缓冲区中的命令传给从节点,如果不能全部找到,则进行全量复制。

  3. 命令传播
    a. 每隔指点时间,默认10s,主节点向从节点发送ping命令,让从节点进行超时验证。
    b. 每隔1秒,从节点向主节点发送REPLCONF ACK {offset}命令,该命令会被主节点判断从节点超时判断,同时,通过发送自身偏移量,主节点会与自身的偏移量进行比较,若不一致,主节点通过积压复制缓冲区推送缺失数据。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值