Redis哨兵集群主库故障数据恢复思路 #yyds干货盘点

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

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

实现思路:

?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.conf2.查看其他两个节点的日志输出,任意一个节点都会输出,表示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.confbind 192.168.81.210port 26379daemonize yeslogfile "/data/redis_cluster/redis_26379/logs/redis_26379.log"dir "/data/redis_cluster/redis_26379/data"sentinel myid ac621a57296db0cead07751a4f0a19c570daa7f9sentinel 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 slaveof1) "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 0OK[root@redis-1 ~]# redis-cli -h 192.168.81.230 -p 6379 config set slave-priority 0OK3.设置恢复的主库的权限优先级高于其他两个节点[root@redis-1 ~]# redis-cli -h 192.168.81.210 -p 6379 config set slave-priority 150OK[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 mymaster5.查看其他节点sentinel输出的日志[root@redis-3 ~]# tail -f /data/redis_cluster/redis_26379/logs/redis_26379.log78223: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 slaveof1) "slaveof"2) ""[root@redis-1 ~]# redis-cli -h 192.168.81.220 -p 6379 config get slaveof1) "slaveof"2) "192.168.81.210 6379"[root@redis-1 ~]# redis-cli -h 192.168.81.230 -p 6379 config get slaveof1) "slaveof"2) "192.168.81.210 6379"5.将权重值调整为默认值

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

[root@redis-1 ~]# redis-cli -h 192.168.81.210 -p 6379 config set slave-priority 100OK[root@redis-1 ~]# redis-cli -h 192.168.81.220 -p 6379 config set slave-priority 100OK[root@redis-1 ~]# redis-cli -h 192.168.81.230 -p 6379 config set slave-priority 100OK 美不美乡中水,亲不亲故乡人。

Redis哨兵集群主库故障数据恢复思路 #yyds干货盘点

相关文章:

你感兴趣的文章:

标签云: