MHA安装遇到的问题解决

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhangjikuan/article/details/81780754

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 会把相应依赖一起装了的

猜你喜欢

转载自blog.csdn.net/zhangjikuan/article/details/81780754