mysql表空间增长超量就报警的脚本实现讲解
程序员文章站
2022-03-02 17:27:49
比较简单的一个逻辑,通过information_schema.tables输出表空间数据大小,在两个时间点进行比较,增量大于1000000000b则发邮件警报,我这里设定的时间间隔为七天
#!/...
比较简单的一个逻辑,通过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;
上一篇: 将博客搬至CSDN