redis系列4——复制模式

本文介绍了Redis的复制模式,包括一主一从、一主多从和树状主从结构,详细阐述了数据同步方式如psync命令、全量复制和部分复制的过程。此外,还讨论了主从复制模式存在的问题,如网络中断后的数据一致性及手动故障转移等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、复制模式结构

1.一主一从

2.一主多从

3.树状主从

二、数据同步方式

1.psync命令使用流程

2.全量复制

3.部分复制

 三、主从复制模式存在的问题


        redis提供复制功能,实现多个数据相同的redis副本。如果主节点挂了,运维可以让从节点变成主节点,服务还可以继续使用。复制功能是redis的高可用的基础。

        redis保证最终一致性,主从复制是异步的,从节点会尽量追赶主节点,最终从节点内的数据会和主节点内的数据保持一致。同步期间网络断开,主从节点数据会出现故障期间不一致,从节点恢复会同步过来故障期间落后主节点的数据。

一、复制模式结构

支持单层和多层复制关系一主一从、一主多从、树状主从结构。

1.一主一从

        用来主节点出现宕机时从节点提供故障转移支持。主节点并发量比较高需要持久化时,可以在从节点上面开启AOF,避免了持久化对主节点的干扰。

2.一主多从

        适合读占比较大的场景,读命令直接读取从节点分担主节点的压力。

3.树状主从

        从节点从主节点辅复制数据,从节点也可以当作别的从节点的主节点。降低主节点传输给多个从节点的压力。利用从节点作为主节点分摊压力。

二、数据同步方式

        主从数据同步是使用psync命令完成,psync命令需要依赖主节点记录的复制偏移量、主节点的复制积压缓冲区(固定长度的先进先出队列,默认1MB,存在从节点时,主节点给从节点发送命令也会写入一份到复制积压缓冲区)、主节点运行id(个40位的十六进制字符串,用来唯一识别redis节点)组件支持。同步过程区分为全量复制和部分复制。

1.数据同步psync命令

流程说明:

(1)从节点发送命令psync{runId}{offset}给主节点,runId是从节点所复制主节点的运行id。offset是当前从节点已复制的数据偏移量,第一次复制默认值为-1。

(2)主节点根据psync请求参数和自身数据情况返回结果:

  • 回复+FULLRESYNC{runId}{offset},从节点触发全量复制。
  • 回复+CONTINUE,从节点触发部分复制。
  • 回复+ERR,主节点版本低于2.8,不识别命令。从节点会使用旧版的psync命令进行全量复制。

2.全量复制

        一般是初次复制场景使用,把主节点的数据一次性全部发送给从节点,数据量较大时,主从节点都有很大的网络开销。

全量复制流程图:

流程说明:

(1)从节点发送psync命令给主节点进行数据同步,第一次复制,从节点没有偏移量offset和主节点的运行id,发送psync-1。

(2)主节点收到请求psync-1属于全量复制,回复+FULLRESYNC相应。

(3)从节点保存主节点发送过来的运行id 和偏移量offset。

(4)主节点执行bgsave生成RDB文件到本地。

(5)主节点发送RDB文件给从节点,从节点直接保存在本地作为从节点的数据文件。

(6)主节点RDB完成,在把复制积压缓冲区内的数据发送给从节点。 尽量保证主从节点数据的一致性。

(7)从节点接收完主节点传输的全部数据后会清空自身的旧数据。

(8)从节点清空数据后开始加载RDB文件。

(9)加载完RDB文件之后需要需要校验是否开启了AOF持久化。开启了需要做bgrewriteaof操作。

3.部分复制

        用于处理主从复制中因网络中断造成的数据丢失场景,从节点再次链接上主节点后,主节点会补发丢失的数据给从节点。避免了无效的全量复制操作。

部分复制流程图:

流程说明:

(1)主从节点之间网络出现中断超过repl-timeout设置的超时时间,主节点会认为从节点故障并中断复制的链接。

(2)主从节点断开期间的数据,主节点会保存最近一段时间的数据到复制挤压缓冲区(默认大小1MB)。

(3)主从节点网络恢复后,从节点会再次连上主节点。

(4)主从链接恢复后,从节点之前保存了自身的已经复制的偏移量和主节点运行id,把参数通过psync命令传输给主节点,进行部分复制。

(5)主节点接收到psync命令后首先核对参数的runId是否与自身一致,如果一致说明之前是复制的当前的主节点,根据偏移量在复制挤压缓冲区查找,偏移量在缓冲区内对从节点发送+CONTINUE相应,可以进行部分复制。

(6)主节点根据偏移量把复制积压缓冲区里面的数据发送给从节点,保证主从复制恢复正常的状态。

 三、主从复制模式存在的问题

  1. 主节点挂了,需要手动将从节点晋升为主节点,需要使用命令从节点去复制新的主节点。
  2. 主节点的写能力和存储能力受到单机的限制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值