MySQL MHA /usr/share/perl5/vendor_perl/MHA/ServerManager.pm, ln301] install_driver,mysql failed: Attempt to reload DBD/mysql.pm aborted

在公司随便找3台测试机搭个MHA,下面这个问题折腾了三天,之前没遇到过,查了OS版本发现一致,可能是不同人弄的OS吧,知道是cpan的问题就是搞不定,郁闷。。。

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

Wed Dec 4 11:53:59 2019 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.

Wed Dec 4 11:53:59 2019 - [info] Reading application default configuration from /etc/masterha/app1.cnf..

Wed Dec 4 11:53:59 2019 - [info] Reading server configuration from /etc/masterha/app1.cnf..

Wed Dec 4 11:53:59 2019 - [info] MHA::MasterMonitor version 0.56.

Wed Dec 4 11:54:00 2019 - [error][/usr/share/perl5/vendor_perl/MHA/ServerManager.pm, ln301] install_driver(mysql) failed: Attempt to reload DBD/mysql.pm aborted.

Compilation failed in require at (eval 26) line 3.

at /usr/share/perl5/vendor_perl/MHA/DBHelper.pm line 205

at /usr/share/perl5/vendor_perl/MHA/Server.pm line 166

Wed Dec 4 11:54:00 2019 - [error][/usr/share/perl5/vendor_perl/MHA/ServerManager.pm, ln301] install_driver(mysql) failed: Attempt to reload DBD/mysql.pm aborted.

Compilation failed in require at (eval 26) line 3.

at /usr/share/perl5/vendor_perl/MHA/DBHelper.pm line 205

at /usr/share/perl5/vendor_perl/MHA/Server.pm line 166

Wed Dec 4 11:54:00 2019 - [error][/usr/share/perl5/vendor_perl/MHA/ServerManager.pm, ln301] install_driver(mysql) failed: Attempt to reload DBD/mysql.pm aborted.

Compilation failed in require at (eval 26) line 3.

at /usr/share/perl5/vendor_perl/MHA/DBHelper.pm line 205

at /usr/share/perl5/vendor_perl/MHA/Server.pm line 166

Wed Dec 4 11:54:01 2019 - [error][/usr/share/perl5/vendor_perl/MHA/ServerManager.pm, ln309] Got fatal error, stopping operations

