Redis进阶--哨兵

目录

一、引言

二、介绍

三、哨兵的核心功能

四、使用docker进行单个主机redis主从复制哨兵操作

五、哨兵重新选取主节点的流程

1.主观下线

2.客观下线

3.主节点挂了

4.挑选新主节点

六、总结


一、引言

如果主从复制中,主节点挂了,从节点会迷茫,因为其不能修改数据,并且其不能自动地升级成主节点,不能替换原有主节点对应的角色,此时redis的哨兵机制就能使从节点自动变成主节点。

二、介绍

从节点和主节点断开连接的情况

1.从节点主动和主节点断开连接:

slaveof no one:从节点自己晋升为主节点

2.主节点挂了:从节点不会自动晋升为主节点,需要人工进行干预,这就是哨兵模式的作用。

哨兵机制是通过独立的进程来体现的,redis-sentinel不负责存储数据,只是对其他的redis-server进程起到监控的效果。

通常哨兵节点也会搞成一个集合,防止单个哨兵节点挂了。

通过tcp长连接,定期发送心跳包。

1.如果主节点挂了,哨兵就会发挥作用,只有一个哨兵节点发现主节点挂了还不够,需要多个哨兵节点进行验证防止出现误判。

2.主节点挂了之后,哨兵节点就会推举处一个leader,由这个leader负责从剩余的从节点挑选出一个作为新的主节点。

3.挑选出新的主节点之后,哨兵节点就会自动控制该被选中的节点,执行slaveof no one,并且控制其他从节点,修改slaveof到新的主节点上。

4.哨兵节点会自动通知客户端,告知新的主节点是谁,之后客户端进行写操作就会在新的主节点上进行。

三、哨兵的核心功能

1.监控

2.自动的故障转移

3.通知

四、使用docker进行单个主机redis主从复制哨兵操作

日志出现

sdown:主观下线,本哨兵节点认为主节点挂了

odown:客观下线,好几个哨兵认为主节点挂了

五、哨兵重新选取主节点的流程

1.主观下线

哨兵节点通过心跳包判定redis服务器是否正常工作,但也会出现网络波动的影响,单方面认为redis节点挂了。

2.客观下线

多个哨兵节点认为主节点挂了

3.主节点挂了

哨兵节点会主动投选出一个leader,让leader去选取一个从节点作为主节点,这个leader是由节点之间投票投出来的。

4.挑选新主节点

1.优先级:redis数据节点在配置文件中都会有一个优先级,优先级高的从节点就会成为主节点

2.offset:offset最大的就胜出,同步的数据越大,说明从节点的数据和主节点就越接近

3.runid:随机生成的一串数字,大小就随机了

六、总结

哨兵是一个集合,主要用于在主节点挂了之后,自动选举出一个leader,之后由leader选举出新的主节点。但是哨兵最好是奇数个,防止选举leader的时候出现平票的情况。

注意:哨兵+主从复制的模式,解决的问题是"提高可用性",不能解决"数据极端情况下写丢失"的问题。

相关推荐
科技小花2 小时前
数据治理平台架构演进观察:AI原生设计如何重构企业数据管理范式
数据库·重构·架构·数据治理·ai-native·ai原生
一江寒逸2 小时前
零基础从入门到精通MySQL(中篇):进阶篇——吃透多表查询、事务核心与高级特性,搞定复杂业务SQL
数据库·sql·mysql
D4c-lovetrain2 小时前
linux个人心得22 (mysql)
数据库·mysql
阿里小阿希3 小时前
CentOS7 PostgreSQL 9.2 升级到 15 完整教程
数据库·postgresql
荒川之神3 小时前
Oracle 数据仓库雪花模型设计(完整实战方案)
数据库·数据仓库·oracle
做个文艺程序员3 小时前
MySQL安全加固十大硬核操作
数据库·mysql·安全
不吃香菜学java3 小时前
Redis简单应用
数据库·spring boot·tomcat·maven
一个天蝎座 白勺 程序猿4 小时前
Apache IoTDB(15):IoTDB查询写回(INTO子句)深度解析——从语法到实战的ETL全链路指南
数据库·apache·etl·iotdb
不知名的老吴4 小时前
Redis的延迟瓶颈:TCP栈开销无法避免
数据库·redis·缓存
YOU OU4 小时前
三大范式和E-R图
数据库