ly3310918 2019-01-15 15:39 采纳率: 100%
浏览 4842
已采纳

redis使用哨兵实现主从后,恢复故障的matser后,不会成为新master下的slave节点

各位大神,我通过哨兵实现主从后,进行测试时发现一个问题:
我启动了3个redis,3个哨兵,01的redis为主,02、03的redis为备节点。
图片说明

当我将01主节点的redis手动关闭后,哨兵日志显示将master切换到02上了。03也变成了02的备节点。

图片说明

图片说明

但是当我手动将01的redis手动启动后,哨兵日志没有任何回显,使用info Relication命令查看02的redis的状态,发现slave个数还是一个,地址也只有03的地址。
使用infoinfo Relication命令查看01的redis状态,发现01的redis状态为master,slave节点为0.竟然没有变成slave状态。
    现在相当于有两个master 一个slave。请问怎么解决master恢复后不变成从的问题

图片说明

附上redis配置与sentinel配置
主redis的配置
daemonize yes
port 6379
bind 0.0.0.0
timeout 0
save 900 1
save 300 10
save 60 10000
requirepass 123456
logfile /DATA/redis1/log/redis.log

备redis的配置
daemonize yes
port 6380
bind 0.0.0.0
timeout 0
save 900 1
save 300 10
save 60 10000
requirepass 123456
logfile /DATA/redis2/log/redis.log
slaveof 10.221.149.136 6379
masterauth 123456

sentinel配置的配置
port 26380
daemonize yes
logfile /DATA/redis2/log/sentinel.log
sentinel monitor mymaster 10.221.149.136 6379 1
sentinel auth-pass mymaster 123456
sentinel down-after-milliseconds mymaster 3000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 10000

  • 写回答

4条回答 默认 最新

  • ly3310918 2019-01-16 14:21
    关注

    该问题已解决。是通过更换redis版本解决的
    发生该问题的redis版本为2.6版本,更换到redis版本为3.0.3版本后,原来的master恢复故障后,终于变成了slave节点。
    但是具体根本原因还是没有精确定位。
    只是发现2.6版本的redis的sentinel文件没有自动填写如下信息
    sentinel leader-epoch mymaster 16
    sentinel known-slave mymaster 10.221.149.136 6379
    sentinel known-sentinel mymaster 10.221.149.136 26380 5afeadac9fb8749af3ae4a29cd10e5c6fd460d07
    sentinel current-epoch 16

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 调用函数时,无关变量的改变引起函数值的改变
  • ¥15 xy坐标转化为经纬度坐标
  • ¥15 一般三角模糊数的上界值和下届值取中值的多少比较合理?
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥20 Hbase启动失败,无法启动HMaster
  • ¥15 sqpingboot在父模块已经引入了mybatisplus 在子组件不写版本号还是报错
  • ¥20 Lumerical FDTD solutions 中模型的相对阻抗,有效介电常数和有效磁导率的实部和虚部的数据如何获得?
  • ¥100 sql reporting service 远程smtp服务器配置支持
  • ¥15 ppyoloe_r带角度目标检测,loss_cls没法收敛
  • ¥15 淘宝交易指数如何解读,其关联的数据指标是什么