当前位置: 移动技术网 > IT编程>数据库>Mysql > mysql表空间增长超量就报警的脚本实现讲解

mysql表空间增长超量就报警的脚本实现讲解

2018年11月01日  | 移动技术网IT编程  | 我要评论

比较简单的一个逻辑,通过information_schema.tables输出表空间数据大小,在两个时间点进行比较,增量大于1000000000b则发邮件警报,我这里设定的时间间隔为七天

#!/bin/bash
mysql=/usr/local/mysql
user=yourdatabaseuser
passwd=yourdatabasepasswd
now=/datalength/now
before=/datalength/before
info=/datalength/info
date=`date +%y_%m_%d`
#更新上个时间点的表空间数据文件
cat $now > $beforei
echo >> $info
echo  "========================$date===========================" >> $info
#输出当前表空间数据
$mysql -u$user -p$passwd -e "select table_name,data_length from information_schema.tables where table_name in ('table_a','table_b','table_c') group by table_name" > $now
#邮件标识
mail_flag=0
line=`wc -l $now | cut -d" " -f1`
for ((i=2;i<=$line;i++));do
table=`head -$i $now | tail -1 |awk '{print $1}'`
#当前表空间大小(第i行)
n=`head -$i $now | tail -1 |awk '{print $2}'`
#之前表空间大小(第i行)
b=`head -$i $before | tail -1 |awk '{print $2}'`
#计算增量
increment=`expr $n - $b`
#若增量大于规定的大小,则更新邮件标识
if [ $increment -gt 1000000000 ];then
mail_flag=1
fi;
#输出增量
echo "table $table increment is $increment b" >> $info
done;
#根据邮件标识判断是否发邮件
if [ $mail_flag = 1 ];then
mail -s xx@qq.com < $info
fi;

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网