Redis哨兵集群主库故障数据恢复

本文涉及的产品
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Redis 版,经济版 1GB 1个月
简介: Redis哨兵集群主库故障数据恢复

Redis哨兵集群主库故障数据恢复

@[TOC]

当主库修复后重新上线首先通过哨兵知道谁是当前的主库,然后就会去找主库同步数据,并且会自动修改配置文件,当数据同步后,想恢复的主库重新成为主库则需要把主库的权重调高,然后重新选举,这时原来的主库就能成为新的主库,调整完再将主库的权重值调成默认的

实现思路:

​ 1.将故障的主库重新恢复

​ 2.查看当前的主从状态,验证由于主库宕机,与从库产生的数据是否同步

​ 3.调整权重值

​ 4.重新选举,使原来的主库变成新的主库

​ 5.恢复的主库重新成为新的主库后,要把调整的权重值全部变成默认值

主库可以重新加入哨兵集群的前提:剩余的两个节点必须有一个是master,且这两个节点配置文件已经指定了新的master地址

1.恢复损坏的主库

1.恢复主库
[root@redis-1 ~]# redis-server /data/redis_cluster/redis_6379/conf/redis_6379.conf 
[root@redis-1 ~]# 
[root@redis-1 ~]# redis-sentinel /data/redis_cluster/redis_26379/conf/redis_26379.conf

2.查看其他两个节点的日志输出,任意一个节点都会输出,表示redis-1已经加入集群了
tail -f /data/redis_cluster/redis_26379/logs/redis_26379.log 
78223:X 30 Jan 12:05:09.073 # -sdown sentinel ac621a57296db0cead07751a4f0a19c570daa7f9 192.168.81.210 26379 @ mymaster 192.168.81.220 6379,

在这里插入图片描述

2.查看恢复的主库redis-1配置文件

[root@redis-1 ~]# cat /data/redis_cluster/redis_26379/conf/redis_26379.conf
bind 192.168.81.210
port 26379
daemonize yes
logfile "/data/redis_cluster/redis_26379/logs/redis_26379.log"
dir "/data/redis_cluster/redis_26379/data"
sentinel myid ac621a57296db0cead07751a4f0a19c570daa7f9
sentinel monitor mymaster 192.168.81.220 6379 2

可以看到已经自动修改为当前库的地址

在这里插入图片描述

3.查看恢复的主库redis-1的主从关系

1.已经同步了当前主库redis-2
[root@redis-1 ~]# redis-cli 
127.0.0.1:6379> CONFIG GET slaveof
1) "slaveof"
2) "192.168.81.220 6379"

2.已经可以看到主库宕机阶段,从库变为主库产生的最新数据
127.0.0.1:6379> get gzzy_test
"guzhangzhuanyi"

4.配置恢复的主库的权重值,使其重新选举为主库

哨兵的选举首先是

​ 1.查看谁的权重优先级比较高的当选为主库

​ 2.权重优先级一致,就比较id,id大的当选

1.查看其他两个节点的权重值
[root@redis-1 ~]# redis-cli -h 192.168.81.220 -p 6379 config get slave-priority 
1) "slave-priority"
2) "100"
 
[root@redis-1 ~]# redis-cli -h 192.168.81.230 -p 6379 config get slave-priority 
1) "slave-priority"
2) "100"

2.将其他两个节点的权重值改为0
[root@redis-1 ~]# redis-cli -h 192.168.81.220 -p 6379 config set slave-priority 0
OK
[root@redis-1 ~]# redis-cli -h 192.168.81.230 -p 6379 config set slave-priority 0
OK

3.设置恢复的主库的权限优先级高于其他两个节点
[root@redis-1 ~]# redis-cli -h 192.168.81.210 -p 6379 config set slave-priority 150
OK
[root@redis-1 ~]# redis-cli -h 192.168.81.210 -p 6379 config get slave-priority 
1) "slave-priority"
2) "150"


4.重新选举
[root@redis-1 ~]# redis-cli -h 192.168.81.210 -p 26379 sentinel failover mymaster


5.查看其他节点sentinel输出的日志
[root@redis-3 ~]# tail -f /data/redis_cluster/redis_26379/logs/redis_26379.log
78223:X 30 Jan 12:32:27.591 * +convert-to-slave slave 192.168.81.220:6379 192.168.81.220 6379 @ mymaster 192.168.81.210 6379

