记一次MHA搭建中问题及报错

0.58 版本,github搜索mha4mysql可下载
mha4mysql-manager_0.58-0_all.deb
mha4mysql-node_0.58-0_all.deb

依赖问题

本来使用的是centos7的rpm包,下载rpm包后利用yum安装解决依赖问题,安装起来比较方便;
但是用的数据库版本mariadb5.5的版本,管理节点检查复制时报错,如下

[root@37 ~]# masterha_check_repl --conf=/etc/mha/app1.conf
Checking if super_read_only is defined and turned on..DBD::mysql::st execute failed: Unknown system variable 'super_read_only' at /usr/share/perl5/vendor_perl/MHA/SlaveUtil.pm line 245.

查了一下是该版本不支持这个super_read_only特性

后来又用ubuntu1804部署,用的mysql5.7,使用的mha就是deb包了
但是deb包安装起来不如rpm包方便,安装manage与node节点是需要太多的依赖,花了不短时间一个一个粘贴复制,需要安装的依赖及大概如下,

apt install -y libdevel-globaldestruction-perl libdist-checkconflicts-perl libmodule-runtime-perl libnamespace-autoclean-perl libparams-validationcompiler-perl libspecio-perl libtry-tiny-perl libmail-sendmail-perl libmailtools-perl libmime-lite-perl libconfig-tiny-perl liblog-dispatch-perl libparallel-forkmanager-perl libsys-hostname-long-perl libtimedate-perl libnet-smtp-ssl-perl libemail-date-format-perl libmime-types-perl libparams-classify-perl libb-hooks-endofscope-perl libnamespace-clean-perl libsub-identify-perl libeval-closure-perl libexception-class-perl libdevel-stacktrace-perl libeval-closure-perl libmro-compat-perl librole-tiny-perl libsub-quote-perl libref-util-perl libmodule-implementation-perl libsub-exporter-progressive-perl libvariable-magic-perl libsub-exporter-progressive-perl libsub-exporter-perl libdevel-lexalias-perl libclass-data-inheritable-perl libclass-c3-perl libclass-c3-xs-perl libpackage-stash-perl libsub-name-perl libio-socket-ssl-perl libauthen-sasl-perl libdevel-callchecker-perl libb-hooks-op-check-perl libdynaloader-functions-perl libdevel-caller-perl libnet-ssleay-perl libnet-libidn-perl libnet-idn-encode-perl liburi-perl libdata-optlist-perl libsub-install-perl libalgorithm-c3-perl libparams-util-perl libpadwalker-perl perl-openssl-abi-1.1 libclass-method-modifiers-perl libdbi-perl libdbd-mysql-perl libmysqlclient20

检查复制报错

安装完成后,进行检查,主要报错如下

root@ubuntu1804:~# masterha_check_repl --conf=/etc/mha/app1.cnf
Sat Mar 26 05:20:18 2022 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
Sat Mar 26 05:20:18 2022 - [info] Reading application default configuration from /etc/mha/app1.cnf..
Sat Mar 26 05:20:18 2022 - [info] Reading server configuration from /etc/mha/app1.cnf..
Sat Mar 26 05:20:18 2022 - [info] MHA::MasterMonitor version 0.58.
Sat Mar 26 05:20:19 2022 - [error][/usr/share/perl5/MHA/MasterMonitor.pm, ln427] Error happened on checking configurations. Redundant argument in sprintf at /usr/share/perl5/MHA/NodeUtil.pm line 195.
Sat Mar 26 05:20:19 2022 - [error][/usr/share/perl5/MHA/MasterMonitor.pm, ln525] Error happened on monitoring servers.
Sat Mar 26 05:20:19 2022 - [info] Got exit code 1 (Not master dead).

MySQL Replication Health is NOT OK!

提示这里有报错 at /usr/share/perl5/MHA/NodeUtil.pm line 195;
打开文件查看,发现是解析mysql版本有问题,查看mysql版本,网上查找解决办法,注释后源代码及修改后代码如下:

mysql> select version();
+-----------------------------+
| version()                   |
+-----------------------------+
| 5.7.37-0ubuntu0.18.04.1-log |
+-----------------------------+
1 row in set (0.00 sec)
vim /usr/share/perl5/MHA/NodeUtil.pm +195

#sub parse_mysql_version($) {
#  my $str = shift;
#  my $result = sprintf( '%03d%03d%03d', $str =~ m/(\d+)/g );
#  return $result;
#}
sub parse_mysql_version($) {
  my $str = shift;
 ($str) =  $str =~ m/^[^-]*/g;
  my $result = sprintf( '%03d%03d%03d', $str =~ m/(\d+)/g );
  return $result;
}

#sub parse_mysql_major_version($) {
#  my $str = shift;
#  my $result = sprintf( '%03d%03d', $str =~ m/(\d+)/g );
#  return $result;
#}
sub parse_mysql_major_version($) {
  my $str = shift;
  $str =~ /(\d+)\.(\d+)/;
  my $strmajor = "$1.$2";
  my $result = sprintf( '%03d%03d', $strmajor =~ m/(\d+)/g );
  return $result;
}

再次检查
root@ubuntu1804:~# masterha_check_repl --conf=/etc/mha/app1.cnf
...
MySQL Replication Health is OK.

1

https://github.com/yoshinorim/mha4mysql-manager/issues/116

posted @ 2022-03-26 14:40  windman  阅读(527)  评论(0编辑  收藏  举报