CentOS下用crontab 定时任务监控Mysql磁盘空间

最近作产品并发测试的时候,因为日志量比较大,日志系统(Mysql数据库)很快将磁盘空间写满。首先想到用crontab写定时任务监控mysql占用的空间。思路大致如下:

1、首先通过

select round(sum((DATA_LENGTH+INDEX_LENGTH)/1024/1024),3) as size from INFORMATION_SCHEMA.TABLES where TABLE_NAME IN(?)

 监控,如果超过阀值则执行清理

2、导出jar备用

3、定义crontab任务 调用jar。参考http://zh.wikipedia.org/wiki/Cron 定义任务脚本

*/1 * * * * /home/archive_log.sh

archive_log.sh内容如下

java -cp /home/archive_log.jar  com.XXX.Archive

最后 service crond reload 刷新任务列表

4、遇到的问题总结

开始任务不执行,排查过程如下

1)查看/var/log/cron有输出

2)查看/var/spool/mail/root提示java命令不识别(JAVA_HOME已经定义)

于是在archive_log.sh中加入

JAVA_HOME=/usr/bin/jdk1.7.0_51/
PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME HADOOP_HOME PATH CLASSPATH

另外开始写成java -cp archive_log.jar com.XXX.Archive提示找不到main class,-cp写成绝对路径即可

在实际测试过程可能遇到业务进程将Mysql连接占满,导致检测业务无法获取连接的情况,此时需要在检测代码中持有一个连接不关闭,并运行为守护进程。

猜你喜欢

转载自shuaizhuaidym.iteye.com/blog/2042340
今日推荐