Mysql通用日志(general)文件太大,想保留近期数据,又想不占用太多空间,该如何定期清理与备份
一、编写备份与清理的脚本
创建存放脚本和备份日志的目录
mkdir -p /mysql_backup/log
创建脚本
cd /mysql_backup
touch msql_backup.sh
chmod +x msql_backup.sh
查看日志文件存放目录
mysql -uroot -p123
mysql> show variables like 'general%';
+------------------+---------------------+
| Variable_name | Value |
+------------------+---------------------+
| general_log | ON |
| general_log_file | /var/log/select.log |
+------------------+---------------------+
2 rows in set (0.00 sec)
vim msql_backup.sh
#!/bin/bash
#第一步备份
general_log_file=/var/log/select.log
backup_dir=/mysql_backup/log
logs=$(find $backup_dir/ -name "*.log" | wc -l)
if [ $logs -ge 3 ];then
rm -rf $backup_dir/*
cp -a $general_log_file $backup_dir/select_backup-`date +%F`.log
else
cp -a $general_log_file $backup_dir/select_backup-`date +%F`.log
fi
#第二步,清楚数据(如果直接删除日志文件,日志数据并不会消失,再次创建的文件依旧很大)
cat /dev/null > $general_log_file
二、编写计划任务
创建计划任务
crontab -e
0 0 */3 * * /mysql_backup/msql_backup.sh #表示每隔3天晚上的12点整会执行该脚本