mysql运维监控

我们的mysql生产库会突然变慢。原因大概是有人在生产库上进行了大数据的查询或者有死锁。

虽然开启了slow sql日志,但一旦生产库变慢往往连一些原本很快的sql都会被拖累至变慢。

所有的sql文都进了slow sql日志,记录变得毫无意义。所以考虑在mysql生产库开始变慢的初期阶段把当时执行的sql 和死锁事物记录下来,以便分析。

为了侦查mysql生产库的变慢需要添加一个zabbix trigger。

然后再添加一个action,负责执行sh脚本

做后完成sh脚本

#!/bin/sh
. /etc/profile
. ~/.bash_profile
mysql -uroot -pXXX -hXX.XX.XX.XX -e"SELECT t.PROCESSLIST_ID,IF (NAME = 'thread/sql/event_scheduler','event_scheduler',t.PROCESSLIST_USER) PROCESSLIST_USER,t.PROCESSLIST_HOST,t.PROCESSLIST_DB,t.PROCESSLIST_COMMAND,t.PROCESSLIST_TIME,t.PROCESSLIST_STATE,t.THREAD_ID,t.TYPE,t.NAME,t.PARENT_THREAD_ID,t.INSTRUMENTED,t.PROCESSLIST_INFO,a.ATTR_VALUE FROM performance_schema.threads t  LEFT OUTER JOIN performance_schema.session_connect_attrs a ON t.processlist_id = a.processlist_id AND (a.attr_name IS NULL OR a.attr_name = 'program_name') WHERE t.TYPE <> 'BACKGROUND' order by t.PROCESSLIST_TIME desc" > sqls.log
mysql -uroot -pXXX -hXX.XX.XX.XX -e"SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS" > locks.log
mysql -uroot -pXXX -hXX.XX.XX.XX -e"SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS" > waits.log
zip dump.zip ./*.log
echo "mainDB server CPU is busy" | mail -s 'mainDB server CPU is busy' -a ./dump.zip [email protected] [email protected]

你可能感兴趣的:(mysql运维监控)