MHA是一种方便简单可靠的MySQL高可用架构
该软件由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点)
MHA Manager可以单独部署在一台独立的机器上管理多个master-slave集群,也可以部署在一台slave节点上。MHA Node运行在每台MySQL服务器上,MHA Manager会定时探测集群中的master节点,当master出现故障时,它可以自动将最新数据的slave提升为新的master,然后将所有其他的slave重新指向新的master。整个故障转移过程对应用程序完全透明。
在MHA自动故障切换过程中,MHA试图从宕机的主服务器上保存二进制日志,最大程度的保证数据的不丢失,但这并不总是可行的。例如,如果主服务器硬件故障或无法通过ssh访问,MHA没法保存二进制日志,只进行故障转移而丢失了最新的数据。使用MySQL 5.5的半同步复制,可以大大降低数据丢失的风险。MHA可以与半同步复制结合起来。如果只有一个slave已经收到了最新的二进制日志,MHA可以将最新的二进制日志应用于其他所有的slave服务器上,因此可以保证所有节点的数据一致性。
原理图
大概的安装步骤
1) 用ssh-keygen实现四台主机之间相互免密钥登录
2) 安装MHAmha4mysql-node,mha4mysql-manager和perl环境包
3) 管理机manager上配置MHA文件
4) masterha_check_ssh工具验证ssh信任登录是否成功
5) masterha_check_repl工具验证mysql复制是否成功
6) 搭建虚拟IP,MHA自动切换后,IP漂移
7) 启动MHA manager,并监控日志文件
8) 测试master宕机后,是否会自动切换
9) 处理原master主机,MHA重新修改搭建
下面就开始搭建MHA,mysql的主从已经搭建好了,这里就不介绍主从搭建了。
准备主机和IP分配
主机 | IP |
MHA管理机 | 192.168.88.132 |
mysql master机 | 192.168.88.129 |
mysql slave从机1 | 192.168.88.130 |
mysql slave从机2 | 192.168.88.131 |
虚拟IP | 192.168.88.188 |
一、四台主机相互免密钥登录
参考 Linux机器之间免密登录设置_小何117KNO的博客-CSDN博客_linux 免密登录
例如:在master主机做免密登录
ssh-keygen -t rsa ##enter键执行3次
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.88.130 ##含义是对192.168.88.130登录做免密
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.88.131 ##含义是对192.168.88.131登录做免密
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.88.132 ##含义是对192.168.88.132登录做免密
在4台主机都需要相互做一些免密登录。验证直接
ssh 192.168.88.130
看是否能正常进入
二、安装MHAmha4mysql-node,mha4mysql-manager和perl环境包
① 下载perl环境包
perl-Config-Tiny-2.14-7.el7.noarch.rpm
perl-Email-Date-Format-1.002-15.el7.noarch.rpm
perl-Log-Dispatch-2.41-1.el7.1.noarch.rpm
perl-Mail-Sender-0.8.23-1.el7.noarch.rpm
perl-Mail-Send-Loop-0.3-alt1.noarch.rpm ##没有装成功 后面发现不需要
perl-Mail-Sendmail-0.79-21.el7.noarch.rpm
perl-MIME-Lite-3.030-1.el7.noarch.rpm
perl-MIME-Types-1.38-2.el7.noarch.rpm
perl-Parallel-ForkManager-1.18-2.el7.noarch.rpm
perl-Params-Validate-1.08-4.el7.x86_64.rpm
下载的地址在
https://centos.pkgs.org/下载
https://pkgs.org/search/?q=Socket 下载推荐
② 下载MHAmha4mysql-node,mha4mysql-manager
mha manager下载
https://github.com/yoshinorim/mha4mysql-manager/releases
mha node下载
https://github.com/yoshinorim/mha4mysql-node/releases