MHA常见报错以及解决方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MHA常见报错以及解决方法相关的知识,希望对你有一定的参考价值。

error 1
运行masterha_check_repl --conf=/etc/masterha/app1.cnf报错

Testing mysql connection and privileges..sh: mysql: command not found
mysql command failed with rc 127:0!
at /usr/bin/apply_diff_relay_logs line 375

解决方案:ln -s /usr/local/mysql/bin/mysql /usr/bin

error 2
运行masterha_check_repl --conf=/etc/masterha/app1.cnf报错

Can‘t exec "mysqlbinlog": No such file or directory at /usr/local/perl5/MHA/BinlogManager.pm line 99.

解决方案:在node节点上执行 which mysqlbinlog,比如我的结果就是
[localhost~]$ which mysqlbinlog
/usr/local/mysql/bin/mysqlbinlog

ln -s /usr/local/mysql/bin/mysqlbinlog /usr/bin/mysqlbinlog

error 3
运行master_check_ssh --conf=/etc/masterha/aap1.cnf报错

connection via SSH fromroot@192.168.17.199toroot@192.168.17.200 ...
permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)
[error] [/usr/local/share/perl5/MHA/SSHcheck.pm,ln163]

解决方案:一般是公钥有问题,需要删除 /root/.ssh/known_hosts里面的相关ip内容 重新生成一下就ok了

error 4
运行master_check_ssh --conf=/etc/masterha/aap1.cnf报错

Sun Nov 20 20:10:59 2016 - [info] Executing command: save_binary_logs --command=test --start_pos=4 --binlog_dir=/data/mysqllog/3306 --output_file=/masterha/app1/save_binary_logs_test --manager_version=0.55 --start_file=mysql-bin.000001
Sun Nov 20 20:10:59 2016 - [info] Connecting to root@172.18.3.180(172.18.3.180)..
Failed to save binary log: Binlog not found from /data/mysqllog/3306! If you got this error at MHA Manager, please set "master_binlog_dir=/path/to/binlog_directory_of_the_master" correctly in the MHA Manager‘s configuration file and try again.
at /usr/bin/save_binary_logs line 117.
eval {...} called at /usr/bin/save_binary_logs line 66
main::main() called at /usr/bin/save_binary_logs line 62
Sun Nov 20 20:10:59 2016 - [error][/usr/share/perl5/vendor_perl/MHA/MasterMonitor.pm, ln154] Master setting check failed!
Sun Nov 20 20:10:59 2016 - [error][/usr/share/perl5/vendor_perl/MHA/MasterMonitor.pm, ln367] Master configuration failed.
Sun Nov 20 20:10:59 2016 - [error][/usr/share/perl5/vendor_perl/MHA/MasterMonitor.pm, ln386] Error happend on checking configurations. at /usr/bin/masterha_check_repl line 48.
Sun Nov 20 20:10:59 2016 - [error][/usr/share/perl5/vendor_perl/MHA/MasterMonitor.pm, ln482] Error happened on monitoring servers.
Sun Nov 20 20:10:59 2016 - [info] Got exit code 1 (Not master dead).

解决方案:
/etc/masterha/aap1.cnf中的datadir路径应该是mysql中bin-log的位置

error 5

运行masterha_check_repl --conf=/etc/masterha/app1.cnf报错

Mon Nov 21 11:11:40 2016 - [info] MHA::MasterRotate version 0.55.
Mon Nov 21 11:11:40 2016 - [info] Starting online master switch..
Mon Nov 21 11:11:40 2016 - [info]
Mon Nov 21 11:11:40 2016 - [info] * Phase 1: Configuration Check Phase..
Mon Nov 21 11:11:40 2016 - [info]
Mon Nov 21 11:11:40 2016 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
Mon Nov 21 11:11:40 2016 - [info] Reading application default configurations from /etc/masterha/app1.cnf..
Mon Nov 21 11:11:40 2016 - [info] Reading server configurations from /etc/masterha/app1.cnf..
Mon Nov 21 11:11:40 2016 - [error][/usr/share/perl5/vendor_perl/MHA/ServerManager.pm, ln604] There are 2 non-slave servers! MHA manages at most one non-slave server. Check configurations.
Mon Nov 21 11:11:40 2016 - [error][/usr/share/perl5/vendor_perl/MHA/ManagerUtil.pm, ln178] Got ERROR: at /usr/share/perl5/vendor_perl/MHA/MasterRotate.pm line 85.

解决方案:
手动将修复后的master做成新的master的从服务器

warning 1
各从库应设置relay_log_purge=0
###否则收到以下告警信息 ##mysql -e ‘set global relay_log_purge=0‘ 动态修改该参数,因为随时slave会提升为master
[warning] relay_log_purge=0 is not set on slave (172.18.3.140:3306).

