如果主从复制架构中出现宕机的情况,需要分情况看:
1. 从Redis宕机
相对而言比较简单,Redis从库重新启动后会自动加入到主从架构中,自动完成同步数据;
存在的问题是,如果从库在断开期间,主库变化不大,从库再启动后,主库依然会将所有的数据做RDB操作吗?还是增量更新?(从库在有做持久化的前提下)
不会的,因为在Redis2.8版本后酒实现了,主从断线后恢复的情况下实现增量复制。
2. 主Redis宕机
相对而言复杂一些,需要以下两个步骤才能完成
第一步:在从数据库中执行SLAVE ON ONE 命令,断开主从关系并且提升为主库继续服务。
第二步:将主库重新启动后,执行SLAVEOF 命令,将其设置为其他库的从库,这是数据就能更新回来。
从上看出,主Redis宕机恢复较麻烦,并且容易出错,有没有更好的解决办法呢?当然有,Redis的哨兵(sentinel)功能
哨兵(Sentinel)
什么是哨兵
顾名思义,哨兵的作用就是对Redis的系统的运行情况进行监控,他是一个独立的进程。他的功能有两个:
1. 监控主库和从库是否运行正常
2. 主库出现故障后自动将从库转化为主库
原理:
单个哨兵的架构:
多个哨兵的架构
多个哨兵,不仅同时监控主从数据库,而且哨兵之间互为监控。
环境处于一主多从的环境中
配置哨兵
启动哨兵进程首选需要创建哨兵配置文件;
vi sentinel.conf
启动哨兵:
sentinel monitor RedisMaster 127.0.0.1 6379 1
说明:
MyMonitorMaster:监控主数据库的名称 ,自定义即可,可以使用大小姐字母和“.-_”符号
127.0.0.1:监控的主数据库的IP
6379:监控主数据库的端口
1:最低通过票数
原文:https://www.cnblogs.com/fubinhnust/p/11958813.html