MHA依赖了很多的包,如果某个包未安装在运行时都会报错,比如我就遇到如下各种的报错,对perl也不熟,蛋疼的很,记下来帮助其他朋友少走弯路
需要安装的包
yum install -y perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-YAML-Tiny perl-PAR-Dist perl-Module-ScanDeps perl-Module-CoreList perl-Module-Build perl-CPAN perl-CPANPLUS perl-File-Remove perl-Module-Install
yum install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes -y
上面是网上见到最多的,但是并不是所有的都在你的yum源中,缺少的也没关系
在执行perl Makefile.PL时会检查都有哪些包安装了,哪些没安装,仔细看一下log如下
include /u01/zjk/mha4mysql-manager-master/inc/Module/Install.pm
include inc/Module/Install/Metadata.pm
include inc/Module/Install/Base.pm
include inc/Module/Install/Scripts.pm
include inc/Module/Install/Makefile.pm
include inc/Module/Install/AutoInstall.pm
include inc/Module/Install/Include.pm
include inc/Module/AutoInstall.pm
*** Module::AutoInstall version 1.03
*** Checking for Perl dependencies...
[Core Features]
- DBI ...loaded. (1.616)
- DBD::mysql ...loaded. (4.020)
- Time::HiRes ...loaded. (1.9721)
- Config::Tiny ...loaded. (2.12)
- Log::Dispatch ...missing. yum中没有
- Parallel::ForkManager ...loaded. (1.20)
- MHA::NodeConst ...missing. 这里意思是没安装node包,安装manager的机器也需要安装node
==> Auto-install the 2 mandatory module(s) from CPAN? [y] y
*** Dependencies will be installed the next time you type 'make'.
*** Module::AutoInstall configuration finished.
include inc/Module/Install/WriteAll.pm
include inc/Module/Install/Win32.pm
include inc/Module/Install/Can.pm
include inc/Module/Install/Fetch.pm
Checking if your kit is complete...
Looks good
Warning: prerequisite MHA::NodeConst 0 not found.
Writing Makefile for mha4mysql::manager
Writing META.yml
在执行make时还会安装一些没有的包,但是有些依然报错,因为yum源上根本就没有,报错也是应该的
*** Installing dependencies...
*** Installing Log::Dispatch...
CPAN: Storable loaded ok (v2.30)
Going to read '/root/.cpan/Metadata'
Database was generated on Wed, 15 Aug 2018 05:17:03 GMT
Log::Dispatch is up to date (2.67).
*** Log::Dispatch installation failed. 这里同样安装失败了
*** Installing MHA::NodeConst...
*** Could not find a version 0 or above for MHA::NodeConst; skipping.
*** Module::AutoInstall installation finished.
接下来就是运行可执行程序时,因为上面有些包没安装就各种报错了
报的错
1.
Can't locate namespace/autoclean.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/local/share/perl5/Log/Dispatch/Types.pm line 5.
2.
Can't locate B/Hooks/EndOfScope.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/local/share/perl5/namespace/autoclean.pm line 10.
3.
Can't locate Module/Implementation.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/local/share/perl5/B/Hooks/EndOfScope.pm line 13.
4.
Can't locate Module/Runtime.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/local/share/perl5/Module/Implementation.pm line 8.
5.
Can't locate Try/Tiny.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/local/share/perl5/Module/Implementation.pm line 9.
6.
Could not find a suitable B::Hooks::EndOfScope implementation: Can't locate Variable/Magic.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/local/share/perl5/B/Hooks/EndOfScope/XS.pm line 18.
7.
Could not find a suitable B::Hooks::EndOfScope implementation: Can't locate Sub/Exporter/Progressive.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/local/share/perl5/B/Hooks/EndOfScope/XS.pm line 22.
8.
Can't locate namespace/clean.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/local/share/perl5/namespace/autoclean.pm line 12.
9.
an't locate Sub/Identify.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/local/share/perl5/namespace/autoclean.pm line 200.
10.
Can't locate Specio/Exporter.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/share/perl5/parent.pm line 16.
BEGIN failed--compilation aborted at /usr/local/share/perl5/Log/Dispatch/Types.pm line 9.
11.
Can't locate Params/ValidationCompiler.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/local/share/perl5/Log/Dispatch.pm line 14.
12.
"NI_NUMERICHOST" is not exported by the Socket module
"getaddrinfo" is not exported by the Socket module
"getnameinfo" is not exported by the Socket module
Can't continue after import errors at /usr/local/share/perl5/MHA/NodeUtil.pm line 29.
BEGIN failed--compilation aborted at /usr/local/share/perl5/MHA/NodeUtil.pm line 29.
Compilation failed in require at /usr/local/share/perl5/MHA/SlaveUtil.pm line 27.
BEGIN failed--compilation aborted at /usr/local/share/perl5/MHA/SlaveUtil.pm line 27.
Compilation failed in require at /usr/local/share/perl5/MHA/DBHelper.pm line 26.
BEGIN failed--compilation aborted at /usr/local/share/perl5/MHA/DBHelper.pm line 26.
Compilation failed in require at /usr/local/share/perl5/MHA/HealthCheck.pm line 30.
BEGIN failed--compilation aborted at /usr/local/share/perl5/MHA/HealthCheck.pm line 30.
Compilation failed in require at /usr/local/share/perl5/MHA/Server.pm line 28.
BEGIN failed--compilation aborted at /usr/local/share/perl5/MHA/Server.pm line 28.
Compilation failed in require at /usr/local/share/perl5/MHA/Config.pm line 29.
BEGIN failed--compilation aborted at /usr/local/share/perl5/MHA/Config.pm line 29.
Compilation failed in require at /usr/local/share/perl5/MHA/SSHCheck.pm line 32.
BEGIN failed--compilation aborted at /usr/local/share/perl5/MHA/SSHCheck.pm line 32.
Compilation failed in require at /usr/local/bin/masterha_check_ssh line 25.
BEGIN failed--compilation aborted at /usr/local/bin/masterha_check_ssh line 25.
本错误的解决是 sudo cpanm Socket 从日志看是socket模块出了问题,要么太老要么没装
这个报错参考: http://blog.51cto.com/arthur376/1812640
[[email protected] /u01/zjk/mha4mysql-manager-master]
$masterha_check_repl --conf=/u01/zjk/mha4mysql-manager-master/workdir/conf/app1.cnf
Thu Aug 16 12:17:08 2018 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
Thu Aug 16 12:17:08 2018 - [info] Reading application default configuration from /u01/zjk/mha4mysql-manager-master/workdir/conf/app1.cnf..
Thu Aug 16 12:17:08 2018 - [info] Reading server configuration from /u01/zjk/mha4mysql-manager-master/workdir/conf/app1.cnf..
Thu Aug 16 12:17:08 2018 - [info] MHA::MasterMonitor version 0.57.
Thu Aug 16 12:17:08 2018 - [debug] Connecting to servers..
Thu Aug 16 12:17:08 2018 - [debug] Got MySQL error when connecting 11.187.250.60(11.187.250.60:3306) :2005:Unknown MySQL server host '[11.187.250.60]' (0)
Thu Aug 16 12:17:08 2018 - [debug] Got MySQL error when connecting 11.136.105.70(11.136.105.70:3306) :2005:Unknown MySQL server host '[11.136.105.70]' (0)
Thu Aug 16 12:17:08 2018 - [debug] Got MySQL error when connecting 11.136.167.69(11.136.167.69:3306) :2005:Unknown MySQL server host '[11.136.167.69]' (0)
Thu Aug 16 12:17:09 2018 - [error][/usr/local/share/perl5/MHA/ServerManager.pm, ln188] There is no alive server. We can't do failover
Thu Aug 16 12:17:09 2018 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln427] Error happened on checking configurations. at /usr/local/share/perl5/MHA/MasterMonitor.pm line 329.
Thu Aug 16 12:17:09 2018 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln525] Error happened on monitoring servers.
Thu Aug 16 12:17:09 2018 - [info] Got exit code 1 (Not master dead).
下载安装DBD::MySQL包安装就好了 http://search.cpan.org/CPAN/authors/id/C/CA/CAPTTOFU/DBD-mysql-4.038.tar.gz
解决:
上面我之所以报了这么多的错,是因为没遇到报错我就下载对应的包,手动安装在机器上,这样无脑的试下去,最后发现实在太多了,最后发现了下面这么个神奇,号称perl最好的安装包工具cpanm, 接下来需要安装这个工具,每次安装包时会报响应依赖也安装了,比较方便
sudo wget http://xrl.us/cpanm -O /usr/bin/cpanm; chmod +x /usr/bin/cpanm
安装好cpanm后就可以用他直接进行安装包了
sudo cpanm Module::Runtime
会把相应依赖一起装了的