【MySQL】DNS与MHA/ZABBIX构建的高可用MySQL

MySQL实例组与DNS和MHA/ZABBIX架构示意图:

【MySQL】DNS与MHA/ZABBIX构建的高可用MySQL

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的功能。