关于这个错误:
Mon Feb 13 10:29:41 2017 - [error][/usr/share/perl5/vendor_perl/MHA/ServerManager.pm, ln188] There is no alive server. We can't do failover Mon Feb 13 10:29:41 2017 - [error][/usr/share/perl5/vendor_perl/MHA/MasterMonitor.pm, ln424] Error happened on checking configurations. at /usr/share/perl5/vendor_perl/MHA/MasterMonitor.pm line 326 Mon Feb 13 10:29:41 2017 - [error][/usr/share/perl5/vendor_perl/MHA/MasterMonitor.pm, ln523] Error happened on monitoring servers. Mon Feb 13 10:29:41 2017 - [info] Got exit code 1 (Not master dead).
在之前的部署文档里:
http://d-prototype.com/archives/6873
我说需要把server_id,改成10,可以走过去。
其实这是很片面的。
今天又遇到了这个问题,并解决了。
关于该问题,比较靠谱的解释是:
MHA默认去连接MySQL的端口是:3306
如果你的主机名解析,或者你写的IP都没问题,防火墙也关闭了,那么,剩下的原因是:
你的MySQL,没有运行在默认端口上。
如果不能修改MySQL的端口为:3306。
那么你可以给MHA,添加PORT描述。
以下是添加端口描述的MHA应用配置文件的样例:
[server default] manager_workdir=/work_dir/mha_manager manager_log=/work_dir/mha_manager/mha_manager.log [server1] hostname=mha2 candidate_master=1 port=3307 [server2] hostname=mha3 candidate_master=1 port=3307 [server3] hostname=mha4 #candidate_master=1 no_master=1 port=3307
——————————————
Done。