微布开发-清理服务器日志(*.log结尾的文件)及MySQL存储的日志
接上篇,上次提到了排查是因为服务器的磁盘不够导致服务器没有写入的空间,进一步导致服务器宕机,下面是我清理磁盘日志的操作。
清理日志文件(*.log文件)
我们的Java的日志文件是根据日期分开成不同的log,所以我写了一个shell脚本用来每天定时清理三天之前的所有日志文件。
清理的Linux命令如下:
1 | find log文件的文件路径 -mtime +3 -name "*.log" -exec rm -rf {} \; |
shell脚本命令如下:
1 | !/bin/bash |
保存为一个shell脚本文件之后,赋予此文件执行权限:
1 | chmod +x cleanup_logs.sh |
然后写一个定时任务,让这个shell脚本文件每天早上八点执行一次
1 | 打开cron编辑器 |
然后在编辑器中添加以下行,以在每天的固定时间执行脚本(假设你希望在每天的凌晨8点执行):
1 | 0 8 * * * /path/to/cleanup_logs.sh |
清理MySQL中request_log表的文件:
由于这个表已经非常大了、估计多少有个几千万条记录了、通过delete from tableName肯定是不现实了,那么因为需要MySQL会先查数据然后删相关数据,所以我想到了分段删除的思想,也就是分批次来删除半年前的数据,那么这时候就有一个问题了,难不成手动删?显然不现实,于是我想到了MySQL中的定时器PROCEDURE,先定义个PROCEDURE函数,具体函数实现如下:
1 | DELIMITER // |
最后执行CALL DeleteOldRecords();的sql语句使以上函数开始删除相关记录
当然还需要等执行完此函数之后,删除此函数,sql命令如下:
1 | DROP PROCEDURE IF EXISTS DeleteOldRecords; |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 HUT菜鸟小八的博客!
评论




