一、总概
1、MHA介绍
MHA(Master High Availability)是自动的master故障转移和Slave提升的软件包.它是基于标准的MySQL复制(异步/半同步).
MHA有两部分组成:MHA Manager(管理节点)和MHA Node(数据节点).
MHA Manager可以单独部署在一台独立机器上管理多个master-slave集群,也可以部署在一台slave上.MHA Manager探测集群的node节点,当发现master出现故障的时候,它可以自动将具有最新数据的slave提升为新的master,然后将所有其 它的slave导向新的master上.整个故障转移过程对应用程序是透明的。
MHA node运行在每台MySQL服务器上(master/slave/manager),它通过监控具备解析和清理logs功能的脚本来加快故障转移的。
2、MHA工作原理
-从宕机崩溃的master保存二进制日志事件(binlog events)。
-识别含有最新更新的slave。
-应用差异的中继日志(relay log)到其它slave。
-应用从master保存的二进制日志事件(binlog events)。
-提升一个slave为新master。
-使其它的slave连接新的master进行复制。
3、MHA工具包:
(1)、 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工具(这些工具通常由MHA Manager的脚本触发,无需人手操作)。
- save_binary_logs : 保存和复制master的二进制日志。
- apply_diff_relay_logs : 识别差异的中继日志事件并应用于其它slave。
- filter_mysqlbinlog : 去除不必要的ROLLBACK事件(MHA已不再使用这个工具)。
- purge_relay_logs : 清除中继日志(不会阻塞SQL线程)。
二、主机部署
三、首先用ssh-keygen实现三台主机之间相互免密钥登录
注意:如果不能实现任何两台主机间两两可以无密登录,后面的步骤会有问题。
四、安装MHAmha4mysql-node,mha4mysql-manager 软件包
1、manager mha4mysql-manager软件安装
说明有很多依赖包没有安装,解决方法:
再安装
2、node MHAmha4mysql-node软件安装
五、MHA的配置
1、管理机manager上配置MHA文件
2、masterha_check_ssh工具验证ssh信任登录是否成功
注意:用ssh-keygen实现三台主机之间相互免密钥登录决定这一步是否成功。
成功!
3、masterha_check_repl工具验证mysql复制是否成功
注意:上一篇文章中的master--slaver是否成功决定这一步是否成功。或是MHA文件配置的用户账号有关。
成功。
4、启动MHA manager,并监控日志文件
5、测试master(231)宕机后,是否会自动切换
6、故障转移后,用命令恢复原来的master
(1)、在旧master上执行
(2)然后在manager节点上:
过程中一直输入YES;
这样的话mysql主从机进行了切换。可以测试一下数据在新的master(232)的表中新增数据后,在新slave(231)对应的表中是否已实现数据同步。
六、MHA已完成配置并进行了测试。但如果是程序连接数据库并不会自动切换IP,那我们如何实现呢,请期待一篇keepalive + VIP安装配置。