• 3节点,服务器环境 centos 7.5, mysql 5.7, 同步节点时间
  • 安装perl mysql模块,可以使用yum,需先安装epel源

    1
    yum install perl-DBD-MySQL -y
  • 安装MHA:

  • 3台机器上都要安装 mha4mysql-node

    1
    rpm -ivh mha4mysql-node-0.58-0.el7.centos.noarch.rpm
  • 管理机器上安装 mha4mysql-manager

    1
    rpm -ivh mha4mysql-manager-0.58-0.el7.centos.noarch.rpm
  • 脚本管理,均在 app1.cnf 文件中进行配置

    1
    2
    3
    4
    master_ip_failover  #自动切换时vip管理的脚本,不是必须,如果我们使用keepalived的,我们可以自己编写脚本完成对vip的管理,比如监控mysql,如果mysql异常,我们停止keepalived就行,这样vip就会自动漂移
    master_ip_online_change #在线切换时vip的管理,不是必须,同样可以可以自行编写简单的shell完成
    power_manager #故障发生后关闭主机的脚本,不是必须
    send_report #因故障切换后发送报警的脚本,不是必须,可自行编写简单的shell完成

遇见的一些错误总结

  1. Can’t exec “mysqlbinlog”:

    1
    Can't exec "mysqlbinlog": No such file or directory at /usr/share/perl5/vendor_perl/MHA/BinlogManager.pm line 106. mysqlbinlog version command failed with rc 1:0, please verify PATH, LD_LIBRARY_PATH, and client options	at /usr/bin/apply_diff_relay_logs line 532.

    解决方案:

    1
    2
    type mysqlbinlog
    ln -s /usr/local/mysql/bin/mysqlbinlog /usr/bin/mysqlbinlog
  2. MHA只能应对一次故障转移,并会在配置的 manager_workdir 目录下生产记录文件,如果要再次启用请清理该目录下 app1.failover.complete 文件