一、 任务
由于MyAWR服务端每天收到所有客户端发来的数据,导致MyAWR服务端的data目录(每个客户端均有相应的database)和binlog目录(写入database)逐日递增,空间有限,而且这些数据和日志是可以每天清理的,因此,需要每天清理data目录下MyAWR客户端的database,以及清理binlog日志。
二、 实现
1、 每天自动清理binlog日志:修改my.cnf中的expire_logs_days = 1,然后重启mysql。
2、 每天手工清理相应的database:
在已安装mysql客户端的服务器上,使用mysql操作系统用户,执行:sh ./drop_database.sh
drop_database.sh
#!/bin/bash
mysql -uroot -proot -h10.186.20.91 -P3306 -Nse"show databases like 'm010%'" 2>/dev/null > drop_database.tmp
while read line
do
mysql -uroot -proot -h10.186.20.91 -P3306 -Nse"drop database $line" 2>/dev/null
done < drop_database.tmp
3、 关闭mysql用户的Linux定时任务Crontab:
涉及文件:
/etc/cron.allow文件:定义允许使用crontab命令的用户
/etc/cron.deny文件:定义拒绝使用crontab命令的用户
这两个文件有优先级,普通用户在执行crontab命令的时候
(1)系统先检测cron.allow文件是否存在;如果存在,则检测文件中存在的用户中是否有当前用户,检测通过则开始执行,检测不通过直接提示该用户没有执行权限
(2)当系统没有检测到cron.allow文件存在的时候,则接下来检测cron.deny文件,看当前用户是否被deny掉,如果没有在cron.deny文件中检测到当前运行crontab的用户,则该命令可以成功执行,如果有检测到该用户在cron.deny文件中,则直接提示该用户没有执行权限。
解决方法:将mysql用户从/etc/cron.allow文件中删除即可。
3、参考文章:
网友评论