MySQL实例组与DNS和MHA/ZABBIX架构示意图:
DNS搭建:http://www.cnblogs.com/jiangxu67/p/4801230.html
MHA分析:http://www.cnblogs.com/jiangxu67/p/4487248.html
总体思想是前端应用和数据库通过域名解析,域名通过Bind服务的数据库保存,MHA和ZABBIX分别对实例群集中的主库和从库进行检测和管理。
MHA:
只对主库进行检测,当有mha_manager管理的主库出现异常时,按照自身配置文件的从库数据进行检查和比对,选择新主库上线,其他从库与新主库建立复制关系。在新主库上线环节可以增加perl代码,实现将DNS数据里面的异常主库下线和新主库上线的动作。
ZABBIX:
对从库的状态进行实时监控,监控粒度基于ZABBIX的配置。在ZABBIX的Action中配置一个Trigger条件的触发动作,将例如实例宕、从库I/O和SQL线程中断等问题作为条件(这里最好将主库和从库分为两个hostgroup,触发条件限制hostgroup=db_slave,防止ZABBIX修改主库域名,主库域名只由MHA负责)。
触发条件调用外部脚本,对传出的参数进行处理,Action外部接口传出的三个参数依次为:
1、Action operations里面的收件人;
2、Action Default Subject;
3、Action Default Message;
脚本只要对自定义的Subject或者Message中的{HOSTNAME1}、{ITEM.NAME1}、{ITEM.VALUE}进行判断就可以实现区分问题和通知DNS的功能。