Redis中主、从库宕机如何恢复?
作者 | tamir_2017
来源 | blog.csdn.net/py_tamir/article/details/82555338
1、什么是哨兵
哨兵是对Redis的系统的运行情况的监控,它是一个独立进程,功能有二个:
监控主数据库和从数据库是否运行正常;
主数据出现故障后自动将从数据库转化为主数据库;
2、原理
单个哨兵的架构:
多个哨兵的架构:
多个哨兵,不仅同时监控主从数据库,而且哨兵之间互为监控。
多个哨兵,防止哨兵单点故障。
3、环境
当前处于一主多从的环境中:
4、设置哨兵
启动哨兵进程首先需要创建哨兵配置文件:
vim sentinel.conf
输入内容:
sentinel monitor taotaoMaster 127.0.0.1 6379 1
说明:
taotaoMaster:监控主数据的名称,自定义即可,可以使用大小写字母和“
.-_
”符号127.0.0.1:监控的主数据库的IP
6379:监控的主数据库的端口
1:最低通过票数
启动哨兵进程:
redis-sentinel ./sentinel.conf
由上图可以看到:
哨兵已经启动,它的id为9059917216012421e8e89a4aa02f15b75346d2b7
为master数据库添加了一个监控
发现了2个slave(由此可以看出,哨兵无需配置slave,只需要指定master,哨兵会自动发现slave)
如果您正在学习Spring Boot,推荐一个连载多年还在继续更新的免费教程:http://blog.didispace.com/spring-boot-learning-2x/
5、从宕机及恢复
kill掉2826进程后,30秒后哨兵的控制台输出:
2989:X 05 Jun 20:09:33.509 # +sdown slave 127.0.0.1:6380 127.0.0.1 6380 @ taotaoMaster 127.0.0.1 6379
说明已经监控到slave宕机了,那么,如果我们将3380端口的redis实例启动后,会自动加入到主从复制吗?
2989:X 05 Jun 20:13:22.716 * +reboot slave 127.0.0.1:6380 127.0.0.1 6380 @ taotaoMaster 127.0.0.1 63792989:X 05 Jun 20:13:22.788 # -sdown slave 127.0.0.1:6380 127.0.0.1 6380 @ taotaoMaster 127.0.0.1 6379
可以看出,slave从新加入到了主从复制中。-sdown:
说明是恢复服务。
6、主宕机及恢复
哨兵控制台打印出如下信息:
2989:X 05 Jun 20:16:50.300 # +sdown master taotaoMaster 127.0.0.1 6379 说明master服务已经宕机2989:X 05 Jun 20:16:50.300 # +odown master taotaoMaster 127.0.0.1 6379 #quorum 1/1 2989:X 05 Jun 20:16:50.300 # +new-epoch 12989:X 05 Jun 20:16:50.300 # +try-failover master taotaoMaster 127.0.0.1 6379 开始恢复故障2989:X 05 Jun 20:16:50.304 # +vote-for-leader 9059917216012421e8e89a4aa02f15b75346d2b7 1 投票选举哨兵leader,现在就一个哨兵所以leader就自己2989:X 05 Jun 20:16:50.304 # +elected-leader master taotaoMaster 127.0.0.1 6379 选中leader2989:X 05 Jun 20:16:50.304 # +failover-state-select-slave master taotaoMaster 127.0.0.1 6379 选中其中的一个slave当做master2989:X 05 Jun 20:16:50.357 # +selected-slave slave 127.0.0.1:6381 127.0.0.1 6381 @ taotaoMaster 127.0.0.1 6379 选中63812989:X 05 Jun 20:16:50.357 * +failover-state-send-slaveof-noone slave 127.0.0.1:6381 127.0.0.1 6381 @ taotaoMaster 127.0.0.1 6379 发送slaveof no one命令2989:X 05 Jun 20:16:50.420 * +failover-state-wait-promotion slave 127.0.0.1:6381 127.0.0.1 6381 @ taotaoMaster 127.0.0.1 6379 等待升级master2989:X 05 Jun 20:16:50.515 # +promoted-slave slave 127.0.0.1:6381 127.0.0.1 6381 @ taotaoMaster 127.0.0.1 6379 升级6381为master2989:X 05 Jun 20:16:50.515 # +failover-state-reconf-slaves master taotaoMaster 127.0.0.1 63792989:X 05 Jun 20:16:50.566 * +slave-reconf-sent slave 127.0.0.1:6380 127.0.0.1 6380 @ taotaoMaster 127.0.0.1 63792989:X 05 Jun 20:16:51.333 * +slave-reconf-inprog slave 127.0.0.1:6380 127.0.0.1 6380 @ taotaoMaster 127.0.0.1 63792989:X 05 Jun 20:16:52.382 * +slave-reconf-done slave 127.0.0.1:6380 127.0.0.1 6380 @ taotaoMaster 127.0.0.1 63792989:X 05 Jun 20:16:52.438 # +failover-end master taotaoMaster 127.0.0.1 6379 故障恢复完成2989:X 05 Jun 20:16:52.438 # +switch-master taotaoMaster 127.0.0.1 6379 127.0.0.1 6381 主数据库从6379转变为63812989:X 05 Jun 20:16:52.438 * +slave slave 127.0.0.1:6380 127.0.0.1 6380 @ taotaoMaster 127.0.0.1 6381 添加6380为6381的从库2989:X 05 Jun 20:16:52.438 * +slave slave 127.0.0.1:6379 127.0.0.1 6379 @ taotaoMaster 127.0.0.1 6381 添加6379为6381的从库2989:X 05 Jun 20:17:22.463 # +sdown slave 127.0.0.1:6379 127.0.0.1 6379 @ taotaoMaster 127.0.0.1 6381 发现6379已经宕机,等待6379的恢复
可以看出,目前,6381位master,拥有一个slave为6380.
接下来,我们恢复6379查看状态:
2989:X 05 Jun 20:35:32.172 # -sdown slave 127.0.0.1:6379 127.0.0.1 6379 @ taotaoMaster 127.0.0.1 6381 6379已经恢复服务2989:X 05 Jun 20:35:42.137 * +convert-to-slave slave 127.0.0.1:6379 127.0.0.1 6379 @ taotaoMaster 127.0.0.1 6381 将6379设置为6381的slave
7、配置多个哨兵
vim sentinel.conf
输入内容:
sentinel monitor taotaoMaster1 127.0.0.1 6381 1sentinel monitor taotaoMaster2 127.0.0.1 6381 2
往期推荐
重磅消息:Spring 6 和Spring Boot 3
短信验证码登录流程思路及详细步骤
反996,竟反掉了17%的薪水?!而隔壁的房贷还在涨,怎么就越反越糟糕了呢?
假如 IDEA 也加入防沉迷功能...
说说延时队列实现的几种姿势
喜欢本文欢迎转发,关注我订阅更多精彩
关注我回复「加群」,加入Spring技术交流群
Redis中主、从库宕机如何恢复?相关推荐
- 主域控宕机无法恢复后,如何配置辅助域控继续工作
情况如下: 系统基础结构如下:一个主域控,一个辅助域控且都安装AD与DNS集成区. 如果: 主域控宕机且无法恢复,请问辅助域应做些什么才能替代主域控继续工作? 第一步:在辅助域控上清除主域控AD数 ...
- 恢复Redis中主、从库宕机
1.什么是哨兵 哨兵是对Redis的系统的运行情况的监控,它是一个独立进程,功能有二个: 监控主数据库和从数据库是否运行正常: 主数据出现故障后自动将从数据库转化为主数据库: 2.原理 单个哨兵的架构 ...
- Redis 中哨兵sentinel 机制、从宕机及恢复、主库宕机及恢复解决方案
目录 什么是哨兵 原理 环境 设置哨兵 从宕机及恢复 主宕机及恢复 配置多个哨兵 1.什么是哨兵 哨兵是对Redis的系统的运行情况的监控,它是一个独立进程,功能有二个: 监控主数据库和从数据库是否运 ...
- Mysql从库主键卡住_从库宕机引发的主键冲突
刚刚接到报警短信,从库宕机,马上通知机房重启,在检查MySQL时,发现同步挂了,报主键冲突,询问开发是不是有往里面写数据,回答没有.这就奇怪了,怎么会无缘 刚刚接到报警短信,从库宕机,马上通知机房重启 ...
- Mysql运维管理-一主多从宕机从库切换主库继续和从库同步过程16
1.主库master 宕机 登录从库show processlist\G 看两个线程的更新状态 mysql> show processlist\G *********************** ...
- Redis的KEYS命令引起宕机事件
摘要: 使用 Redis 的开发者必看,吸取教训啊! 原文:Redis 的 KEYS 命令引起 RDS 数据库雪崩,RDS 发生两次宕机,造成几百万的资金损失 作者:陈浩翔 Fundebug经授权转载 ...
- Redis 日志篇:无畏宕机实现高可用的杀手锏
" 特立独行是对的,融入圈子也是对的,重点是要想清楚自己向往怎样的生活,为此愿意付出怎样的代价. " 我们通常将 Redis 作为缓存使用,提高读取响应性能,一旦 Redis 宕机 ...
- Redis 日志篇:无畏宕机快速恢复的杀手锏
" 特立独行是对的,融入圈子也是对的,重点是要想清楚自己向往怎样的生活,为此愿意付出怎样的代价. " 我们通常将 Redis 作为缓存使用,提高读取响应性能,一旦 Redis 宕机 ...
- mysql主库宕机能写吗_MYSQL主主切换(主库宕机)_MySQL
bitsCN.com MYSQL主主切换(主库宕机) 将主主(3307写--3308读)切换 前提:3307宕机 一.修改配置文件.命令行操作 vim /home/bbq/mysql/mysql-33 ...
最新文章
- Nature Method :Rob Knight发布Striped UniFrac算法轻松分析微生物组大数据
- 部署FTP服务器及其管理
- php json设置编码,php实现json编码的方法,phpjson编码
- 结构体指针和数组理解
- [转] NSMapTable 不只是一个能放weak指针的 NSDictionary
- 1.关于QT中json数据处理和密码md5加密
- mysql5.7开启远程连接
- Discuz!NT博客非官方升级!!
- Hibernate之加载策略(延迟加载与即时加载)和抓取策略(fetch)
- JavaEE基础(02):Servlet核心API用法详解
- 昆仑通态触摸屏如何把参数由触摸屏传递到PLC_昆仑通态MCGS触摸屏如何连接Modsim32进行组态仿真...
- opencv双线程图片处理_打开正经图片,你可能会看到一张黄图,这种造假方法能同时骗过 AI 和人眼...
- linux跟踪线程,linux跟踪线程的方法:LWP和strace命令
- SU插件情报局 | Thom Thom:3D文本编辑器
- 今天买了个黑莓7290
- 变上限积分求导公式(通用公式)
- 【java】java如何保留时分秒存取mySql中的datetime类型数据的方法 及 显示时间与数据库存放时间相差n小时的解决方法
- 基于改进正弦余弦算法的函数寻优算法
- Project2019安装步骤
- 支付宝客户端架构解析:iOS 容器化框架初探
热门文章
- 使用common-fileUpload制作文件上传【转】
- 在.NET环境下将报表导出Excel和Word
- 嵌入式http服务器boa 简介
- linux tee 命令 输出的同时写入文件
- SSPI简介 windows专用GSSAPI
- pyinstaller3.5 和 python 3.8 不兼容
- php中curl的详解
- DirectX和DirectShow介绍和区别
- eclipse运行android项目出现The connection to adb is down, and a severe error has occured.的问题
- TCP/IP详解--学习笔记(4)-ICMP协议,ping和Traceroute