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:最低通过票数
- (java项目from www.fhadmin.cn)
启动哨兵进程:
redis-sentinel ./sentinel.conf
由上图可以看到:
- 哨兵已经启动,它的id为9059917216012421e8e89a4aa02f15b75346d2b7
- 为master数据库添加了一个监控
- 发现了2个slave(由此可以看出,哨兵无需配置slave,只需要指定master,哨兵会自动发现slave)
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 6379
2989:X 05 Jun 20:13:22.788 # -sdown slave 127.0.0.1:6380127.0.0.16380 @ taotaoMaster 127.0.0.16379
可以看出,slave从新加入到了主从复制中。-sdown:
说明是恢复服务。
6、主宕机及恢复
哨兵控制台打印出如下信息:
2989:X 05 Jun 20:16:50.300 # +sdown master taotaoMaster 127.0.0.16379 说明master服务已经宕机
2989:X 05 Jun 20:16:50.300 # +odown master taotaoMaster 127.0.0.16379 #quorum 1/1
2989:X 05 Jun 20:16:50.300 # +new-epoch 1
2989:X 05 Jun 20:16:50.300 # +try-failover master taotaoMaster 127.0.0.16379 开始恢复故障
2989:X 05 Jun 20:16:50.304 # +vote-for-leader 9059917216012421e8e89a4aa02f15b75346d2b71 投票选举哨兵leader,现在就一个哨兵所以leader就自己
2989:X 05 Jun 20:16:50.304 # +elected-leader master taotaoMaster 127.0.0.16379 选中leader
2989:X 05 Jun 20:16:50.304 # +failover-state-select-slave master taotaoMaster 127.0.0.16379 选中其中的一个slave当做master
2989:X 05 Jun 20:16:50.357 # +selected-slave slave 127.0.0.1:6381127.0.0.16381 @ taotaoMaster 127.0.0.16379 选中6381
2989: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 等待升级master
2989:X 05 Jun 20:16:50.515 # +promoted-slave slave 127.0.0.1:6381127.0.0.16381 @ taotaoMaster 127.0.0.16379 升级6381为master
2989:X 05 Jun 20:16:50.515 # +failover-state-reconf-slaves master taotaoMaster 127.0.0.16379
2989: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 6379
2989: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 6379
2989: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 6379
2989:X 05 Jun 20:16:52.438 # +failover-end master taotaoMaster 127.0.0.16379 故障恢复完成
2989:X 05 Jun 20:16:52.438 # +switch-master taotaoMaster 127.0.0.16379127.0.0.16381 主数据库从6379转变为6381
2989: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:6379127.0.0.16379 @ taotaoMaster 127.0.0.16381 发现6379已经宕机,等待6379的恢复
可以看出,目前,6381位master,拥有一个slave为6380.
接下来,我们恢复6379查看状态:
2989:X 05 Jun 20:35:32.172 # -sdown slave 127.0.0.1:6379127.0.0.16379 @ taotaoMaster 127.0.0.163816379已经恢复服务
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 1
sentinel monitor taotaoMaster2 127.0.0.1 6381 2
相关推荐
- 主 Redis 宕机时,通常需要手动进行恢复,即在从库中执行 `SLAVEOF NO ONE` 命令使其晋升为主库,然后重启原主库并将其设置为新主库的从库。这一过程复杂且容易出错。 2. **哨兵(Sentinel)系统** - 哨兵是一...
2. **持久化**: Redis提供了RDB(快照)和AOF(追加日志)两种持久化策略,确保在系统宕机后能够恢复数据。 3. **事务**: Redis支持事务,可以一次执行多个操作,并保证原子性。 4. **发布/订阅**: Redis的Pub/Sub...
然而,由于Redis是内存存储,一旦服务器宕机或非正常关闭,未保存的数据可能会丢失。因此,确保Redis在崩溃后能够恢复数据是非常关键的。 Redis提供了两种主要的数据持久化方法:RDB(Redis Database Backup)和AOF...
如果从Redis宕机,重新启动后会自动加入到主从架构中并自动完成同步数据。Redis 2.8版本后实现了增量复制,即从库断开期间主库变化不大时,从库再次启动后主库不会将所有数据做RDB操作,而是进行增量更新。 **2. 主...
1. 从 Redis 宕机 a) 这个相对而言比较简单,在 Redis 中从库重新启动后会自动加入到主从架构中,自动完成同步数据; b) 问题? 如果从库在断开期间,主库的变化不大,从库再次启动后,主库依然会将所有的数据做 ...
1. 在主服务器的配置文件中,需要修改appendonly为yes,以确保数据在Redis宕机后能够恢复。另外,maxmemory参数用来设置Redis可以使用的最大内存,防止数据过多造成内存溢出。 2. 在从服务器的配置文件中,需要设置...
例如,当Master Redis宕机后,新主Redis的启动流程,以及原Master Redis恢复后的处理方式。 具体到实验环境的搭建,文档提及了如何启动镜像、安装依赖包以及如何安装Tcl,并且详细介绍了如何配置Redis的主从模式和...
在单机模式下,Redis服务器一旦宕机,将会导致服务不可用,哨兵模式就是为了克服这个问题而设计的。它监控Redis主从节点的状态,并在主节点出现问题时自动进行故障转移,将从节点提升为主节点,保证服务的连续性。 ...
- **从节点宕机**:从节点重启后,会自动与主节点同步数据。自Redis 2.8起,支持断线后的增量复制。 - **主节点宕机**: - 从节点执行`SLAVEOF NO ONE`成为新的主节点。 - 原主节点恢复后,执行`SLAVEOF`命令设置...
49-redis-redis的主从复制-读写分离、主机宕机.avi 50-redis-redis的主从复制-从机宕机.avi 51-redis-redis的主从复制-主机宕机、从机上位.avi 52-redis-redis的主从复制-主机恢复、天堂变地狱.avi 53-redis-redis的...
4. 如果网络中断或Master宕机,Slave可以在网络恢复或新的Master被选举出来后,继续复制操作。 Redis哨兵(Sentinel)模式是一种高可用性解决方案,它可以监控主从节点的状态,自动进行故障检测和故障转移。当检测...
Redis 是一款高性能的键值存储系统,常用于缓存和数据...根据业务需求和对数据完整性的要求,可以选择适合的持久化策略,以确保在Redis宕机时尽可能减少数据丢失。理解这些核心概念对于正确地使用和优化Redis至关重要。
Coherence的副本策略能快速响应数据丢失,但可能需要更复杂的故障检测和恢复机制。在大规模故障场景下,Coherence的高可用性设计可能更占优势,因为它能够容忍更多节点的故障而不影响服务。 总的来说,选择Redis...
在Redis中, Sentinel系统可以确保即使在主服务器宕机的情况下,数据仍然能够被正确访问,通过将流量重新路由到备用服务器,从而实现服务的连续性。本教程将指导您在Ubuntu环境下设置Redis Sentinel模式,并允许本地...
Redis基于内存运行,数据持久化通过RDB(快照)和AOF(Append Only File)两种方式实现,确保即使在服务器宕机后也能恢复数据。RDB是定期保存数据库的一个快照,而AOF则记录每次写操作,当需要恢复时,可以根据这些...
然而,单一Redis实例存在单点故障的风险,一旦宕机,可能导致业务中断,影响用户体验。因此,构建Redis高可用集群是必要的。 **二、Keepalived与Redis结合的架构** 1. **主备模式(Master-Slave)**:在Redis中,...
1. **杀死主服务器**:通过`kill 6010`命令模拟主服务器宕机情况。 - 在此之后,哨兵会检测到主服务器的故障,并从剩余的从服务器中选择一个新的主服务器。 - 可以通过`info Replication`命令在新的主服务器上验证...