redis基础—主从同步原理与配置以及哨兵模式

一:redis的主从同步原理

1.slave节点发送同步请求到master节点

2.slave节点通过master节点的认证开始进行同步

3.认证结束后,master节点开启bgsave进程

4.master节点会开启bgsave进程发送内存快照rbd到slave节点,在此过程中是异步操作,也就是说master节点仍然可以进行写入动作

5.slave节点收到rdb后首先清空自己的所有数据(flushall)

6.slave节点加载内存快照rdb并进行数据恢复

7.在master和slave同步过程中masteri还会开启新的bgsave进程把没有同步的数据进行缓存

然后诵讨自有的replactionfeedslave函数把未诵讨内存快照发动到slave的教据一条一条写入到slave中

二:redis的主从同步部署

准备三台虚拟机

172.25.254.10(master)

172.25.254.20(slave)

172.25.254.30(slave)

172.25.254.10(master)

配置主从同步,修改master节点的配置文件,关闭保活模式

root@node1 \~\]# vim /etc/redis/6379.conf

重新启动redis

root@node1 \~\]# /etc/init.d/redis_6379 restart

172.25.254.20(slave)

root@node2 \~\]# vim /etc/redis/6379.conf

将安全功能关闭

重新启动redis

root@node2 \~\]# /etc/init.d/redis_6379 restart

172.25.254.30(slave)

root@node3 \~\]# vim /etc/redis/6379.conf

将安全功能关闭

重新启动redis

root@node3 \~\]# /etc/init.d/redis_6379 restart

检测

172.25.254.10上启动redis主机查看使用info查询

root@node1 \~\]# redis-cli 127.0.0.1:6379\> info replication

redis主从同步成功

三:redis的哨兵

什么是哨兵模式?

Sentinel进程是用于监控redis集群中Master主服务器工作状态,在Master主服务器发生故障的时候,可以实现Master和Slave服务器的切换,保证系统的高可用。

每个哨兵(Sentinel)进程会向其它哨兵(Sentinel)、Master,Slave定时发送消息,以确认对方是否"活"着,如果发现对方在指定配置时间(此项可配置)内未得到回应,则暂时认为对方已离线,也就是所谓的""主观认为宕机"(主观:是每个成员都具有的独自的而且可能相同也可能不同的意识),英文名称:Subjective Down,简称SDOWN

有主观宕机,对应的有客观宕机。当"哨兵群"中的多数Sentineli进程在对Master:主服务器做出SDOWN的判断,并且通过SENTINEL is-master-down-by-addr命令互相交流之后,得出的Master Server下线判断,这种方式就是"客观宕机'"(客观:是不依赖于某种意识而已经实际存在的一切事物),英文名称是:Objectively Down,简称ODOWN

通过一定的vote算法,从剩下的slave从服务器节点中,选一台提升为Master服务器节点,然后自动修改相关配置,并开启故障转移(failover)

Sentinel机制可以解决master和slave角色的自动切换问题,但单个Master的性能瓶颈问题无法解决,类似于MySQL中的MHA功能

sentinel中的三个定时任务

1.每10秒每个sentinel对master和slave执行info

发现slave节点

确认主从关系

2.每2秒每个sentineli通过master节点的channel交换信息(pub/sub)

通过sentine:hello频道交互

交互对节点的"看法"和自身信息

3.每1秒每个sentinel对其他sentinel和redis执行ping

哨兵实验部署

注意:在所有阶段中关闭protected-mode no

在172.25.254.10主机上

编辑sentinel.conf配置文件信息

root@node1 redis-7.4.0\]# cp sentinel.conf /etc/redis/ \[root@node1 \~\]# vim /etc/redis/sentinel.conf

指定监控对象为master的IP地址

将配置文件信息传输到172.25.254.20和172.25.254.30主机上

root@node1 \~\]# scp /etc/redis/sentinel.conf root@172.25.254.20:/etc/redis/sentinel.conf \[root@node1 \~\]# scp /etc/redis/sentinel.conf root@172.25.254.30:/etc/redis/sentinel.conf

由于哨兵模式会更改配置文件的内容,对底下文件进行备份(10,20和30主机都进行)

root@node1 \~\]# cd /etc/redis/ \[root@node1 redis\]# ls \[root@node1 redis\]# cp sentinel.conf sentinel.conf.bak

启动哨兵模式

root@node1 redis\]# redis-sentinel /etc/redis/sentinel.conf

相关推荐
瀚高PG实验室20 分钟前
逻辑导入导出(pg_dump/pg_restore)用法2-导入到不同的schema或tablespace
数据库·瀚高数据库
whyfail25 分钟前
前端数据存储新选择:IndexedDB与Dexie.js技术指南
前端·javascript·数据库
煎蛋学姐28 分钟前
SSM校园快递系统q9061(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·开题报告·java 开发·校园信息化·ssm 框架
元亓亓亓38 分钟前
考研408--操作系统--day11--文件管理&逻辑物理结构&目录&存储空间管理
数据库·考研·文件管理·408
cly11 小时前
Ansible自动化(十三):调试与优化
数据库·自动化·ansible
QQ_4376643141 小时前
redis相关命令讲解及原理
数据库·redis·缓存
萤丰信息1 小时前
开启园区“生命体”时代——智慧园区系统,定义未来的办公与生活
java·大数据·运维·数据库·人工智能·生活·智慧园区
TDengine (老段)2 小时前
TDengine Rust 连接器进阶指南
大数据·数据库·物联网·rust·时序数据库·tdengine·涛思数据
二哈喇子!2 小时前
MySQL数据库操作命令【SQL语言】
数据库·sql·视图与索引
China_Yanhy2 小时前
AWS S3 深度配置指南:每一栏每个选项有什么作用
java·数据库·aws