【MySQL】MHA源代码之主库选取(二)


在讲MHA选择
master的代码中,我们必须把维护的四个数组的来龙去脉讲清楚

server不是
master,且从库正常,
latest数组中的
server有足够的中继日志恢复这个落后的从库
(追上主库
),则放入这个
Alive_slaves的数组中
(此段代码在
ServerManager.pm
init_servers函数
)




alive_slaves数组中选取
relaylog最新的
server,这个数组如果有多个
server,
server
Read_master_log_pos,master_log_file一定相等(此段代码在
ServerManager.pm
identify_latest_slaves函数)




这个无需多解释,就是MHA配置文件中配置了
candidate_master的值,这个可以大于
1


1)

检测有故障的server


2)
MHA
开发云主机域名配置文件设置了
no_master

server


3)log_bin

没有打开的server


4)

版本不兼容的server
(高版本复制到低版本是没问题的,但是如果低版本的选为为主库,嘿嘿)


5)

复制落后太多server


(1)
指定主库切换的,优先级最高(通常这是在手动切换)


(2)

如果server

latest
数组中,且在
perf
数组中,则优先返回


(3)

如果server

alive_servers
数组中,且在
perf
数组中,则优先返回


(4)

如果server

lastest
中,则优先返回


(5)

如果server

alive_servers
中,则返回


(6)
否则选举失败

这里优先级为1->6,具体实现在
(ServerManager.pm:select_new_master)





相关推荐: linux环境下搭建MySQL数据库的双击热备

由于Mysql不同版本之间的(二进制日志)binlog格式可能会不太一样,因此最好的搭配组合是主(Master)服务器的Mysql版本和从(Slave)服务器版本相同或者更低,主服务器的版本肯定不能高于从服务器版本。本次我用于测试的两台服务器版本都是Mysql…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 06/05 09:38
下一篇 06/05 09:38

相关推荐