只需一步,快速开始
主题 776|帖子 776|积分 2328
什么是误判? 主库实际没有下线,但是哨兵以为它下线了。误判产生原因:比如集群网络压力较大,出现网络拥塞,大概主库本身压力较大,导致主节点没有在规定时间内响应哨兵的 PING 下令。
判断主库客观下线后只是Leader 的候选者,还不是Leader 由于quorum 配置问题,有可能判断主库客观下线的哨兵有多个。比如有3个哨兵,quorum为2,AB都认为主库主观下线,C认为主库还在线,因此此时哨兵A收到主观下线的值为2,另一个哨兵B收到的主观下线值也为2,由于这两个值都大于等于quorum,因此哨兵A和哨兵B都会将主库标记为客观下线。但不能让哨兵A和哨兵B同时执行主从切换。因此必要从哨兵A和哨兵B中选出一个Leader来执行主从切换
这里大家是不是和我一样有个迷惑?假如三个哨兵同时判断为主观下线,那么就有可能同时判断为客观下线,那么就都是leader候选者了,那么在投票时也都投给了本身,那么leader不就永远选不出来了吗? 首先,哨兵对主从库进行的在线状态检查的操作,是属于一种时间事件,用一个定时器来完成,一般来说每100ms执行一次这些事件。实际上每个哨兵的定时器执行周期都会加上一个小小的随机时间偏移,目标是让每个哨兵执行上述操作的时间能稍微错开些,也是为了避免它们都同时判定主库主观下线。 其次,实际上差别哨兵的网络环境、系统的压力一般不完全一样,接收到主观下线协商消息的时间也就可能差别,所以,它们同时做出主库客观下线判定的概率较小,一般也就有个先后关系。 最后,即使出现了都投给本身一票的环境,导致无法选出Leader,哨兵会停一段时间(一般是故障转移超时时间failover_timeout的2倍),然后再可以进行下一轮投票。
怎样判断从库和旧主库间的同步进度? 从库的slave_repl_offset最靠近旧主库的master_repl_offset,那么它的得分最高,可以作为新主库。
您需要 登录 才可以下载或查看,没有账号?立即注册
使用道具 举报
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
魏晓东