6.4 Redis主从复制之全量复制

  • 时间:
  • 浏览:
  • 来源:互联网

1.简介
把一个存储了很多数据的主节点(master)数据全部同步给一个从节点(slave),在同步的过程中master写入的新数据也需要同步过来,这样才可以达到完整同步的效果。全量复制可以完成上述功能,首先将当前的RDB文件同步给slave,写入命令单独记录,当RDB文件加载完后,通过偏移量的对比将这期间产生的新数据命令同步给slave。

2.流程

  • 首次同步时slave不知道master的runid和偏移量,slave将发送psync ? -1(psync是同步命令,可实现全量和部分复制的功能,这里有两个参数runid和offset,?表示runid,-1表示offset)来同步数据
  • master将执行一个全量复制,同时返回自己的runid和offset给slave
  • slave保存master的基本信息
  • master执行bgsave命令做一个RDB的生成,在生成RDB和RDB传输过程中写入的新命令将被推入repl_back_buffer(复制缓冲区)
  • master将RDB文件传给 slave
  • master将repl_back_buffer(复制缓冲区)传给slave
  • slave清除旧的数据
  • slave根据RDB文件和repl_back_buffer(复制缓冲区)加载新的数据
    在这里插入图片描述

3.开销

  • bgsave耗费的时间
  • RDB文件网络传输耗费的时间
  • 从节点清空数据耗费时间(根据从节点的数据规模来定)
  • 从节点加载RDB的耗费时间

本文链接http://www.dzjqx.cn/news/show-617173.html