Логгирование всех запросов MySQL и ротация логов MySQL
Иногда в процессе тестирования необходимо видеть все запросы к базе MySQL. Чтобы активировать эту возможность, необходимо указать настройки в файле конфигурации. Обычно в FreeBSD файл конфигурации MySQL находится тут /etc/my.cnf
В /etc/my.cnf в конец секции [mysqld] добавляем строку:
log=/var/log/mysql.log |
Создаем файл лога
touch /var/log/mysql.log |
устанавливаем на него нужные права
chown mysql:mysql /var/log/mysql.log |
и перезапускаем MySQL
/usr/local/etc/rc.d/mysql-server restart |
Все, готово, теперь в файл mysql.log у нас будут записываться все запросы к MySQL.
Остается настроить ротацию логов MySQL, так как файл будет расти и может со временем занять все доступное место раздела.
Используем штатное средство FreeBSD — newsyslog
В
/etc/newsyslog.conf |
добавляем строку
/var/log/mysql.log mysql:mysql 600 7 10000 * BCJ /var/db/mysql/test.local.pid |
Расшифровка каждого столбца:
— путь к логу;
— владелец:группа;
— права на лог файл;
— кол-во поколений;
— размер 10 Мб, после которого старый лог будет очищаться;
— не добавлять записей в лог демоном newsyslog;
— создавать лог файл если его нет;
— архивировать поколения bzip2;
— путь к файлу с pid процесса MySQL;
Перезапускаем newsyslog
/etc/rc.d/newsyslog restart |
Все готово.
P.S. так же если нужно можно включить логгирование медленных запросов MySQL (например, запросы дольше 5 сек), для этого в /etc/my.cnf в секцию [mysqld] добавляем:
log_slow_queries = ON; log_slow_queries = /var/log/mysql-slow.log long_query_time = 5 |