1.Redis复制过程

9 篇文章 10 订阅

当你在从节点上执行:slaveof 127.0.0.1 6379 (建立复制的命令)

这样从节点服务所打印的日志,就如同底下流程图所描述

      日志信息

复制流程

  1. 保存主节点信息:执行slaveof后从节点只保存主节点的地址信息便直接返回,这是建立复制的流程还没有开始

2.主从建立socket

3.发送ping命令

连接建立成功后从节点发送ping请求进行首次同行,ping请求主要的目的有:检测主从之间网络套接字是否可用,检测主节点当前是否可接受处理命令。

4.验证权限

 如果主节点设置了requirepass参数,则需要密码验证,此时必须在从节点配置masterauth参数保证与主节点相同的密码才能通过。

5.同步数据集

内部机制:(要执行一次全量复制)

  (1)发送psync命令进行数据同步,由于第一次进行复制,从节点没有复制偏移量和主节点的运行ID,法医发送psync -1

   (2)主节点根据psync-1解析出当前为全量复制。

   (3)从节点接收主节点的相应数据保存运行ID和偏移量offset

  

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

   (5)主节点发送RDB文件到从节点,从节点把接收到的RDB文件保存在本地并直接作为从节点的数据文件,日志如下:

  (6)从节点接收完主节点传送来的全部数据后会清空自身数据。

  (7)从节点清空数据后开始加载RDB文件,对于较大的RDB文件,这一操作依然比较耗时,可以通过计算日志的时间差来判断加载RDB的总时间

  (8)从节点成功加载完RDB后,如果当前节点开启了AOF持久化功能他会立刻做bgwriteaof操作,为了保证全量复制后AOF持久化立刻可用。

通过上面分析,可以发现全量复制时非常耗时的,集体耗时细节如下:

 

  •  主节点bgsave时间
  • RDB文件网络传输时间
  • 从节点清空数据时间
  • 从节点加载RDBD的时间
  • 可能的AOF重写操作

             

                                                                               微信公众号: 

                                               

                                                                             JAVA程序猿成长之路

                          分享资源,记录程序猿成长点滴。专注于Java,Spring,SpringBoot,SpringCloud,分布式,微服务

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值