redis哨兵机制 主库挂了 如何选定新主库?笔记

  1. 第一轮:优先级最高的从库得分高。
    用户可以通过 slave-priority 配置项,给不同的从库设置不同优先级。比如,你有两个从
    库,它们的内存大小不一样,你可以手动给内存大的实例设置一个高优先级。在选主时,
    哨兵会给优先级高的从库打高分,如果有一个从库优先级最高,那么它就是新主库了。如
    果从库的优先级都一样,那么哨兵开始第二轮打分。
  2. 第二轮:和旧主库同步程度最接近的从库得分高。
    这个规则的依据是,如果选择和旧主库同步最接近的那个从库作为主库,那么,这个新主
    库上就有最新的数据。
    如何判断从库和旧主库间的同步进度呢?
    主从库同步时有个命令传播的过程。在这个过程中,主库会用
    master_repl_offset 记录当前的最新写操作在 repl_backlog_buffer 中的位置,而从库会
    用 slave_repl_offset 这个值记录当前的复制进度。
    此时,我们想要找的从库,它的 slave_repl_offset 需要最接近 master_repl_offset。如果
    在所有从库中,有从库的 slave_repl_offset 最接近 master_repl_offset,那么它的得分就
    最高,可以作为新主库。
    就像下图所示,旧主库的 master_repl_offset 是 1000,从库 1、2 和 3 的
    slave_repl_offset 分别是 950、990 和 900,那么,从库 2 就应该被选为新主库。
    在这里插入图片描述
    当然,如果有两个从库的 slave_repl_offset 值大小是一样的(例如,从库 1 和从库 2 的
    slave_repl_offset 值都是 990),我们就需要给它们进行第三轮打分了。
  3. 每个实例都会有一个 ID,这个 ID 就类似于这里的从库的编号。目前,Redis 在选主库
    时,有一个默认的规定:在优先级和复制进度都相同的情况下,ID 号最小的从库得分最
    高,会被选为新主库。
    到这里,新主库就被选出来了,“选主”这个过程就完成了。
    我们再回顾下这个流程。首先,哨兵会按照在线状态、网络状态,筛选过滤掉一部分不符
    合要求的从库,然后,依次按照优先级、复制进度、ID 号大小再对剩余的从库进行打分,
    只要有得分最高的从库出现,就把它选为新主库。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值