业务需要部署一套mha高可用架构,这里记录下搭建过程中遇到的坑。
本文主要记录安装过程中的问题,对于前期环境准备问题略过。
首先要在集群的机器上
- 部署ssh互信,
过程略 - 配置一主俩从
过程略 - 安装依赖
yum install perl-DBD-MySQL \
perl-Config-Tiny \
perl-Time-HiRes \
perl-Mail-Sender \
perl-Mail-Sendmail \
perl-MIME-Base32 \
perl-MIME-Charset \
perl-MIME-EncWords \
perl-Params-Classify \
perl-Params-Validate.x86_64 \
perl-Log-Dispatch \
perl-Parallel-ForkManager \
net-tools -y
- 软件安装
官网下载rpm软件包,yum安装
- 问题1
这里我装的官网的0.56的,这个是坑的第一步。
masterha_check_status --conf=/etc/mha/app1.conf
百度后,大家说出现这种问题是因为缺少perl-Mail-Sender和 perl-Log-Dispatch这两个语言环境,需要安装。
但是我执行过,提示我已经安装了,显然我的问题不是这个原因。
反复确认后发现,问题是出现在软件版本上面,我用的是0.56,应该是用0.57,但是官网上最新的包也只有0.56,这不是闹着玩吗。。。。。
百度了一圈,都是要积分下载,有的网站居然要3块钱,不到100k的软件居然用信息差拿来卖钱,这点挺可笑的,不死心的我最后在github上找到了。
https://github.com/lzimd/mha-rpms
卸载了原先的软件,安装0.57版本的软件正常。这里建议先装node,或者直接yum -y install /root/mha4*
- 问题二
软件安装完成后,要进行互信测试和集群状态测试。在集群状态测试中遇到以下问题。
提示这个ip没有授权访问对应账号。
这个原因是没有在俩台从库上建立监控账号授权,属于粗心大意。在从库上添加授权即可。
- 问题三
这里的问题是因为没有在高可用的从库上建立r1复制账号,将来切换的时候,其他从库无法从101上复制数据,这个需要在从库101上去建立对应账号授权。
- 问题四
这里提示没有在101上获取到node版本,检查发现我忘记在从库安装node了,在从库安装node即可。
- 问题五
这里提示找不到mysqlbin,我的mysqlbin命令是修改环境变量,调用的。百度查找的结果是需要做对应命令的软连接到/usr/local/bin下面。三台机器都要做。
这里有个插曲就是,我百度到的所有文章都是同样的命令,我直接拿过来就复制了,也没有思考其中的问题,结果多次执行还是报同样的错误。后来想明白需要修改自己的安装目录的命令到/usr/loacl/bin下面。看来凡是还是要动脑子的啊。
- 问题6
这个提示没找到mysql命令,同样做软连接到/usr/local/bin下,三台做同样操作。
- 问题7
这个问题是生产环境暴露的问题,困扰了好久,一直卡在这一步,提示有多个maser,百度大家都说,在俩台从库上设置开启只读mysql -e ‘set global read_only=1’,但是我的俩台从库配置文件里就设置了只读,显然这个方法不适合我。
原因是什么呢?由于当时是机房批量断电,mha都没来的及做切换,直接挂掉,恢复后开发直接代码中修改从库地址,然后我手动将从库改主。这就导致了原先的从库slave状态没清空,这样就导致明面上有俩个主的情况。但是mha并不认可主库253的身份,
最后是怎么解决的呢,在现在的主库253上清空了slave。
mysql> STOP SLAVE;
Query OK, 0 rows affected (0.02 sec)
mysql> reset slave all;
Query OK, 0 rows affected (0.02 sec)
mysql> show slave status\G
Empty set (0.00 sec)
- 问题8
Tue Aug 31 03:08:10 2021 - [error][/usr/share/perl5/vendor_perl/MHA/ServerManager.pm, ln492] Server 10.157.21.215(10.157.21.215:3306) is dead, but must be alive! Check server settings.
Tue Aug 31 03:08:10 2021 - [error][/usr/share/perl5/vendor_perl/MHA/ManagerUtil.pm, ln177] Got ERROR: at /usr/share/perl5/vendor_perl/MHA/MasterFailover.pm line 268.
Wed Sep 8 08:57:54 2021 - [info] MHA::MasterMonitor version 0.56.
这个错误提示215不存活,网上搜了好多,都没啥用,也是困了好久,后来想起来是不是防火墙拦截了,结果万万没想到,真的就是没关防火墙,之前的运维只关闭了防火墙,没有关闭开机自启动,这次重启后,防火墙又重新开启了。之所以没考虑这方面,还是考虑都别人搭建过一遍的,网络方面应该没啥问题,所有问题办法测试过了,没办法了才抱着试试看的心态,看下网络,白折腾这么久了。。。。
其实好多问题都是粗心大意导致的,细心点完全可以避免。如果事先考虑清楚的话,可以省下好多时间成本。吃一堑长一智吧,菜鸟先飞!!!