MySQL主流高可用架构实战之MHA
MHA简介:
MHA,即MasterHigh Availability Manager and Toolsfor MySQL,是日本的一位MySQL专家采用Perl语言编写的一个脚本管理工具,该工具仅适用于MySQLReplication 环境,目的在于维持Master主库的高可用性。
MHA(Master High Availability)是自动的master故障转移和Slave提升的软件包.它是基于标准的MySQL复制(异步/半同步).
MHA组成部分:
MHA由两部分组成:
-
MHA Manager(管理节点)
-
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工具包功能介绍:
-
Manager工具:
#masterha_check_ssh : 检查MHA的SSH配置。 #masterha_check_repl : 检查MySQL复制。 #masterha_manager : 启动MHA。 #masterha_check_status : 检测当前MHA运行状态。 #masterha_master_monitor : 监测master是否宕机。 #masterha_master_switch : 控制故障转移(自动或手动)。 #masterha_conf_host : 添加或删除配置的server信息。
2. Node工具:
#save_binary_logs : 保存和复制master的二进制日志。 #apply_diff_relay_logs : 识别差异的中继日志事件并应用于其它slave。 #filter_mysqlbinlog : 去除不必要的ROLLBACK事件(MHA已不再使用这个工具)。 #purge_relay_logs : 清除中继日志(不会阻塞SQL线程)。
实战图表展示:
实战开始:
环境介绍:
第一步操作:生成ssh无密钥证书
主库(100)执行生成密钥操作:
从库(101)执行生成密钥操作:
管理节点(102)生成密钥过程:
主库(100)执行接收密钥的过程:
在主库上传送合成密钥:
在三台服务器上,编辑/etc/hosts文件,分别加入三台主机hostname
验证主机名登陆,密钥验证:
分别在三台机器上执行:
搭建主从环境(一主两从架构,我这里是mysql 5.7版本)
在所有节点上都要执行
在Master(100)上面安装数据节点:
首先要先安装mysql依赖的perl环境
解压数据节点的包
安装perl-cpan软件包
在从库(101)上面安装数据节点:
同主库一样的安装操作;
在manager管理节点(102)上面安装管理节点:
首先先要安装环境需要的介质包
再安装数据节点:
最后安装管理节点:
环境配置,基础安装操作完成。
下面来进行管理节点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搭建演练结束
原文地址:https://blog.51cto.com/sumongodb/1951495


浙公网安备 33010602011771号