mysql5.7高可用架构之MHA
一、MHA简介
MHA(Master High Availability)目前在mysql高可用方面比较成熟。是一套优秀的作为 mysql高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA 能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA 能在最大程度上保证数据的一致性,以达到真正意义上的高可用。
该软件由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点)。管理节点可以单独部署在一台独立的机器上来管理多个master-slave集群,也可以部署在一台slave节点上。数据节点运行在每台mysql服务器上。Manager会定期检查master,若出现故障时,会自动将最新数据的slave提升为新的master,然后将其他的slave指向新的master。整个故障转移程序完全透明。
二、搭建过程
server2 :master node
Server3和server4: slave node
Server5:Manager
在server2、3、4为gtid主从复制的环境下进行mysql的高可用搭建。(gtid的主从复制的搭建,可以参考之前博客https://www.cnblogs.com/uthnb/p/9719800.html)
1)首先进行软件的安装:(在server2、3、4为gtid主从复制的情况进行如下操作)
Server2:
---> yum install mha4mysql-node-0.56-0.el6.noarch.rpm
Server3:
---> yum install mha4mysql-node-0.56-0.el6.noarch.rpm
---> mysql -p
Mysql > set global read_only=1 # 设置节点为只读
Server4:
---> yum install mha4mysql-node-0.56-0.el6.noarch.rpm
---> mysq -p
Mysql > set global read_only=1
Server5:
---> yum install mha4mysql-node-0.56-0.el6.noarch.rpm mha4mysql-manager-0.56-0.el6.noarch.rpm
perl-Config-Tiny-2.12-7.1.el6.noarch.rpm perl-Email-Date-Format-1.002-5.el6.noarch.rpm
perl-Log-Dispatch-2.27-1.el6.noarch.rpm perl-Mail-Sender-0.8.16-3.el6.noarch.rpm
perl-Mail-Sendmail-0.79-12.el6.noarch.rpm perl-MIME-Lite-3.027-2.el6.noarch.rpm
perl-MIME-Types-1.28-2.el6.noarch.rpm perl-Parallel-ForkManager-0.7.9-1.el6.noarch.rpm
2)对manager(server5)进行配置
---> mkdir /etc/masterha
---> cd /etc/masterha
---> vim app1.cnf
---> masterha_check_ssh --conf=/etc/masterha/app1.cnf # 此时会出现三个节点之间ssh连接验证问题。
解决方法:在server5中生成密钥并分发给各个节点即可。
---> ssh-keygen # 全部回车
---> ssh-copy-id 172.25.2.5 # 把本机设置为锁
---> scp -r .ssh/ server2: # 把生成的key复制给各个节点
---> scp -r .ssh/ server3:
---> scp -r .ssh/ server4:
# 再次执行ssh的检测,是以下状态代表成功
---> masterha_check_ssh --conf=/etc/masterha/app1.cnf
---> masterha_check_repl --conf=/etc/masterha/app1.cnf # 进行repl同步复制的检测,会出现如下问题
# 解决方法如下:在server2中进行root用户的授权,在srver3和4中对repl用户授权
Server2: # 创建监控用户
Mysql > grant all on *.* root@’%’ identified by ‘Xniu+123’;
Server3和server4:
Mysql> grant replication slave on *.* to repl@’%’ identified by ‘Xniu+123’;
# 修改之后,在执行repl的检测是ok的。
3)查看MHA MANAGER的状态
---> masterha_check_status --conf=/etc/masterha/app1.cnf # 此时监控还没有打开
4)启动MHA Manager监控
5) 查看启动日志
# 最后一行Ping(SELECT) succeeded, waiting until MySQL doesn't respond.."说明整个系统已经开始监控了。