Linux下使用Logrotate对MySQL日志进行轮转备份
根据自己的需要可以对MySQL的相关日志文件(错误日志、通用查询日志文件和慢查询日志文件)进行按天的转储,并只保留指定天数的备份文件,下面是一个例子:
1)、安装 crond 服务 (如果未安装 yum install logrotate crontabs)
rpm -qa | grep crontabs
yum install crontabs
chkconfig crond --list #如果未设置为自动重启这执行如下命令修改
chkconfig crond on
service crond restart
2)、创建MySQL root密码文件
vi /root/.my.cnf
[mysqladmin]
user = sysadmin
password = mysql
chmod 600 /root/.my.cnf
3)、把mysql-log-rotate拷贝至/etc/logrotate.d目录下,修改其内容为:
# mysql_error.log 错误日志文件
# mysql_general.log 通用查询日志文件
# mysql_slow.log 慢查询日志文件
/app/mysql/mysql3306/logs/mysql_error.log
/app/mysql/mysql3306/logs/mysql_general.log
/app/mysql/mysql3306/logs/mysql_slow.log {
# create 600 mysql mysql
notifempty
daily
rotate 5
copytruncate
nocreate
missingok
compress
dateext
postrotate
# just if mysqld is really running
if test -x /app/mysql/mysql3306/bin/mysqladmin && \
/app/mysql/mysql3306/bin/mysqladmin ping &>/dev/null
then
/app/mysql/mysql3306/bin/mysqladmin flush-logs
fi
endscript
}
4)执行以下命令以测试是否配置正确
/usr/sbin/logrotate -f /etc/logrotate.d/mysql-log-rotate
注:需要查看已备份压缩文件这执行 gunzip file_name.gz 即可
5)定时执行 (每天凌晨执行)
# vim /etc/crontab
59 23 * * * root /usr/sbin/logrotate -f /etc/logrotate.d/mysql-log-rotate