Redis的全量同步和增量同步
2023-09-14 09:01:47 时间
Redis主从复制可以根据是否是全量分为全量同步和增量同步。以下对其相应的同步过程及原理做下简要说明。
全量同步
Redis的全量同步过程主要分三个阶段:
同步快照阶段:Master创建并发送快照给Slave,Slave载入并解析快照。Master同时将此阶段所产生的新的写命令存储到缓冲区。
同步写缓冲阶段:Master向Slave同步存储在缓冲区的写操作命令。
同步增量阶段:Master向Slave同步写操作命令。
具体的全量同步步骤如下:
步骤 | 主服务器 | 从服务器 |
---|---|---|
1 | (等待命令进入) | 连接(重连)Master,发送SYNC命令 |
2 | 执行BGSAVE,并使用缓冲区记录此后的所有写命令 | 根据配置的设定,选择继续使用现有数据处理客户端请求,或者直接向客户端报错。 |
3 | BGSAVE执行完毕,向Slave发送快照文件,同时继续缓冲此期间的写命令。 | 丢弃所有旧数据,开始载入快照文件。 |
4 | 快照文件发送完毕、开始向Slave发送存储在缓冲区的写命令。 | 完成对快照文件的解释操作;开始正常接收命令请求。 |
5 | 缓冲区所存储的写命令发送完毕;此后每执行一个写命令,就向Slave发送相同的写命令。 | 执行Master发来的所有的存储在缓冲区里的写命令;此后,接收并执行Master传来的每个写命令。 |
对应的流程图如下:
对应的日志如下:
Connecting to MASTER 192.168.75.136:6379
MASTER <-> REPLICA sync started
Non blocking connect for SYNC fired the event. --开始非阻塞同步
Master replied to PING, replication can continue...
Partial resynchronization not possible (no cached master)
Full resync from master: 74fb29643971834fdf701beb1708ce9ddc23bdee:0 --全量同步
MASTER <-> REPLICA sync: receiving 193 bytes from master --接受数据
MASTER <-> REPLICA sync: Flushing old data --清空以前缓存得数据
MASTER <-> REPLICA sync: Loading DB in memory --加载数据库到内存
MASTER <-> REPLICA sync: Finished with success --完成同步
增量同步
Redis增量同步主要指Slave完成初始化后开始正常工作时,Master发生的写操作同步到Slave的过程。通常情况下,Master每执行一个写命令就会向Slave发送相同的写命令,然后Slave接收并执行。
主从链
Redis的Master和Slave并没有特别不同的地方,Slave也可以拥有自己的Slave,并由此形成主从链。
Slave对Slave进行复制在操作上和Slave对Master进行复制的唯一区别在于,如果Slave-X拥有Slave-X1,那么当Slave-X在执行步骤4时(即:完成对快照文件的解析操作;开始正常接收命令请求)时,它将断开与Slave-X1的连接,导致Slave-X1需要重新连接并重新同步。
相关文章
- Redis几个认识误区(转)
- redis 简单整理——HyperLogLog[十三]
- Redis持久化之大数据服务暂停问题
- Redis自旋锁解决分布高并发问题:使线程异步变为同步执行
- innodb为什么选择B+ Tree而不是跳表,Redis为什么选择跳表而不是B+ Tree
- Linux下php安装Redis扩展
- Redis 数据同步:主从库如何实现数据一致?
- Redis使用文档一
- redis主从同步原理---原生以及 基于binlog的主从同步不
- 讨论两种Redis中Token的存储方式
- 整理spring + mysql + redis + 测试 的配置格式 和源码
- java编程:jedis连接redis数据库实例
- Redis报错:MISCONF Redis is configured to save RDB snapshots, but it is currently not able to...
- Java连接远程Redis
- redis_03 _ 高性能IO模型:为什么单线程Redis能那么快
- 深入学习Redis(2):持久化
- Redis 集群搭建
- Redis详解(七)——Redis主从同步高可用架构
- Redis详解(六)——Redis主从同步原理与配置
- 【redis源码学习】从源码角度看主从复制(3):全量同步 && 部分同步