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", "",
{'RaiseError' => });
my $sth = $dbh->prepare("SELECT 1 as value");
$sth->execute();
my $result = $sth->fetchrow_hashref();
print "----ok---- $result->{value}\n";
$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