美文网首页
Redis主从复制之数据同步

Redis主从复制之数据同步

作者: 一如既往wfqwfq | 来源:发表于2019-11-04 16:45 被阅读0次

前言:redis数据同步是redis主从复制的第二个阶段。该阶段实现slave初次连接或断线重连后redis数据库主从同步。redis数据同步又有两种实现,一种是全量同步,一种是增量同步。

1、全量同步

1、什么是全量同步

全量同步指的一次同步过程中,slave同步请求master上的所有数据。

2、发生条件

  • redis首次启动或者重启
  • redis断线重连后不满足增量同步的要求

3、原理

slave向master发起全量同步请求,master执行bgsave命令,生成一份当前数据库对应的rdb文件。发送个slave,slave清除旧的数据库,将master发送过来的rdb文件载入。

4、日志查看

1.第一次同步,slave请求全量同步

image.png
2.master执行bgsave命令,拷贝一份rdb文件发送给slave。
image.png
3.slave接收master发送的rdb文件件,清除旧的数据库,载入新的数据库
image.png

2、增量同步

1、什么是增量同步

增量同步指的是一次同步请求中,slave只同步请求master中自己没有的数据。

2、发生条件

  • redis版本>=2.8
  • redis断线重连。因为run_id存在内存中,重启后就没有了。并且slave断线期间修改的命令都保存在复制缓冲区中
  • redis slave中的run_id与master中的run_id相同

3、增量复制3个关键点

1、offset(复制偏移量):
master和slave都会维护一个offset,用来表示自己的复制情况。在master中代表master向slave发送的字节数。在slave中代表slave从
slave从master中接收到的字节数。因此offset总是不断地增大。主从的offset相同则代表数据是同步的,不相同则不同步。
2、replication backlog buffer(复制积压缓冲区):
复制积压缓冲区是一个固定的FIFO队列,该缓冲区的默认大小为1mb。复制积压缓冲区由master维护,所有slave共享该缓冲区。其作用在于备份一段时间内master发送给slave的命令。
在主从命令传播阶段,主节点除了将写命令发送给从节点外,还会发送一份到复制积压缓冲区,作为写命令的备份。除了存储最近的写命令,复制积压缓冲区中还存储了每个字节相应的复制偏移量(如下图),由于复制积压缓冲区固定大小先进先出的队列,所以它总是保存的是最近redis执行的命令。

3、run_id(服务器运行的唯一ID)
每个redis实例在启动时候,都会随机生成一个长度为40的唯一字符串来标识当前运行的redis节点,查看此id可通过命令info server查看。

当主从复制在初次复制时,主节点将自己的runid发送给从节点,从节点将这个runid保存起来,当断线重连时,从节点会将这个runid发送给主节点。主节点根据runid判断能否进行部分复制:

  • 如果从节点保存的runid与主节点现在的runid相同,说明主从节点之前同步过,主节点会更具offset偏移量之后的数据判断是否执行部分复制,如果offset偏移量之后的数据仍然都在复制积压缓冲区里,则执行部分复制,否则执行全量复制
  • 如果从节点保存的runid与主节点现在的runid不同,说明从节点在断线前同步的redis节点并不是当前的主节点,只能进行全量复制

4、原理

在slave断线重连并且条件允许的情况下,slave将进行增量同步。slave向master发送master的run_id和自己offset。master判断run_id与自己的run_id是否相同,相同则表示slave之前是自己的从库。判断offset是否相同,不相同则将复制积压缓冲区中相应的命令发送给slave,王城增量同步。

5、日志查看

将slave的网络服务关闭,在master上执行几个写命令。在开启slave的网络服务,可以发现slave向master请求增量同步。


image.png

master将复制积压缓冲区的写命令同步给slave


image.png

相关文章

  • Redis哨兵模式安装与配置

    在介绍哨兵模式之前首先介绍下Redis主从复制。 Redis 主从复制 可将 主节点 数据同步给 从节点,从节点此...

  • redis搭建主从复制和哨兵模式

    主从复制配置 redis主从复制 概述 1、redis的复制功能是支持多个数据库之间的数据同步。一类是主数据库(m...

  • redis 基于sentinel实现主从架构的高可用

    redis主从复制原理 1、配置redis主 2、配置redis从(多个从节点配置方法相同) 3、验证主从数据同步...

  • Redis主从复制原理解析之三阶段

    1、Redis主从复制原理 Redis主从复制可以分为三个阶段:1.复制初始化阶段2.数据同步阶段3.命令传播阶段...

  • Redis主从复制之数据同步

    前言:redis数据同步是redis主从复制的第二个阶段。该阶段实现slave初次连接或断线重连后redis数据库...

  • redis主从复制和哨兵

    一、Redis主从复制 主从复制:主节点负责写数据,从节点负责读数据,主节点定期把数据同步到从节点保证数据的一致性...

  • redis主从和哨兵

    一、Redis主从复制 主从复制:主节点负责写数据,从节点负责读数据,主节点定期把数据同步到从节点保证数据的一致性...

  • redis缓存服务

    1.redis master-slave同步详细过程 Redis 支持主从复制分为全量同步和增量同步, 首次同步是...

  • redis-08-主从复制

    [TOC] 1 简介 Redis的主从复制简单来说就是: 根据一定的策略将主机数据同步至从机 主从复制,读写分离,...

  • Redis同步和持久化机制

    一、Redis的主从复制Redis的复制功能是支持多个数据库之间的数据同步。一类是主数据库(master),一类是...

网友评论

      本文标题:Redis主从复制之数据同步

      本文链接:https://www.haomeiwen.com/subject/qyrdbctx.html