1主redis宕掉后,发现db02自动变为主库:
[root@db01 ~]# pkill redis
[root@db01 ~]# redis-cli -h db03 -p 6379 set k1 v1
(error) READONLY You can‘t write against a read only slave.
[root@db01 ~]# redis-cli -h db02 -p 6379 set k1 v1
OK
[root@db01 ~]#
2修复旧主库redis上线(先启动redis再启动哨兵):
[root@db01 ~]# redis-server /opt/redis_cluster/redis_6379/conf/redis_6379.conf
[root@db01 ~]# ps -ef|grep redis
root 1029 1 0 17:44 ? 00:00:00 redis-server 10.0.0.201:6379
root 1033 953 0 17:45 pts/0 00:00:00 grep --color=auto redis
[root@db01 ~]# redis-sentinel /opt/redis_cluster/redis_26379/conf/redis_26379.conf
[root@db01 ~]# ps -ef|grep redis
root 1029 1 0 17:44 ? 00:00:00 redis-server 10.0.0.201:6379
root 1035 1 1 17:46 ? 00:00:00 redis-sentinel 10.0.0.201:26379 [sentinel]
root 1056 953 13 17:47 pts/0 00:00:00 grep --color=auto redis
3修复db01上线后,发现配置文件自动更新了,进一步检查发现db01已经变为了新主库的从库
[root@db01 ~]# cat /opt/redis_cluster/redis_26379/conf/redis_26379.conf
bind 10.0.0.201
port 26379
daemonize yes
logfile "/opt/redis_cluster/redis_26379/logs/redis_26379.log"
dir "/data/redis_cluster/redis_26379"
sentinel myid 32683a0682eb6db5bbb180b825fed609ed46c5c8
sentinel monitor mymaster 10.0.0.202 6379 2
sentinel down-after-milliseconds mymaster 3000
sentinel failover-timeout mymaster 18000
# Generated by CONFIG REWRITE
sentinel config-epoch mymaster 1
sentinel leader-epoch mymaster 0
sentinel known-slave mymaster 10.0.0.203 6379
sentinel known-slave mymaster 10.0.0.201 6379
sentinel known-sentinel mymaster 10.0.0.203 26379 ed81a1b04c2c9d94cd9fbbab3bd8a843acc0b226
sentinel known-sentinel mymaster 10.0.0.202 26379 c935a3cf1827195dbf9437ec1f12fba40194d0c8
sentinel current-epoch 1
[root@db01 ~]# redis-cli
127.0.0.1:6379> config get slaveof
1) "slaveof"
2) "10.0.0.202 6379"
127.0.0.1:6379>
4因为db01性能最好,我还想让db01变为主
谁权重大,谁就是主,默认每个节点的权重都是100,所以就选谁的id大谁就是主
第一种解决方案:
(1)在db02和db03中操作,把db02和db03的权重变小
[root@db02 ~]# redis-cli
127.0.0.1:6379> config get slave-priority
1) "slave-priority"
2) "100"
127.0.0.1:6379> config set slave-priority 0
OK
127.0.0.1:6379> config get slave-priority
1) "slave-priority"
2) "0"
127.0.0.1:6379>
(2)在db01中操作,让哨兵执行新的选主操作
[root@db01 ~]# redis-cli -h db01 -p 26379 Sentinel failover mymaster
OK
[root@db01 ~]#
(3)分别在db02和db03中操作,检查是否db01变成了主库:
127.0.0.1:6379> config get slaveof
1) "slaveof"
2) "10.0.0.201 6379"
127.0.0.1:6379>
(4)为了保证下次故障时哨兵还能自动切换选主,我们需要将db02和db03的权重恢复默认值:
127.0.0.1:6379> config set slave-priority 100
OK
原文:https://www.cnblogs.com/tyjs09/p/14639681.html