Отладка и логирование MySQL запросов

Категория: MySQL

Настройка логирования и отладка MySQL запросов.

Логирование MySQL запросов настраивается в 2 этапа:

  1. Включаем само логирование;
  2. Указываем куда логировать запросы.

Почему удобно включать логирование с помощью MySQL команд:

  1. Не нужно дергать файл конфига MySQL /etc/mysql/my.cnf;
  2. После рестарта сервера - лог выключается.

Посмотреть включено ли логирование:

SELECT @@GLOBAL.general_log
SHOW GLOBAL VARIABLES LIKE '%log%';
SHOW GLOBAL VARIABLES WHERE Variable_name in ('version', 'log', 'general_log', 'general_log_file', 'log_output');

Включить/выключить логирование (1 - включить, 0 - выключить):

SET GLOBAL general_log = 1;

Логировать запросы в таблицу mysql.general_log:

SET GLOBAL general_log = 1;
SET GLOBAL log_output = 'TABLE';

Посмотреть логи запросов в таблице:

SELECT * FROM mysql.general_log;

Логировать запросы в файл /var/log/mysql.log (этот тип логирования включён по умолчанию):

SET GLOBAL log_output = 'FILE';
SET GLOBAL general_log_file = '/var/log/mysql.log';
Примечание

Файл не нужно создавать предварительно, но нужно дать права на запись в этот каталог!

По умолчанию лог-файл запросов: /var/lib/mysql/%USERNAME%log.

Включаем логирование SQL запросов в файл:

SET GLOBAL log_output = 'FILE';
SET GLOBAL general_log_file='dev-sql.log';
Внимание!

Глобальная системная переменная general_log_file содержит имя файла, а не полный путь к нему. Этот файл будет создан в каталоге /var/lib/mysql/ и по умолчанию именуется как <hostname>.log.

Примечание

Для просмотра значения глобальной системной переменной general_log_file - выполните запрос:

SHOW VARIABLES LIKE 'general_log_file';

Можно включить логирование и в таблицу, и в файл:

SET GLOBAL log_output = 'TABLE,FILE';

Для отключения лога:

SET GLOBAL log_output = 'NONE';

Пример включения логирования из PHP-скрипта и просмотр логов:

mysql_query("SET GLOBAL log_output = 'FILE'");
mysql_query("SET GLOBAL general_log_file = '/home/stas/tmp/mysql.project.log'");
mysql_query("SET GLOBAL general_log = 1");

// здесь выполняем SQL запрос

mysql_query("SET GLOBAL general_log = 0");
mysql_query("SET GLOBAL log_output = 'TABLE'");

Включить постоянное логирование (требует рестарт сервера):

[mysqld]
log = /var/log/mysql/mysql.log

Подробнее о других системных переменных логирования: http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_log_output

#mysql query log

категория: MySQL