四十三、搭建MHA高可用
实验环境
三台服务器
10.154.0.111 主 node
10.154.0.112 从1 node
10.154.0.113 从2 manager
搭建MySQL MHA
1、下载MHA软件
这里使用郭老师提供的MHA-2019-6.28.zip软件包,点我下载
0.58版本下载
0.56版本下载
xshell6绿色版下载
2、上传解压安装
#三台服务器都做
$ yum install perl-DBD-MySQL -y
$ unzip MHA-2019-6.28.zip
$ rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm
这里我上传使用的xftp6上传的
MHA是由perl语言编写的,需要安装perl连接mysql的驱动依赖包
3、在主库创建MHA账号
mysql> grant all privileges on *.* to mha@'10.154.0.%' identified by 'mha';
mysql> select user,host from mysql.user;
需要在主库从库都验证一下是否同步了mha用户
4、Manager软件安装
#在manager节点上执行,我这里的manager节点是10.154.0.113
$ yum install -y \
perl-Config-Tiny \
epel-release \
perl-Log-Dispatch \
perl-Parallel-ForkManager \
perl-Time-HiRes
$ rpm -ivh mha4mysql-manager-0.56-0.el6.noarch.rpm
5、编辑manager节点配置文件
#创建配置文件目录
$ mkdir -p /etc/mha
#创建日志目录
$ mkdir -p /var/log/mha/app1
#编辑mha配置文件
cat > /etc/mha/app1.cnf <<EOF
[server default]
manager_log=/var/log/mha/app1/manager
manager_workdir=/var/log/mha/app1
master_binlog_dir=/data/binlog #主库binlog日志路径
user=mha
password=mha
ping_interval=2 #每隔2s检测master是否存活,默认检测4次
repl_password=123
repl_user=repl
ssh_user=root
[server1]
hostname=10.154.0.111
port=3306
[server2]
hostname=10.154.0.112
port=3306
[server3]
hostname=10.154.0.113
port=3306
EOF
MHA可以同时管理多套主从复制,每套主从可以通过配置文件区分,我这里写的app1,如果是生产环境,可以根据项目来命名,如/etc/mha/taobao.cnf,注意改了配置文件名相应目录名也要更改。
6、状态检查
#在mannager上做检测ssh跟主从是否正常
$ masterha_check_ssh --conf=/etc/mha/app1.cnf
$ masterha_check_repl --conf=/etc/mha/app1.cnf
这里检查主从状态出错,错误如下
这个故障耗了不少时间,结果发现是开启防火墙导致的,关闭三台主机的防火墙跟selinux即可。
其他错误可参考:错误汇总
7、开启MHA,在manager上做
$ nohup masterha_manager \
--conf=/etc/mha/app1.cnf \
--remove_dead_master_conf \
--ignore_last_failover < /dev/null> /var/log/mha/app1/manager.log 2>&1 &
8、查看MHA状态
$ masterha_check_status --conf=/etc/mha/app1.cnf
app1 (pid:22974) is running(0:PING_OK), master:10.154.0.111
其他配置
这个实验我没有配置软链接跟ssh免密登录,因为这三台主机是我克隆的,所以SSH密钥对是一致的。
不过在这里还是写下ssh免密登录配置,跟软链接配置吧,以后可能会用上。
1、设置软链接
# 第一种方案
ln -s /usr/local/mysql/bin/mysql /usr/bin/
ln -s /usr/local/mysql/bin/mysqlbinlog /usr/bin/
/bin:普通用户可以使用的命令文件,以及后期安装的一些软件的运行脚本。
/sbin:超级用户使用的命令文件。
设置软链接是因为mysql程序跟mysqlbinlog程序需要被MHA脚本调用,而MHA脚本默认安装在/usr/bin中。
参考资料:
MHA高可用搭建
B站课程MHA高可用搭建 P144
2、配置SSH免密登录
#在10.154.0.111上执行
$ ssh-keygen
$ cd /root/.ssh
$ ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.154.0.112
$ ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.154.0.113
#验证,成功执行date命令显示系统时间表示配置成功
$ ssh 10.154.0.111 date
Sat Apr 17 14:14:16 CST 2021
$ ssh 10.154.0.112 date
Sat Apr 17 14:14:16 CST 2021
$ ssh 10.154.0.113 date
Sat Apr 17 14:14:16 CST 2021
学习来自:B站课程:搭建MHA高可用 P144,《MySQL入门与提高实践》第18章