Redis主从复制详解(作用原理及过程图解)

Redis主从复制详解(作用原理及过程图解)-mikechen

Redis主从复制定义

Redis主从复制,是指将一台Redis服务器(主节点master)的数据,复制到其它的Redis服务器(从节点Slave),类似于Mysql的主从复制,分为全量同步和增量同步。

如下图所示:

Redis主从复制详解(作用原理及过程图解)-mikechen

默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。

 

Redis主从复制作用

第一个作用:数据备份

当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复。

第二个作用:读写分离

提高服务器的负载能力,由主节点提供写服务,由从节点提供读服务,和 MySql的读写分离一致。

第三作用:高可用

主从复制是Redis高可用的基础,哨兵和集群都是基于此模式进行。

 

Redis主从复制原理

Redis主从之间的复制分为两部分:全量复制和增量复制。

1.Redis全量复制过程

Redis在第一次实现主从关系时会进行全量复制,如下图所示:

Redis主从复制详解(作用原理及过程图解)-mikechen

Redis全量复制同步基本流程,大致分为如下7大步骤:

  1. slave 通过 psync命令同步数据与master建立socket长连接;
  2. master 收到psync命令,执行bgsave语句生成rdb快照;
  3. master发送rdb数据;
  4. slave 清空数据并加载master发来的rdb数据;
  5. master 把生成rdb文件过程中的修改数据,从repl buffer发送到slave;
  6. slave 执行接收到的修改命令;
  7. master通过socket长连接持续把写命令发送给从节点,保证主从一致性。

 

2.Redis增量复制过程

如果由于网络原因造成原因造成主从断开,期间有数据写入master,再次形成主从时则会形成增量复制,如下图所示:

Redis主从复制详解(作用原理及过程图解)-mikechen

Redis全量复制增量同步基本流程,大致分为如下6大步骤:

  1. slave 连接断开;
  2. master最近数据的修改命令的缓存;
  3. slave 重新建立Socket长连接到master;
  4. slave psync命令同步数据:offset偏移量控制;
  5. master 判断 salve的offset如果在repl backlog buffer中,则master会将缓存中从salve的offset之后,数据一次性同步给salve节点,否则会全量同步;
  6. master通过socket长连接持续把写命令发送给从节点,保证主从一致性。

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法