Redis主从复制
2021/9/4 2:07:37
本文主要是介绍Redis主从复制,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 1.为什么需要?
- 2.过程
- 3.心跳机制部分注意事项
1.为什么需要?
主从复制的原因可以从这几个方面看一下:
1)读写分离,分担一个redis数据库的压力,主节点主要是写,然后同步到从节点,从节点主要负责读
2)数据备份,是持久化的另一种数据保存
3)故障恢复,当主节点凉凉的时候,可以选择一个从节点作为主节点
2.过程
主要分为三步:
- 建立连接
从节点和主节点进行连接,从节点保存主节点的ip+端口;主节点保存从节点的端口;
主要是建立的socket连接,内部包含一些授权操作。 - 数据同步
主要分为两步:
2.1)全量复制
- 从节点发送psync2指令;
- 主节点执行bgSave指令,保存RDB文件
- 同时记录runid + offest
- 将上面的RDB、offset、runid发送给从节点
- 从节点进行恢复RDB
2.2)增量复制
- 从节点再次发送指令psync2 runid offset 指令
- 主节点判断自身的offset > offset(slave)
- 将这部分的内容 + offset 发给从节点
- 从节点收到这些命令进行bgwriteaof,进行恢复数据,并保存新的offset(slave) - 命令传播(心跳机制)
这部分其实就是 增量复制的过程,只是中途可能出现主从节点的一个网络问题,导致重新进行第二步的数据同步:
-主节点每10s发送ping 指令来判断从节点是否在线
-而从节点每1s发送 ** replconf ack{offset}**指令,进行判断主节点是否在线,以及增量复制
-增量复制(完整版)
1:主节点判断从节点的runid和offset
2:如果runid不同,直接全量复制
3:如果offset(slave)不在slave,全量复制
4:当offset(slave) = offset(master),不发送
5:当offset(slave)!= offset(master),发送offset(master)和中间部分的内容
3.心跳机制部分注意事项
当slave多数掉线 + 延迟过高,则master则会拒绝同步
如:slave数量少于2个,或者所有slave的延迟都大于等于10秒时,强制关闭master写功能,停止数据同步
这篇关于Redis主从复制的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24Redis资料:新手入门快速指南
- 2024-12-24Redis资料:新手入门教程与实践指南
- 2024-12-24Redis资料:新手入门教程与实践指南
- 2024-12-07Redis高并发入门详解
- 2024-12-07Redis缓存入门:新手必读指南
- 2024-12-07Redis缓存入门:新手必读教程
- 2024-12-07Redis入门:新手必备的简单教程
- 2024-12-07Redis入门:新手必读的简单教程
- 2024-12-06Redis入门教程:从安装到基本操作
- 2024-12-06Redis缓存入门教程:轻松掌握缓存技巧