warning 2
各从库设置read_only=1
###否则收到以下告警信息 ## mysql -e ‘set global read_only=1‘ 动态修改该参数,因为随时slave会提升为master。
[info] read_only=1 is not set on slave (172.18.3.107:3306


[root@centos7-04 ~]# masterha_check_repl --conf=/etc/masterha/app1.cnf

问题一:

Thu Aug 23 04:39:01 2018 - [warning] log-bin is not set on slave 192.168.0.189(192.168.0.189:3306). This host cannot be a master.

Thu Aug 23 04:39:01 2018 - [warning] log-bin is not set on slave 192.168.0.190(192.168.0.190:3306). This host cannot be a master.

解决办法:

从库的各客户端应开启binlog,即log_bin=on,两个从上都开启

[root@centos7-02 ~]# vi /etc/my.cnf

basedir = /usr/local/mysql

datadir = /data/mysql

socket = /tmp/mysql.sock

server-id=189

log_bin=on

问题二:

Can‘t exec "mysqlbinlog": 没有那个文件或目录 at /usr/local/share/perl5/MHA/BinlogManager.pm line 106.

mysqlbinlog version command failed with rc 1:0, please verify PATH, LD_LIBRARY_PATH, and client options

at /usr/local/bin/apply_diff_relay_logs line 493.

解决办法:

在所有节点上执行如下命令

[root@centos7-01 ~]# ln -s /usr/local/mysql/bin/mysqlbinlog /usr/local/bin/mysqlbinlog

[root@centos7-01 ~]# ln -s /usr/local/mysql/bin/mysql /usr/local/bin/mysql

[root@centos7-02 ~]# ln -s /usr/local/mysql/bin/mysqlbinlog /usr/local/bin/mysqlbinlog

[root@centos7-02 ~]# ln -s /usr/local/mysql/bin/mysql /usr/local/bin/mysql

[root@centos7-03 ~]# ln -s /usr/local/mysql/bin/mysqlbinlog /usr/local/bin/mysqlbinlog

[root@centos7-03 ~]# ln -s /usr/local/mysql/bin/mysql /usr/local/bin/mysql

问题三:

Thu Aug 23 05:41:59 2018 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln226] Failed to get master_ip_failover_script status with return code 1:0.

Thu Aug 23 05:41:59 2018 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln424] Error happened on checking configurations. at /usr/local/bin/masterha_check_repl line 48

Thu Aug 23 05:41:59 2018 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln523] Error happened on monitoring servers.

解决办法:

[root@centos7-04 ~]# vi /etc/masterha/app1.cnf

#master_ip_failover_script= /usr/local/bin/master_ip_failover //先暂时注释这条选项,后面引入keepalived后和修改该脚本以后再开启该选项

注释:Failover有两种方式:一种是虚拟IP地址,一种是全局配置文件。MHA并没有限定使用哪一种方式,而是让用户自己选择,虚拟IP地址的方式会牵扯到其它的软件,比如keepalive软件,而且还要修改脚本master_ip_failover。

问题四:

Thu Aug 23 18:17:14 2018 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln424] Error happened on checking configurations. Can‘t exec "/usr/local/bin/master_ip_failover": 权限不够 at /usr/local/share/perl5/MHA/ManagerUtil.pm line 68.

Thu Aug 23 18:17:14 2018 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln523] Error happened on monitoring servers.

解决办法:

chmod +x /usr/local/bin/master_ip_failover

问题五:

[error][/usr/local/share/perl5/MHA/ServerManager.pm, ln492] Server 192.168.0.190(192.168.0.190:3306) is dead, but must be alive! Check server settings.

解决办法:

[root@centos7-04 ~]# rm -rf /var/log/masterha/app1.log/app1.failover.complete #删除MHA管理机上的这个文件

问题六:

[error][/usr/local/share/perl5/MHA/ServerManager.pm, ln492] Server 192.168.0.190(192.168.0.190:3306) is dead, but must be alive! Check server settings.

解决办法:

清除防火墙规则

问题七:

[error][/usr/local/share/perl5/MHA/ServerManager.pm, ln492] Server 192.168.0.188(192.168.0.188:3306) is dead, but must be alive! Check server settings.

Fri Aug 24 23:50:37 2018 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln424] Error happened on checking configurations. at /usr/local/share/perl5/MHA/MasterMonitor.pm line 399

解决办法:

重启主库的mysql服务

问题八:

[error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln205] Slaves settings check failed!

解决办法:

登陆从数据库,查看主数据库是不是自己设定的

mysql> show slave statusG

Master_Server_Id: 189

问题九:

[error][/usr/local/share/perl5/MHA/ServerManager.pm, ln781] Multi-master configuration is detected, but two or more masters are either writable (read-only is not set) or dead! Check configurations for details. Master configurations are as below:

Master 192.168.0.189(192.168.0.189:3306), dead

Master 192.168.0.188(192.168.0.188:3306), replicating from 192.168.0.189(192.168.0.189:3306)

解决办法:

所有从上执行

mysql -uroot -p -e "set global read_only=1"

问题十:

mysqlbinlog: unknown variable ‘default-character-set=utf8‘

mysqlbinlog version command failed with rc 7:0, please verify PATH, LD_LIBRARY_PATH, and client options

解决办法:

在所有从服务器上注释掉clinet段default-character-set=utf8mb4

更改默认字符集UTF8到utf8mb4

[client]

#default-character-set = utf8mb4

[mysql]

default-character-set = utf8mb4

[mysqld]

character-set-client-handshake = FALSE

character-set-server = utf8mb4

collation-server = utf8mb4_unicode_ci

init_connect=‘SET NAMES utf8mb4‘

以上是关于MHA常见报错以及解决方法的主要内容,如果未能解决你的问题,请参考以下文章

MySQL常见报错解决方法

js常见报错解决方法

Appium常见报错问题解决方法-2

Appium常见报错问题解决方法-1

网易企业邮箱常见报错代码说明及解决方法和错误代码详细说明

struts2学习笔记——常见报错及解决方法汇总(持续更新)