Ротация лога тяжелых запросов MySQL

1. Создаем папку для логов медленных запросов:

mkdir /var/log/mysqllogs

2. Даем полные права пользователю mysql на эту папку:

chown -R mysql:mysql /var/log/mysqllogs

3. Создаем скрипт для ротации:

vi /root/mysql-logrotate.sh

следующего содержания:

#!/bin/bash
TODAY=`date +%F`
# slow-queries.log rename
ls /var/log/mysqllogs | grep '\slow-queries.log$' | while read log; do
rm -rf /var/log/mysqllogs/$log-old
mv /var/log/mysqllogs/$log /var/log/mysqllogs/$log-old
done
# flush logs
echo 'flush logs' | mysql
# rotate
ls /var/log/mysqllogs | grep '\-old$' | while read log; do
newlog=`echo $log | sed "s/-old/.$TODAY/"`
rm -f /var/log/mysqllogs$newlog
mv /var/log/mysqllogs/$log /var/log/mysqllogs/$newlog
rm -f /var/log/mysqllogs/$newlog.gz
gzip /var/log/mysqllogs/$newlog
done
# cleanup
find /var/log/mysqllogs -mtime +14 | grep -P '\.\d{4}-\d{2}\-\d{2}\.gz$' | xargs rm -f

4. делаем его исполняемым:

chmod +x /root/mysql-logrotate.sh

5. Изменяем (добавляем) путь к временному файлу в конфигурационном файле mysql (/etc/my.cnf) на:

log-slow-queries     = /var/log/mysqllogs/slow-queries.log

6. Перезапускаем mysql:

# /etc/init.d/mysql restart
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql restart
Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the restart(8) utility, e.g. restart mysql
mysql start/running, process 8214

7. Добавляем задание в крон:

55      01    *     *     *     /root/mysql-logrotate

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий