1,部署了个mysql从数据库,需要时时监控这个从数据库的主从状态。原理的话,是通过从mysql上的zabbix执行show slave status获取
Slave_IO_Running|Slave_SQL_Running状态是否都为Yes来判断主从是否正常。
MySQL同步功能由3个线程(master上1个,slave上2个)来实现,简单的说就是:master发送日志一个,slave接收日志一个,slave运行日志一个。
首先,我们解释一下 show slave status 中重要的几个参数:
Slave_IO_Running: I/O线程是否被启动并成功地连接到主服务器上。
Slave_SQL_Running: SQL线程是否被启动。
Seconds_Behind_Master:本字段是从属服务器“落后”多少的一个指示。当从属SQL线程正在运行时(处理更新),本字段为在主服务器上由此线程执行的最近的一个事件的时间标记开始,已经过的秒数。当此线程被从属服务器I/O线程赶上,并进入闲置状态,等待来自I/O线程的更多的事件时,本字段为零。总之,本字段测量从属服务器SQL线程和从属服务器I/O线程之间的时间差距,单位以秒计。
那么如何监控从服务器是否正常运行呢?
2,我们可以通过一条命令来获取主从同步信息:
mysql -uzabbix -p -e ‘show slave status\G‘ |grep -E "Slave_IO_Running|Slave_SQL_Running"|awk ‘{print $2}‘|grep -c Yes
主要获取的就是以下两个值
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
3,创建个Mysql的配置文件,在zabbix_agent安装目录下,
在userparameter_mysql.conf文件里添加最后一行,好处是在获取主从同步的信息时不会有在命令行上使用密码下的提示,
UserParameter=mysql.replication,HOME=/etc/zabbix/etc /usr/local/mysql/bin/mysql -e ‘show slave status\G‘ |grep -E "Slave_IO_Running|Slave_SQL_Running"|awk ‘{print $2}‘|grep -c Yes
重启agent客户端
在zabbix_server端检查是否可以获取主从同步信息,
用脚本方式都会有这样的提示,
会导致在zabbix会报错
4,在zabbix server上创建template模版
新建模版Template App MySQL Replication
Configuration|Templates|create templates,只要填写下Template name,选择下group即可
在新建Template App MySQL Replication上创建Applications
创建items,key那边手动填写mysql.replication
创建triggers触发器,
点Add,下图为该triggers触发器的Expression表达式。当获取的key值不为2时报警
添加Graphs
到Monitoring--Graphs查看监控图表
原文地址:http://blog.51cto.com/536410/2153230