说明:
部署了个mysql从数据库,需要时时监控这个从数据库的主从状态。原理的话,是通过从mysql上的zabbix执行show slave status获取
Slave_IO_Running|Slave_SQL_Running状态是否都为Yes来判断主从是否正常。
具体:
1. 从mysql上允许zabbix执行show slave status查询主从状态。在从mysql上操作
> grant replication client on *.* to 'zabbix'@'localhost' identified by 'zabbix'; > Flush privileges;
2. 创建bin文件
# vim /usr/local/zabbix/bin/mysql_replication.sh //内容如下 #!/bin/sh # Monitor mysql replication # carl20150615 1st #PATH /usr/local/mysql/bin/mysql -uzabbix -p"zabbix" -e 'show slave status\G'|grep -E "Slave_IO_Running|Slave_SQL_Running"|awk '{print $2}'|grep -c Yes
3. 创建conf文件,这一步主要是为了自定义key
# vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/mysql_replication.conf //内容如下 UserParameter=mysql.replication,/usr/local/zabbix/bin/mysql_replication.sh
4. 在zabbix server上创建template模版
4.1 新建模版Template App MySQL Replication
Configuration|Templates|create templates,只要填写下Template name,选择下group即可
4.2 在新建Template App MySQL Replication上创建Applications
4.3 创建items,key那边手动填写mysql.replication
4.4 创建triggers触发器,
下图为该triggers触发器的Expression表达式。当获取的key值不为2时报警
效果:
1. 关闭mysql从库
> stop slave;
2. 开启mysql从库状态
> start slave;
截图省略,太麻烦了!
附录:
附录1:grant replication client on *.* to ‘zabbix’@’localhost’ identified by ‘zabbix’; 网上说replication client已经是只能执行show slave status的最小权限了。
附录2:对于mysql 5.6版本通过/usr/local/mysql/bin/mysql -uzabbix -p”zabbix” -e ‘show slave status\G’|grep -E “Slave_IO_Running|Slave_SQL_Running”|awk ‘{print $2}’|grep -c Yes执行获取mysql主从状态时总是会看到Warning: Using a password on the command line interface can be insecure这个。因为不影响报警,就没去管了