当前位置: 代码迷 >> 综合 >> mysql表空间增长超量告警脚本
  详细解决方案

mysql表空间增长超量告警脚本

热度:61   发布时间:2023-09-27 11:05:00.0

       比较简单的一个逻辑,通过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++));dotable=`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 ];thenmail_flag=1fi;#输出增量echo "Table $table increment is $increment b" >> $info
done#根据邮件标识判断是否发邮件
if [ $mail_flag = 1 ];thentail -$line $info | mail -s "data_length超量告警  $date" xx@qq.com
fi

 

 

 

 

 

 

 

 

 

 

 

 

  相关解决方案