Redis的哨兵模式第一次主从切换成功,再次进行主从切换就不行了,怎么破?

本文探讨了Redis在特定配置下主从切换的问题,特别是在使用Sentinel时遇到的nogoodslave错误。文章提供了确保主从能多次顺利切换的配置建议。

第一次主挂掉,将从切为主成功;然后重启挂掉的主,哨兵提示被识别为从;然后再次关闭现在的主,从库切换就失败了,一直提示no good slave,请问要如何设置,让第二次主从也能顺利切换?

我在centOS7.4上用redis 4.0.6没有碰到这个问题,可以多次切换。感觉这个问题应该是配置的问题。

当一个master配置为需要密码才能连接时,客户端和slave在连接时都需要提供密码。

master通过requirepass设置自身的密码,不提供密码无法连接到这个master。
slave通过masterauth来设置访问master时的密码。

当使用了sentinel时,由于一个master可能会变成一个slave,一个slave也可能会变成master,所以需要在master 和slave的配置文件中同时都要设置上述两个配置项,才能多次切换,否则就有可能只能切换一次。


### Redis Sentinel 主从切换的工作原理 在Redis哨兵模式下,主从切换机制旨在提高数据库服务的高可用性。当监控到主节点发生故障时,Sentinel会自动执行一系列操作来选举新的主节点并完成角色转换[^2]。 具体来说,在正常运行期间,多个哨兵实例持续监测所有主库及其副本的状态。一旦检测到当前正在提供写入服务的主要实例不可达(例如网络中断或硬件故障),其余存活的哨兵成员之间就会发起投票过程决定由哪个现有的只读副本来接替成为新任领导者继续对外界请求作出响应。为了防止脑裂现象的发生——即同一时间存在两个以上互相都认为自己是合法领导者的实体——整个决策流程遵循严格的仲裁协议以确保最终只会有一个胜利者被选出来接管原主人职责[^1]。 ### 配置方法 要实现上述功能,则需按照如下方式设置环境: #### 启动Redis Server 和 Sentinel Service 对于每台参与构成集群架构的服务端机器而言,应当先开启相应的Redis进程,并指定其监听特定端口;之后再单独启动一个关联着该主机上已部署完毕的标准配置文件`redis-sentinel.conf` 的哨兵守护程序作为监视器使用[^3]。 ```bash # 开启Redis server /etc/init.d/redis_6379 start # 启动sentinel service redis-sentinel /etc/redis-sentinel.conf & ``` #### 编辑 `redis-sentinel.conf` 文件 此步骤涉及修改哨兵专用配置文档中的若干参数选项以便于自定义化调整行为逻辑。比如设定最低票数门槛、通知邮箱地址列表等个性化需求均可在此处体现。特别需要注意的是关于quorum值的选择,它决定了多少比例以上的哨兵同意才能触发一次完整的故障转移动作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值