Если требуется протрейсить запросы к СУБД MySQL (для оптимизации веб-приложений или поиска ошибок), можно включить логирование SQL-запросов в файлы-журналы.
Логи запросов к СУБД MySQL имеют свойство быстро разрастаться, т.к. каждый запрос полностью записывается в файл. Тем самым, на дисковую подсистему ложится большая нагрузка и, в целом, производительность системы и СУБД снижается. Таким образом, включённое логирование запросов - нештатный режим работы СУБД для диагностики, после которой нужно обязательно отключать журналирование.
Создадим директорию, куда будем писать логи MySQL, назначим директории права владельца и группы, от которых работает СУБД (файлы создавать необязательно, они будут созданы автоматически при рестарте демона MySQL).
# mkdir /var/log/mysql # chown mysql:mysql /var/log/mysql/
Внесём соответствующие директивы в конфигурационный файл my.cnf.
# vi /var/db/mysql/my.cnf
[mysqld] log=/var/log/mysql/mysql.log # Лог всех SQL-запросов log-bin=/var/log/mysql/mysql.err # Бинарный лог всех SQL-запросов log-error=/var/log/mysql/mysql.login # Лог ошибок в работе демона СУБД MySQL log-slow-queries=/var/log/mysql/mysql.slow # Лог всех медленных SQL-запросов long_query_time=2 # Кол-во секунд, после которых выполнение запроса считается медленным
Перезагрузим mysqld, чтобы он запустился с новыми директивами логирования.
# /usr/local/etc/rc.d/mysqld restart
Готово. Не забываем после диагностики отключить журналирование.
На MySQL версии 5.6.22 встретилась ошибка:
[ERROR] /usr/local/libexec/mysqld: unknown variable 'log-slow-queries=/var/log/mysql/mysql.slow'
Указываем другие имена директив конфига:
slow-query-log=1 long_query_time=2 slow-query-log-file=/var/log/mysql/mysql.slow