MHA架构介绍
MHA是Master High Availability的缩写,它是目前MySQL高可用方面的一个相对成熟的解决方案,其核心是使用perl语言编写的一组脚本,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且能在最大程度上保证数据的一致性,以达到真正意义上的高可用。
基于MHA的架构不像MMM那样需要搭建主主复制,只需要搭建基本的主从复制架构即可。因为MHA在主库挂掉时,是在多个从库中选取出一个从库作为新的主库。MHA集群中的各节点彼此之间均需要基于ssh互信通信,以实现远程控制及数据管理功能。
MHA提供了什么功能:
可以监控Master节点是否可用
当Master不可用时,能在多个Slave中选举出新的Master
提供了主从切换和故障转移功能,MHA会尝试在宕机的Master上保存binlog,在最大程度上保证事务不丢失。但如果是Master所在的服务器已经无法访问,或硬件层面出现了问题,则无法成功保存binlog
MHA可以与半同步复制结合,避免从库之间出现数据不一致的情况
支持MySQL基于GTID和基于日志点的两种复制方式
MHA故障转移过程:
尝试使用ssh登录到宕机崩溃的Master节点上保存二进制日志事件(binlog events);
从多个Slave中识别含有最新更新的Slave,将其作为备选的Master;
然后基于该Slave同步差异的中继日志(relaylog)到其他的Slave上;
接着同步从原Master上保存的二进制日志事件(binlog events);
将备选的Master提升为新的Master;
使其他的Slave连接新的Master进行复制;
在新的Master启动vip地址,保证前端请求可以发送到新的Master。
MHA的架构图如下:

动手搭建MHA架构
本文中所使用的机器说明:
| 名称 |
HOST |
角色 |
| master |
10.7.6.10 |
master mha node |
| slave-01 |
10.7.6.11 |
slave mha node |
| slave-02 |
10.7.6.9 |
slave mha node |
| manager |
10.7.6.9 |
mha manager |
环境版本说明:
操作系统版本:CentOS 7
MySQL版本:5.7
MHA版本:0.58
修改主机名
分别在三台主机上修改IP主机名:
vim /etc/hosts
添加如下配置:
i
关闭防火墙
每个主机上都需要进行操作:
systemctl stop iptables
systemctl stop firewalld
systemctl disable firewalld.service
配置主机间SSH信任,实现免密登录
分别在每台主机上创建密钥对:
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa >/dev/null 2>&1
将公钥分别发送到其他主机上
ssh-copy-id -i /root/.ssh/id_dsa.pub root@master
ssh-copy-id -i /root/.ssh/id_dsa.pub root@slave-01
ssh-copy-id -i /root/.ssh/id_dsa.pub root@slave-02
验证免密登录是否成功:
ssh master
ssh slave-01
ssh slave-02
如果不用输入密码就能登录,则证明配置成功。
MYSQL主从复制搭建
安装文件准备
需要分别将MYSQL安装包mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar和MHA node安装包mha4mysql-node-0.58-0.el7.centos.noarch.rpm上传到三台主机上,
并且将MHA manager安装包mha4mysql-manager-0

438

被折叠的 条评论
为什么被折叠?