根据日志的输出,可以明显的看出调整了redis-1的权重优先级为150,比其他两个节点的高,因此redis-1就变成了主库

在这里插入图片描述

查看节点的主从复制关系

主库没有同步的库,其他两个节点都同步redis-1的主库

[root@redis-1 ~]# redis-cli -h 192.168.81.210 -p 6379 config get slaveof
1) "slaveof"
2) ""

[root@redis-1 ~]# redis-cli -h 192.168.81.220 -p 6379 config get slaveof
1) "slaveof"
2) "192.168.81.210 6379"

[root@redis-1 ~]# redis-cli -h 192.168.81.230 -p 6379 config get slaveof
1) "slaveof"
2) "192.168.81.210 6379"

5.将权重值调整为默认值

将权重值调整为默认值,方便下次选举时作为判断条件

[root@redis-1 ~]# redis-cli -h 192.168.81.210 -p 6379 config set slave-priority 100
OK
[root@redis-1 ~]# redis-cli -h 192.168.81.220 -p 6379 config set slave-priority 100
OK
[root@redis-1 ~]# redis-cli -h 192.168.81.230 -p 6379 config set slave-priority 100
OK
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
2天前
|
缓存 负载均衡 NoSQL
Redis系列学习文章分享---第十四篇(Redis多级缓存--封装Http请求+向tomcat发送http请求+根据商品id对tomcat集群负载均衡)
Redis系列学习文章分享---第十四篇(Redis多级缓存--封装Http请求+向tomcat发送http请求+根据商品id对tomcat集群负载均衡)
8 1
|
2天前
|
存储 监控 NoSQL
Redis系列学习文章分享---第十二篇(搭建哨兵集群+RedisTemplate连接哨兵+搭建分片集群+-散列插槽+集群伸缩 +故障转移+RedisTemplate访问分片集群)
Redis系列学习文章分享---第十二篇(搭建哨兵集群+RedisTemplate连接哨兵+搭建分片集群+-散列插槽+集群伸缩 +故障转移+RedisTemplate访问分片集群)
7 0
|
2天前
|
NoSQL Redis
Redis系列学习文章分享---第五篇(Redis实战篇--优惠券秒杀,全局唯一id 添加优惠券 实现秒杀下单 库存超卖问题分析 乐观锁解决超卖 实现一人一单功能 集群下的线程并发安全问题)
Redis系列学习文章分享---第五篇(Redis实战篇--优惠券秒杀,全局唯一id 添加优惠券 实现秒杀下单 库存超卖问题分析 乐观锁解决超卖 实现一人一单功能 集群下的线程并发安全问题)
5 0
|
5天前
|
存储 NoSQL 算法
Redis集群
Redis集群
10 0
|
5天前
|
存储 缓存 NoSQL
redis的集群架构
规避方法可以在redis配置里加上参数(这种方法不可能百分之百的避免数据丢失,参数集群leader选举机制)
11 0
|
14天前
|
存储 运维 NoSQL
Redis Cluster集群模式部署
Redis Cluster集群模式部署
41 4
|
16天前
|
监控 NoSQL 算法
手把手教你如何搭建redis集群(二)
手把手教你如何搭建redis集群(二)
28 1
|
16天前
|
存储 NoSQL 容灾
手把手教你如何搭建redis集群(一)
手把手教你如何搭建redis集群(一)
35 1
|
1月前
|
负载均衡 监控 NoSQL
Redis的几种主要集群方案
【5月更文挑战第15天】Redis集群方案包括主从复制(基础,读写分离,手动故障恢复)、哨兵模式(自动高可用,自动故障转移)和Redis Cluster(官方分布式解决方案,自动分片、容错和扩展)。此外,还有Codis、Redisson和Twemproxy等工具用于代理分片和负载均衡。选择方案需考虑应用场景、数据量和并发需求,权衡可用性、性能和扩展性。
224 2
|
1月前
|
存储 监控 负载均衡
保证Redis的高可用性是一个涉及多个层面的任务,主要包括数据持久化、复制与故障转移、集群化部署等方面
【5月更文挑战第15天】保证Redis高可用性涉及数据持久化、复制与故障转移、集群化及优化策略。RDB和AOF是数据持久化方法,哨兵模式确保故障自动恢复。Redis Cluster实现分布式部署,提高负载均衡和容错性。其他措施包括身份认证、多线程、数据压缩和监控报警,以增强安全性和稳定性。通过综合配置与监控,可确保Redis服务的高效、可靠运行。
205 2