Wed Dec 4 11:54:01 2019 - [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

Wed Dec 4 11:54:01 2019 - [error][/usr/share/perl5/vendor_perl/MHA/MasterMonitor.pm, ln523] Error happened on monitoring servers.

Wed Dec 4 11:54:01 2019 - [info] Got exit code 1 (Not master dead).

MySQL Replication Health is NOT OK!

参考下面帖子发现结果还有异常

https://www.cnblogs.com/fangyuan303687320/p/9475279.html

yum install -y cpan

cpan -D DBI

# [yes---sudo]

--上面这不执行了好几分钟,输入了很多次yes

cpan DBD::mysql

还是出现下面的异常

--异常

DVEEDEN/DBD-mysql-4.050.tar.gz

/usr/bin/make -- OK

Running make test

PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t

t/00base.t .............................. 1/6

# Failed test 'use DBD::mysql;'

# at t/00base.t line 15.

# Tried to use 'DBD::mysql'.

# Error: Can't load '/root/.cpan/build/DBD-mysql-4.050-d0WgOf/blib/arch/auto/DBD/mysql/mysql.so' for module DBD::mysql: libmysqlclient.so.20: cannot open shared object file: No such file or directory at /usr/lib64/perl5/DynaLoader.pm line 200.

# at t/00base.t line 15

# Compilation failed in require at t/00base.t line 15.

# BEGIN failed--compilation aborted at t/00base.t line 15.

Bailout called. Further testing stopped: Unable to load DBD::mysql

FAILED--Further testing stopped: Unable to load DBD::mysql

make: *** [test_dynamic] Error 255

DVEEDEN/DBD-mysql-4.050.tar.gz

/usr/bin/make test -- NOT OK

//hint// to see the cpan-testers results for installing this module, try:

reports DVEEDEN/DBD-mysql-4.050.tar.gz

Running make install

make test had returned bad status, won't install without force

最后发现需要先执行下这个才可以,需要回答几次yes

[root@test247 ~]# cpan

cpan[1]> force install GD

...

Files found in blib/arch: installing files in blib/lib into architecture dependent library tree

Installing /usr/local/lib64/perl5/auto/GD/GD.so

Installing /usr/local/lib64/perl5/auto/GD/GD.bs

Installing /usr/local/lib64/perl5/GD.pm

Installing /usr/local/lib64/perl5/auto/GD/autosplit.ix

Installing /usr/local/lib64/perl5/GD/Polygon.pm

Installing /usr/local/lib64/perl5/GD/Simple.pm

Installing /usr/local/lib64/perl5/GD/Group.pm

Installing /usr/local/lib64/perl5/GD/Image.pm

Installing /usr/local/lib64/perl5/GD/Polyline.pm

Installing /usr/local/share/man/man1/bdf2gdfont.pl.1

Installing /usr/local/share/man/man3/GD.3pm

Installing /usr/local/share/man/man3/GD::Polygon.3pm

Installing /usr/local/share/man/man3/GD::Group.3pm

Installing /usr/local/share/man/man3/GD::Simple.3pm

Installing /usr/local/share/man/man3/GD::Polyline.3pm

Installing /usr/local/share/man/man3/GD::Image.3pm

Installing /usr/local/bin/bdf2gdfont.pl

Appending installation info to /usr/lib64/perl5/perllocal.pod

RURBAN/GD-2.71.tar.gz

/usr/bin/make install -- OK

cpan[2]> exit

[root@test247 ~]# cpan DBD::mysql

CPAN: Storable loaded ok (v2.20)

Going to read '/root/.cpan/Metadata'

Database was generated on Wed, 04 Dec 2019 02:29:02 GMT

Running install for module 'DBD::mysql'

CPAN: YAML loaded ok (v0.70)

Running make for D/DV/DVEEDEN/DBD-mysql-4.050.tar.gz

CPAN: Digest::SHA loaded ok (v5.47)

Checksum for /root/.cpan/sources/authors/id/D/DV/DVEEDEN/DBD-mysql-4.050.tar.gz ok

...

For 'make test' to run properly, you must ensure that the

database user 'root' can connect to your MySQL server

and has the proper privileges that these tests require such

as 'drop table', 'create table', 'drop procedure', 'create procedure'

as well as others.

mysql> grant all privileges on test.* to 'root'@'localhost' identified by 's3kr1t';

You can also optionally set the user to run 'make test' with:

perl Makefile.PL --testuser=username

...

Prepending /root/.cpan/build/DBD-mysql-4.050-LtZCXU/blib/arch /root/.cpan/build/DBD-mysql-4.050-LtZCXU/blib/lib to PERL5LIB for 'install'

Files found in blib/arch: installing files in blib/lib into architecture dependent library tree

Installing /usr/local/lib64/perl5/auto/DBD/mysql/mysql.so

Installing /usr/local/lib64/perl5/auto/DBD/mysql/mysql.bs

Installing /usr/local/lib64/perl5/Bundle/DBD/mysql.pm

Installing /usr/local/lib64/perl5/DBD/mysql.pm

Installing /usr/local/lib64/perl5/DBD/mysql/GetInfo.pm

Installing /usr/local/lib64/perl5/DBD/mysql/INSTALL.pod

Installing /usr/local/share/man/man3/DBD::mysql.3pm

Installing /usr/local/share/man/man3/Bundle::DBD::mysql.3pm

Installing /usr/local/share/man/man3/DBD::mysql::INSTALL.3pm

Appending installation info to /usr/lib64/perl5/perllocal.pod

DVEEDEN/DBD-mysql-4.050.tar.gz

/usr/bin/make install -- OK

[root@test247 ~]#

再运行OK了

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

Wed Dec 4 12:20:09 2019 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.

Wed Dec 4 12:20:09 2019 - [info] Reading application default configuration from /etc/masterha/app1.cnf..

Wed Dec 4 12:20:09 2019 - [info] Reading server configuration from /etc/masterha/app1.cnf..

Wed Dec 4 12:20:09 2019 - [info] MHA::MasterMonitor version 0.56.

Wed Dec 4 12:20:10 2019 - [info] GTID failover mode = 0

Wed Dec 4 12:20:10 2019 - [info] Dead Servers:

Wed Dec 4 12:20:10 2019 - [info] Alive Servers:

Wed Dec 4 12:20:10 2019 - [info] 192.168.5.247(192.168.5.247:3306)

Wed Dec 4 12:20:10 2019 - [info] 192.168.5.93(192.168.5.93:3306)

Wed Dec 4 12:20:10 2019 - [info] 192.168.5.94(192.168.5.94:3306)

Wed Dec 4 12:20:10 2019 - [info] Alive Slaves:

Wed Dec 4 12:20:10 2019 - [info] 192.168.5.93(192.168.5.93:3306) Version=5.7.21-log (oldest major version between slaves) log-bin:enabled

Wed Dec 4 12:20:10 2019 - [info] Replicating from 192.168.5.247(192.168.5.247:3306)

Wed Dec 4 12:20:10 2019 - [info] Primary candidate for the new Master (candidate_master is set)

Wed Dec 4 12:20:10 2019 - [info] 192.168.5.94(192.168.5.94:3306) Version=5.7.21-log (oldest major version between slaves) log-bin:enabled

Wed Dec 4 12:20:10 2019 - [info] Replicating from 192.168.5.247(192.168.5.247:3306)

Wed Dec 4 12:20:10 2019 - [info] Current Alive Master: 192.168.5.247(192.168.5.247:3306)

Wed Dec 4 12:20:10 2019 - [info] Checking slave configurations..

Wed Dec 4 12:20:10 2019 - [info] Checking replication filtering settings..

Wed Dec 4 12:20:10 2019 - [info] binlog_do_db= , binlog_ignore_db=

Wed Dec 4 12:20:10 2019 - [info] Replication filtering check ok.

Wed Dec 4 12:20:10 2019 - [info] GTID (with auto-pos) is not supported

Wed Dec 4 12:20:10 2019 - [info] Starting SSH connection tests..

Wed Dec 4 12:20:12 2019 - [info] All SSH connection tests passed successfully.

Wed Dec 4 12:20:12 2019 - [info] Checking MHA Node version..

Wed Dec 4 12:20:13 2019 - [info] Version check ok.

Wed Dec 4 12:20:13 2019 - [info] Checking SSH publickey authentication settings on the current master..

Wed Dec 4 12:20:13 2019 - [info] HealthCheck: SSH to 192.168.5.247 is reachable.

Wed Dec 4 12:20:13 2019 - [info] Master MHA Node version is 0.56.

Wed Dec 4 12:20:13 2019 - [info] Checking recovery script configurations on 192.168.5.247(192.168.5.247:3306)..

Wed Dec 4 12:20:13 2019 - [info] Executing command: save_binary_logs --command=test --start_pos=4 --binlog_dir=/data/mysql/logs/bin-log --output_file=/tmp/save_binary_logs_test --manager_version=0.56 --start_file=mysql-bin.000008

Wed Dec 4 12:20:13 2019 - [info] Connecting to root@192.168.5.247(192.168.5.247:22)..

Creating /tmp if not exists.. ok.

Checking output directory is accessible or not..

ok.

Binlog found at /data/mysql/logs/bin-log, up to mysql-bin.000008

Wed Dec 4 12:20:13 2019 - [info] Binlog setting check done.

Wed Dec 4 12:20:13 2019 - [info] Checking SSH publickey authentication and checking recovery script configurations on all alive slave servers..

Wed Dec 4 12:20:13 2019 - [info] Executing command : apply_diff_relay_logs --command=test --slave_user='monitor' --slave_host=192.168.5.93 --slave_ip=192.168.5.93 --slave_port=3306 --workdir=/tmp --target_version=5.7.21-log --manager_version=0.56 --relay_log_info=/data/mysql/relay-log.info --relay_dir=/data/mysql/data/ --slave_pass=xxx

Wed Dec 4 12:20:13 2019 - [info] Connecting to root@192.168.5.93(192.168.5.93:22)..

Checking slave recovery environment settings..

Opening /data/mysql/relay-log.info ... ok.

Relay log found at /data/mysql/logs/relay-log, up to relay-bin.000015

Temporary relay log file is /data/mysql/logs/relay-log/relay-bin.000015

Testing mysql connection and privileges..mysql: [Warning] Using a password on the command line interface can be insecure.

done.

Testing mysqlbinlog output.. done.

Cleaning up test file(s).. done.

Wed Dec 4 12:20:13 2019 - [info] Executing command : apply_diff_relay_logs --command=test --slave_user='monitor' --slave_host=192.168.5.94 --slave_ip=192.168.5.94 --slave_port=3306 --workdir=/tmp --target_version=5.7.21-log --manager_version=0.56 --relay_log_info=/data/mysql/relay-log.info --relay_dir=/data/mysql/data/ --slave_pass=xxx

Wed Dec 4 12:20:13 2019 - [info] Connecting to root@192.168.5.94(192.168.5.94:22)..

Checking slave recovery environment settings..

Opening /data/mysql/relay-log.info ... ok.

Relay log found at /data/mysql/logs/relay-log, up to relay-bin.000015

Temporary relay log file is /data/mysql/logs/relay-log/relay-bin.000015

Testing mysql connection and privileges..mysql: [Warning] Using a password on the command line interface can be insecure.

done.

Testing mysqlbinlog output.. done.

Cleaning up test file(s).. done.

Wed Dec 4 12:20:14 2019 - [info] Slaves settings check done.

Wed Dec 4 12:20:14 2019 - [info]

192.168.5.247(192.168.5.247:3306) (current master)

+--192.168.5.93(192.168.5.93:3306)

+--192.168.5.94(192.168.5.94:3306)

Wed Dec 4 12:20:14 2019 - [info] Checking replication health on 192.168.5.93..

Wed Dec 4 12:20:14 2019 - [info] ok.

Wed Dec 4 12:20:14 2019 - [info] Checking replication health on 192.168.5.94..

Wed Dec 4 12:20:14 2019 - [info] ok.

Wed Dec 4 12:20:14 2019 - [info] Checking master_ip_failover_script status:

Wed Dec 4 12:20:14 2019 - [info] /usr/local/bin/master_ip_failover --command=status --ssh_user=root --orig_master_host=192.168.5.247 --orig_master_ip=192.168.5.247 --orig_master_port=3306

Wed Dec 4 12:20:14 2019 - [info] OK.

Wed Dec 4 12:20:14 2019 - [warning] shutdown_script is not defined.

Wed Dec 4 12:20:14 2019 - [info] Got exit code 0 (Not master dead).

MySQL Replication Health is OK.

[root@test247 ~]#