近期要完善mysql监控,故整理出此文档以备查阅。
以下监控内容均为mysql部分,linux操作系统部分未整理
1. 复制状态
需发邮件报警的项:
1.error日志
2. 死锁
不需报警,仅绘图的项:
1.mysql连接数(Threads_connected)
2.复制延迟
3.QPS/TPS
注:以上3项需绘制screen,即多张图在一个屏幕上同时显示
以下监控内容均为mysql部分,linux操作系统部分未整理
如下为需要部署至zabbix的监控项:
需发短信报警的项:1. 复制状态
需发邮件报警的项:
1.error日志
2. 死锁
不需报警,仅绘图的项:
1.mysql连接数(Threads_connected)
2.复制延迟
3.QPS/TPS
注:以上3项需绘制screen,即多张图在一个屏幕上同时显示
如下为脚本部署的项:
1.
慢sql日志 一周抽取一次 发邮件
#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin #有的机器在crontab中执行 mysqlsla时不出结果,加上PATH就好了,或者使用绝对路径
export PATH
CURRENT_DATE=`/bin/date +%y%m%d`
WEEK_AGO=`/bin/date -d "1 week ago" +%y%m%d`
for PORT in 3306
do
sed -n '/^# Time: '"$WEEK_AGO"'/,/^# Time: '"$CURRENT_DATE"'/'p /mysqldata/$PORT/slow_statement.log > /tmp/slow_tmp_$PORT.txt
mysqlsla /tmp/slow_tmp_$PORT.txt > /bak/slow_log/slow_log_113_$PORT.txt
done
/usr/bin/rsync -az /dbdata/bak/slow_log/ 10.0.0.x::mysqlslowlog
#!/bin/sh
zip -jq /tmp/mysql_slow_log.zip /bak/mysql_db_bak/slow_log/*.txt
mutt dba@xxx.com -s "mysql周例行慢sql日志分析" -a /tmp/mysql_slow_log.zip rm -f /tmp/mysql_slow_log.zip
#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin #有的机器在crontab中执行 mysqlsla时不出结果,加上PATH就好了,或者使用绝对路径
export PATH
CURRENT_DATE=`/bin/date +%y%m%d`
WEEK_AGO=`/bin/date -d "1 week ago" +%y%m%d`
for PORT in 3306
do
sed -n '/^# Time: '"$WEEK_AGO"'/,/^# Time: '"$CURRENT_DATE"'/'p /mysqldata/$PORT/slow_statement.log > /tmp/slow_tmp_$PORT.txt
mysqlsla /tmp/slow_tmp_$PORT.txt > /bak/slow_log/slow_log_113_$PORT.txt
done
/usr/bin/rsync -az /dbdata/bak/slow_log/ 10.0.0.x::mysqlslowlog
#!/bin/sh
zip -jq /tmp/mysql_slow_log.zip /bak/mysql_db_bak/slow_log/*.txt
mutt dba@xxx.com -s "mysql周例行慢sql日志分析" -a /tmp/mysql_slow_log.zip rm -f /tmp/mysql_slow_log.zip
2.
数据库备份检查 一天抽取一次 发邮件
备份监控的几项要求:
1).显示备份大小,防止没备份到
2).比较前一天的备份,是增长了还是减少了
3).确认是不是当日备份
4).当天共备份多少个数据库
#!/bin/sh
CURRENT_DATE=`/bin/date +%Y%m%d`
LAST_DATE=`date -d last-day +%Y%m%d`
ls -lh /dbserver_mysql_auto_bk |grep -E "$CURRENT_DATE|$LAST_DATE" | awk '{print $5,$9}' | xargs -n4 |awk '{print $1"-->"$3" "$4'} > /usr/local/bin/backup_script/mysql_daily_backup_check.txt
COUNT=`cat /usr/local/bin/backup_script/mysql_daily_backup_check.txt | wc -l`
echo 共备份$COUNT个数据库 >> /usr/local/bin/backup_script/mysql_daily_backup_check.txt
mutt dba@xx.com -s "mysql例行备份检查"
备份监控的几项要求:
1).显示备份大小,防止没备份到
2).比较前一天的备份,是增长了还是减少了
3).确认是不是当日备份
4).当天共备份多少个数据库
#!/bin/sh
CURRENT_DATE=`/bin/date +%Y%m%d`
LAST_DATE=`date -d last-day +%Y%m%d`
ls -lh /dbserver_mysql_auto_bk |grep -E "$CURRENT_DATE|$LAST_DATE" | awk '{print $5,$9}' | xargs -n4 |awk '{print $1"-->"$3" "$4'} > /usr/local/bin/backup_script/mysql_daily_backup_check.txt
COUNT=`cat /usr/local/bin/backup_script/mysql_daily_backup_check.txt | wc -l`
echo 共备份$COUNT个数据库 >> /usr/local/bin/backup_script/mysql_daily_backup_check.txt
mutt dba@xx.com -s "mysql例行备份检查"
如下为待定项,后续酌情添加:
1.innodb buffer命中率
2.Query Cache
3.Table Cache 状态量
4.Thread Cache
5.锁定状态
6.Tmp table
7.Binlog Cache
8.Innodb_log_waits 量
9.Threads_running
10.IOPS
11.opened tables
2.master和slave的复制点是否一致(曾经出现过slave监测无延迟,但已落后master一大截的情况,原因为网络带宽不足)
11.opened tables
如下是需要定期检查的项:
1.innodb共享表空间(如果有)2.master和slave的复制点是否一致(曾经出现过slave监测无延迟,但已落后master一大截的情况,原因为网络带宽不足)