MHA(Master HA)是一款开源的由Perl语言开发的MySQL高可用服务器托管网架构方案。它为MySQL 主从复制架构提供了 automating master failover 功能。MHA在监控到 master 节点故障时,会提升其中拥有最新数据的 slave 节点成为新的 master 节点,在此期间,MHA 会通过于其它从节点获取额外信息来避免一致性方面的问题。MHA 还提供了 master 节点的在线切换功能,即按需切换 master / slave 节点。
MHA软件由两部分组成,Manager工具包和Node工具包,具体的说明如下:
MHA Manager(管理节点) | 作用 |
---|---|
masterha_check_ssh | 检查MHA的 |
ssh-key masterha_check_repl | 检查主从复制情况 |
masterha_manger | 启动MHA |
masterha_check_status | 检测MHA的运行状态 |
masterha_master_monitor | 检测master是否宕机 |
masterha_master_switch | 手动故障转移 |
masterha_conf_host | 手动添加server信息 |
masterha_secondary_check | 建立TCP连接从远程服务器 |
masterha_stop | 停止MHA |
Node工具包主要包括以下几个工具:
MHA Node(数据节点) | 作用 |
---|---|
save_binary_logs | 保存宕机的master的binlog |
apply_diff_relay_logs | 识别 relay logs的差异对比 |
filter_mysqlbinlog | 防止回滚事件,截取日志 |
purge_relay_logs | 清除中继日志relay_logs |
MHA故障发现与转移过程
转移过程:保证所有从属服务器之间数据是一致的。
比对后,将差异数据发往每一个从属服务器。所有从属服务器日志与主服务器保持同步。
主服务器选择方案:
VIP虚拟IP漂移,将原有的VIP指向新的主服务器。大概有几秒中时间。
old master恢复后:
总结一下
优点:
- 由perl语言开发的开源工具
- 可以支持基于GTID的复制模式
- 当主DB不可用时,从多个从服务器中选举出来新的主DB
- 提供了主从切换和故障转移功能,在线故障转移时不易丢失数据
- 同一个监控节点可以监控多个集群
缺点:
- 需要编写脚本或利用第三方工具来实现VIP的配置
- MHA启动后只监控主服务器是否可用,没办法监控从服务器
- 需要基于SSH免认证登陆配置,存在一定的安全隐患
- 没有提供从服务器的读负载均衡功能
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
配置流程 1)接口配置IP地址 interface g1/0/0 ip address 10.1.1.1 24 interface g1/0/1 ip address 20.1.1.1 24 2)配置trust firewall zone trust set …