MHA环境搭建【3】node相关依赖的解决

mha的node软件包依赖于perl-DBD-Mysql 这个包,我之前有遇到过用yum安装perl-DBD-MySQL,安装完成后不能正常使用的情况,所以这里选择源码编译安装;

perl5.10.1这个版本的Socket 模块由于没有导出gethostinfo,getipinfo这两个函数,所以mha在这个版本的perl解释器上执行会出错,所以要升级一下Socket模块。

【1】安装依赖的依赖、由于要用到编译安装、所以先要把gcc编译器安装上。

yum -y install gcc gcc-c++

【2】从www.cpan.org中下载相关perl模块并安装

1、perl-DBD-MySQL、perl-ExtUtils-Constant、perl-Socket

2、找到模块的链接

3、点击左边栏的download就可以下载了

为什么在这里把cpan说这么细、主要是我感觉这个UI对用户不在友好

4、安装ExtUtils-Constant 因为之后安装的Socket 模块要依赖到它

tar -xzvf ExtUtils-Constant-0.23.tar.gz
cd ExtUtils-Constant-0.23
perl Makefile.PL
make
make install

5、更新Socket模块

tar -xzvf Socket-2.024.tar.gz 
cd Socket-2.024
perl Makefile.PL
make 
make install

6、安装DBD-MySQL模块

tar -xzvf DBD-mysql-4.038.tar.gz 
cd DBD-mysql-4.038
perl Makefile.PL --mysql_config=/usr/local/mysql/bin/mysql_config --with-mysql=/usr/local/mysql
make 
make install

6.1、就我目前的经验来说,mha最容易出错的地方就是这样perl-DBD-MySQL了;安装的时候没有报错不一定就可以说明你安装成功了,还是要测试一下的。

perl-DBD-MySQL的测试脚本如下

#!/usr/bin/perl

use strict;
use warnings;
use DBI;
 
#Connect to the database.
my $dbh = DBI->connect("DBI:mysql:database=test;host=127.0.0.1",
                         "appuser", "123456",
                                                {'RaiseError' => 1});
my $sth = $dbh->prepare("SELECT 1 as value");
$sth->execute();
my $result = $sth->fetchrow_hashref();
print "----ok----  $result->{value}
";
$sth->finish();
$dbh->disconnect();

常见的错误有两处:

1、没有导出mysql的共享库文件/usr/local/mysql/lib/ 这个时候就算你编译DBD-MySQL安装通过了,在你编译mha-node的时候,它还是会报没有安装perl-DBD-MySQL

2、在编译DBD-MySQL的时候没有指定--mysql_config &--with-mysql 、这种情况下mha-node还是可以编译成功的,在mha运行的时候连接不上mysql;

【3】安装mha-node软件包

unzip mha4mysql-node-master.zip 
cd mha4mysql-node-master
perl Makefile.PL
make
make install
原文地址:https://www.cnblogs.com/JiangLe/p/6074516.html