Проблема – по умолчанию mysql не умеет и не хочет “вращать” лог медленных запросов.
Необходимые допущения:
- MySQL работает из-под пользователя mysql (у меня по умолчанию так, скорее всего и у вас тоже)
- Лог медленных запросов лежит тут: /var/log/mysql-slow.log
Что хотим получить
- Еженедельную ротацию
- Держать одновременно 3 лога (+ один текущий)
- Сжимать gzip‘ом
- Создавать новый лог с правами 660 в собственности mysql:mysql
- Запустить mysqladmin flush-logs
Для достижения этого помещаем в /etc/logrotate.d/ следующий скрипт
$ vim /etc/logrotate.d/mysql-slow
Текст скрипта:
/var/log/mysql-slow.log { weekly rotate 3 compress missingok notifempty sharedscripts create 660 mysql mysql postrotate /usr/bin/mysqladmin flush-logs endscript }
Желательно предварительно протестировать на вашей конфигурации.
P.S. оригинал тут http://www.saiweb.co.uk/mysql/mysql-slow-query-log-rotation
UPD: гм. по умолчанию на моих серверах logrotate не было. Спасает
yum install logrotate