`
m17189363841
  • 浏览: 14537 次
文章分类
社区版块
存档分类
最新评论

Redis宕机 快速恢复

 
阅读更多

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  添加63806381的从库

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  添加63796381的从库

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高级.docx

    - 主 Redis 宕机时,通常需要手动进行恢复,即在从库中执行 `SLAVEOF NO ONE` 命令使其晋升为主库,然后重启原主库并将其设置为新主库的从库。这一过程复杂且容易出错。 2. **哨兵(Sentinel)系统** - 哨兵是一...

    RedisStudio Redis监控工具

    2. **持久化**: Redis提供了RDB(快照)和AOF(追加日志)两种持久化策略,确保在系统宕机后能够恢复数据。 3. **事务**: Redis支持事务,可以一次执行多个操作,并保证原子性。 4. **发布/订阅**: Redis的Pub/Sub...

    24_怎么保证redis挂掉之后再重启数据可以进行恢复?.zip

    然而,由于Redis是内存存储,一旦服务器宕机或非正常关闭,未保存的数据可能会丢失。因此,确保Redis在崩溃后能够恢复数据是非常关键的。 Redis提供了两种主要的数据持久化方法:RDB(Redis Database Backup)和AOF...

    Redis集群详解

    如果从Redis宕机,重新启动后会自动加入到主从架构中并自动完成同步数据。Redis 2.8版本后实现了增量复制,即从库断开期间主库变化不大时,从库再次启动后主库不会将所有数据做RDB操作,而是进行增量更新。 **2. 主...

    Redis3.0集群

    1. 从 Redis 宕机 a) 这个相对而言比较简单,在 Redis 中从库重新启动后会自动加入到主从架构中,自动完成同步数据; b) 问题? 如果从库在断开期间,主库的变化不大,从库再次启动后,主库依然会将所有的数据做 ...

    ubuntu redis的手动安装与配置

    1. 在主服务器的配置文件中,需要修改appendonly为yes,以确保数据在Redis宕机后能够恢复。另外,maxmemory参数用来设置Redis可以使用的最大内存,防止数据过多造成内存溢出。 2. 在从服务器的配置文件中,需要设置...

    redis 高可用详细文档

    例如,当Master Redis宕机后,新主Redis的启动流程,以及原Master Redis恢复后的处理方式。 具体到实验环境的搭建,文档提及了如何启动镜像、安装依赖包以及如何安装Tcl,并且详细介绍了如何配置Redis的主从模式和...

    Redis哨兵模式配置文件

    在单机模式下,Redis服务器一旦宕机,将会导致服务不可用,哨兵模式就是为了克服这个问题而设计的。它监控Redis主从节点的状态,并在主节点出现问题时自动进行故障转移,将从节点提升为主节点,保证服务的连续性。 ...

    Redis集群.docx

    - **从节点宕机**:从节点重启后,会自动与主节点同步数据。自Redis 2.8起,支持断线后的增量复制。 - **主节点宕机**: - 从节点执行`SLAVEOF NO ONE`成为新的主节点。 - 原主节点恢复后,执行`SLAVEOF`命令设置...

    Redis从入门到精通视频.rar

    49-redis-redis的主从复制-读写分离、主机宕机.avi 50-redis-redis的主从复制-从机宕机.avi 51-redis-redis的主从复制-主机宕机、从机上位.avi 52-redis-redis的主从复制-主机恢复、天堂变地狱.avi 53-redis-redis的...

    redis工作原理及单机主从集群版安装使用说明书

    4. 如果网络中断或Master宕机,Slave可以在网络恢复或新的Master被选举出来后,继续复制操作。 Redis哨兵(Sentinel)模式是一种高可用性解决方案,它可以监控主从节点的状态,自动进行故障检测和故障转移。当检测...

    redis架构分析.docx

    Redis 是一款高性能的键值存储系统,常用于缓存和数据...根据业务需求和对数据完整性的要求,可以选择适合的持久化策略,以确保在Redis宕机时尽可能减少数据丢失。理解这些核心概念对于正确地使用和优化Redis至关重要。

    Redis和Coherence高可用比对测试报告.docx

    Coherence的副本策略能快速响应数据丢失,但可能需要更复杂的故障检测和恢复机制。在大规模故障场景下,Coherence的高可用性设计可能更占优势,因为它能够容忍更多节点的故障而不影响服务。 总的来说,选择Redis...

    redis哨兵模式搭建.rar

    在Redis中, Sentinel系统可以确保即使在主服务器宕机的情况下,数据仍然能够被正确访问,通过将流量重新路由到备用服务器,从而实现服务的连续性。本教程将指导您在Ubuntu环境下设置Redis Sentinel模式,并允许本地...

    redis-2.8-win.zip

    Redis基于内存运行,数据持久化通过RDB(快照)和AOF(Append Only File)两种方式实现,确保即使在服务器宕机后也能恢复数据。RDB是定期保存数据库的一个快照,而AOF则记录每次写操作,当需要恢复时,可以根据这些...

    keepalived 配置redis高可用

    然而,单一Redis实例存在单点故障的风险,一旦宕机,可能导致业务中断,影响用户体验。因此,构建Redis高可用集群是必要的。 **二、Keepalived与Redis结合的架构** 1. **主备模式(Master-Slave)**:在Redis中,...

    redis哨兵的使用

    1. **杀死主服务器**:通过`kill 6010`命令模拟主服务器宕机情况。 - 在此之后,哨兵会检测到主服务器的故障,并从剩余的从服务器中选择一个新的主服务器。 - 可以通过`info Replication`命令在新的主服务器上验证...

Global site tag (gtag.js) - Google Analytics