You are here
MariaDB Log Rotation
Modern Linux Systems have a mechanism called logrotate to rotate different log files.
The general configuration file is located under /etc/logrotate.conf and specific changes are under /etc/logrotate.d/
By default the logrotate job is started once a day by a O/S cron.daily job: /etc/cron.daily/logrotate
Because the default log rotation configuration does not exactly what I want I have adapted it a bit:
First I need a database user for log rotation:
CREATE USER 'logrotate'@'localhost' IDENTIFIED BY 'secret'; GRANT RELOAD ON *.* to 'logrotate'@'localhost';
This user needs a password file:
# # /root/.logrotate.cnf (chmod 600) # [mysql] user = logrotate password = secret
And this is my log rotation configuration file:
#
# /etc/logrotate.d/mysql
#
/var/log/mysql/error.log {
compress
notifempty
size 100M
missingok
create 640 mysql mysql
rotate 5
maxage 365
postrotate
/usr/bin/mysql --defaults-extra-file=/root/.logrotate.cnf --execute='FLUSH ERROR LOGS'
endscript
}
/var/log/mysql/slow.log {
compress
notifempty
weekly
missingok
create 640 mysql mysql
rotate 4
maxage 30
postrotate
/usr/bin/mysql --defaults-extra-file=/root/.logrotate.cnf --execute='FLUSH SLOW LOGS'
endscript
}
/var/log/mysql/general.log {
compress
notifempty
size 1G
missingok
create 640 mysql mysql
rotate 3
maxage 14
postrotate
/usr/bin/mysql --defaults-extra-file=/root/.logrotate.cnf --execute='FLUSH GENERAL LOGS'
endscript
}
Comments
Testing Logrotate
See also SElinux
And Non-standard database set up with SELinux