您的位置:首页 > 文旅 > 美景 > Redis主从复制

Redis主从复制

2024/12/23 8:57:10 来源:https://blog.csdn.net/qq_40244755/article/details/141400048  浏览:    关键词:Redis主从复制

在这里插入图片描述

主节点处理用户请求,并将数据复制给从节点。主从优点:

  1. 数据冗余,将数据热备份到从节点,主从点宕机不影响数据

  2. 读写分离,主节点负责写,从节点负责读,提高redis整体吞吐量

  3. 故障恢复,主节点下线后切换从节点为主节点

  4. 高可用基础,主从机制是Sentinel和cluster机制的基础,故障转移都需要从主节点切换到从节点

  5. 主从复制流程

    1. 握手阶段:主从连接成功以后,从节点需将自身信息发送给主节点
    2. 同步阶段:从节点连接上主节点后,需先同步数据,数据一致后才开始复制
      1. 全量同步:主节点生成RDB数据发送给从节点(首次)
        1. 从节点接收数据以后,需要主节点发送的RDB格式。以$EOF开头为不定长格式,否则为定长格式。
        2. 读取处理数据:
          1. 磁盘加载:不断读取socket中的数据并保存到临时文件中,待所有数据都保存到临时文件时,命名为RDB文件,并加载RDB文件
          2. 无磁盘加载:读取socket中的数据,加载到内存中
      2. 部分同步:主节点只需将复制积压区中的offset偏移量之后的命令发送给从节点即可。若offest不在复制积压区中,则进行全量同步。
        1. 从节点发送部分同步请求的命令后,主节点回复,若主节点要求全量同步,则进行全量同步。否则继续部分同步操作,从节点根据主节点返回的replid、offset(这两个参数,主节点和从节点都会各自维护一份),进行同步操作。
        2. 检查offset(offset有点类似于mysql做checkpoint时设计的LSN(log sequence number))是否在复制积压区中,如果不在,则说明未同步数据较多,改为全量同步。
    3. 复制阶段:主节点将执行的写命令传播给从节点,从节点接受并执行这些命令。redis使用异步复制,主节点传播命令完以后,不会等待从节点返回ACK确认。异步复制优点是低延迟高性能,缺点是短期内会有数据不一致的情况。
    4. 主从同步协议:
      1. PSYNC:psync是redis4之前使用的主从协议,在主从重连后,可以快速同步数据,缺点是:从节点重启后会丢失replid和offset参数,导致全量同步;在cluster中若发生主从切换,replid会丢失导致全量同步。
      2. PSYNC2:psync2会把这两个数据放入RDB文件中,避免丢失,因此使用PSYNC2协议,必须使用RDB持久化。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com