企业中MySQL主流高可用架构实战三部曲之MHA

2018年3月3日22:38:04 发表评论 8

MHA高可用架构是基于主从复制原理而部署的,是最常见,最主流的架构。

MHA简介:

MHA,即MasterHigh Availability Manager and Toolsfor MySQL,是日本的一位MySQL专家采用Perl语言编写的一个脚本管理工具,该工具仅适用于MySQLReplication 环境,目的在于维持Master主库的高可用性。

MHA(Master High Availability)是自动的master故障转移和Slave提升的软件包.它是基于标准的MySQL复制(异步/半同步).

MHA组成部分:

MHA由两部分组成:

  1. MHA Manager(管理节点)
  2. MHA Node(数据节点)

MHA部署解读:

MHA Manager可以单独部署在一台独立机器上管理多个master-slave集群,也可以部署在一台slave上.MHA Manager探测集群的node节点,当发现master出现故障的时候,它可以自动将具有最新数据的slave提升为新的master,然后将所有其它的slave导向新的master上.整个故障转移过程对应用程序是透明的。

MHA node运行在每台MySQL服务器上(master/slave/manager),它通过监控具备解析和清理logs功能的脚本来加快故障转移的。

MHA优缺点介绍:

优点:

1. 故障切换时,可以自行判断哪个从库与主库的数据最接近,就切换到上面,可以减少数据的丢失,保证数据的一致性

2. 支持 binlog server,可提高 binlog 传送效率,进一步减少数据丢失风险。
3. 可以配置 mysql 5.7 的增强半同步,来保证数据的时时同步

缺点:

1. 自动切换的脚本太简单了,而且比较老化,建议后期逐渐完善。

2. 搭建 MHA 架构,需要开启 linux 系统互信协议,所以对于系统安全性来说,是个不小的考验。

原理介绍:

MHA的目的在于维持MySQL Replication中Master库的高可用性,其最大特点是可以修复多个Slave之间的差异日志,最终使所有Slave保持数据一致,然后从中选择一个充当新的Master,并将其它Slave指向它。

当master出现故障时,可以通过对比slave之间I/O thread 读取主库binlog的position号,选取最接近的slave做为备选主库(备胎)。其它的从库可以通过与备选主库对比生成差异的中继日志。在备选主库上应用从原来master保存的binlog,同时将备选主库提升为master。最后在其它slave上应用相应的差异中继日志并开始从新的master开始复制。

MHA工具包功能介绍:

  1. Manager工具:

2. Node工具:

实战图表展示:

企业中MySQL主流高可用架构实战三部曲之MHA

实战开始:

环境介绍:

第一步操作:生成ssh无密钥证书

主库(100)执行生成密钥操作:

从库(101)执行生成密钥操作:

管理节点(102)生成密钥过程:

主库(100)执行接收密钥的过程:

在主库上传送合成密钥:

在三台服务器上,编辑/etc/hosts文件,分别加入三台主机hostname

验证主机名登陆,密钥验证:

分别在三台机器上执行:

搭建主从环境(一主两从架构,我这里是mysql 5.7版本)

在所有节点上都要执行

在Master(100)上面安装数据节点:

首先要先安装mysql依赖的perl环境

解压数据节点的包

安装perl-cpan软件包

在从库(101)上面安装数据节点:
同主库一样的安装操作;

在manager管理节点(102)上面安装管理节点:

首先先要安装环境需要的介质包

下载地址:https://centos.pkgs.org/

再安装数据节点:

最后安装管理节点:

环境配置,基础安装操作完成。

下面来进行管理节点MHA配置:

创建mha家目录,编辑启动配置文件

创建failover,online 脚本的目录

编辑failover切换脚本:

编辑online_change的脚本:

cd  /usr/local/scripts/

创建完两个脚本,记得赋予执行权限

利用mha工具检测ssh
安装需要的环境包:

执行检测命令;

检测结果显示:都为OK,代表ssh检测成功

结果展示:

在主库(100)执行添加vip的过程:(第一次手动添加)

在管理节点(102)上,执行mha的启动

验证启动成功的命令:查看显示状态

模拟主库故障,查看是否自动切换:

在主库(100)上面执行停掉mysql操作。

切换后,MHA进程会自动停止运行
在管理节点查看:

恢复操作:
把宕掉的主库192.168.56.100恢复起来;

验证结果:重新指向现在的主库192.168.56.101
主从状态一切ok!

MHA搭建演练结束

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: