学号:20021110101 姓名:遆晶晶
【嵌牛导读】 MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,是一套优秀的作为 MySQL 高可用性环境下故障切换和主从提升的高可用软件。
【嵌牛鼻子】MySQL Java Web技术解析 MHA
【嵌牛正文】
一 概述
在MySQL故障切换过程中,MHA在监控到master节点故障时,会提升其中拥有最新数据的slave节点成为新的master节点,在此期间,MHA会通过与其他从节点获取额外信息来避免一致性方面的问题。
MHA还提供了master节点的在线切换功能,即按需切换master/slave节点。
MHA能做到0~30秒之内自动完成数据库的故障切换操作,并在进行故障切换的过程中,MHA能最大程度上保证数据的一致性,以达到真正意义上的高可用。
二 MHA服务
MHA服务有两种角色,分别是管理节点MHA Manager和数据节点MHA Node
MHA Manager:通常单独部署在一台独立机器上管理多个master/slave集群(组),每个master/slave集群称作一个application,用来管理统筹整个集群。
MHA Node: 运行在每台MySQL服务器器上(master/slave/manager),它通过监控具备解析和清理logs功能的脚本来加快故障转移。
主要是接收管理节点所发出指令的代理,代理需要运行在每一个mysql节点上。简单讲node就是用来收集从节点服务器上所生成的bin-log。对比打算提升为新的主节点之上的从节点是否拥有并完成操作,如果没有发给新主节点在本地应用后再将从节点提升为主节点。
每个复制组内部和Manager之间都需要ssh实现无密码互连,只有这样,在Master出故障时,Manager才能顺利的连接进去,实现主从切换功能。
三 MHA的工作原理
1:从宕机崩溃的master节点保存二进制日志事件(bin-log events);
2:识别含有最新更新的slave;
3:应用差异的中继日志(relay log)到其他slave;
4:应用从master保存的二进制日志事件(bin-log events);
5:提升一个slave为新的master;
6:使用其他的slave连接新的master进行复制。
四 MHA提供的工具
masterha_check_ssh MHA依赖的ssh环境检测工具
masterha_check_repl MySQL复制环境监测工具
masterga_manager MHA服务主程序
masterha_check_status MHA运行检测工具
masterha_check_monitor MySQLmaster节点可用检测工具
masterha_master_swith:master 节点切换工具
masterha_conf_host 添加或删除配置的节点
masterha_stop 关闭MHA服务的工具
Node节点:(这些工具通常由MHA Mananger的脚本出发,无需人为操作)
save_binary_logs 保存和复制master的二进制日志
apply_diff-reply_logs 识别差异和中继日志事件并应用于其他slave
purge_reply_logs 清楚中继日志(不会阻塞SQL线程)
自定义扩展:
secondary_check_script 通过多条网络路由检测master的可用性
master_ip_failover_script 更新application使用的masterip
report_script 发送报告
init_conf_load_script 加载初始配置参数
master_ip_online_change_script 更新master节点ip地址