redis主从和哨兵原理-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

redis主从和哨兵原理

简介: redis主从和哨兵

redis主从原理

一、全量复制

主从全量复制:核心:将主节点最新的rdb文件和缓冲区的数据同步给从节点
1、从节点首次启动,进行全量同步。向主节点发送psync命令
2、主节点收到psync命令后,执行bgsave生成最新的rdb快照数据
3、主节点将rdb文件发送给从节点
4、在第2步中主节点生成rdb快照的时候(假如生成快照时间1s,期间有100条命令进入到主节点)那么发送给从节点的rdb文件不是最新的(没有那100条命令)
5、主节点有一个缓冲区,专门存放最近的命令(默认1M)。也就是说主节点不仅给从节点发送rdb快照,同时也将缓冲区的数据发送给从节点
6、将rdb和缓冲区的数据合并生成一个完整的rdb并替换从节前之前的快照文件

疑问:
1、redis没开启rdb怎么进行同步?
答案:跟持久化方式没有关系,同步是主节点接受到从节点的psync命令后,主动执行bgsave生成的rdb【主动生成主节点的全量数据rdb】
2、什么时间进行主从复制?从节点首次启动的时候

二、部分复制

1、从节点连接断开,重新连主节点
2、向主节点发送psync(offset)命令,offset代表从节点的rdb文件中最后一条命令的偏移量
3、如果从节点发送的offset在主节点的缓冲区中,那么master会将缓存中从slave的offset之后的数据一次性同步给从节点,否则会全量同步

三、主从切换

当master挂了,需要手动修改很多,修改slave的replicaof 新的主节点,然后重启。
还要改java程序的ip。需要运维进行master挂了自动切换master

redis哨兵原理

哨兵不提供读写服务,主要用来监控redis示例节点
1、客户端第一次访问哨兵,哨兵拿到master节点后告知客户端
2、客户端访问master节点,如果master节点挂了则会在多个slave节点中选择一个新的master节点,此时哨兵已监控到master节点的变化,然后告诉客户端新的master节点ip,客户端接收到新的master的ip,下次访问则会访问新的master的ip

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章
最新文章
相关文章