Общий журнал запросов
Общий журнал запросов — это журнал каждого SQL-запроса, полученного от клиента, а также каждого подключения и отключения клиента. Поскольку это запись каждого запроса, полученного сервером, он может довольно быстро увеличиваться в размерах.
Однако, если вам нужна только запись запросов, изменяющих данные, лучше использовать бинарный журнал вместо этого. Важное различие состоит в том, что бинарный журнал регистрирует запрос только при подтверждении транзакции сервером, но общий журнал запросов регистрирует запрос сразу же после его получения сервером.
Включение общего журнала запросов
Общий журнал запросов по умолчанию отключен.
Чтобы включить общий журнал запросов, установите системную переменную general_log в значение 1. Ее можно изменить динамически с помощью SET GLOBAL. Например:
SET GLOBAL general_log=1;
Её также можно установить в группе опций сервера группа опций в файле опций файл опций до запуска сервера. Например:
[mariadb] ... general_log
Настройка имени файла общего журнала запросов
По умолчанию общий журнал запросов записывается в ${hostname}.log в каталоге datadir. Однако это можно изменить.
Один из способов настройки имени файла общего журнала запросов — установить системную переменную general_log_file. Ее можно изменить динамически с помощью SET GLOBAL. Например:
SET GLOBAL general_log_file='mariadb.log';
Её также можно установить в группе опций сервера группа опций в файле опций файл опций до запуска сервера. Например:
[mariadb] ... general_log general_log_file=mariadb.log
Если это относительный путь, то он относительный к каталогу general_log_file в каталоге datadir.
Однако, системная переменная general_log_file также может быть абсолютным путем. Например:
[mariadb] ... general_log general_log_file=/var/log/mysql/mariadb.log
Другой способ настройки имени файла общего журнала запросов — установить опцию log-basename, которая настраивает MariaDB для использования общего префикса для всех файлов журналов (например, общего журнала запросов, журнала медленных запросов, журнала ошибок, бинарных журналов и т.д.). Имя файла общего журнала запросов будет создано путем добавления расширения .log к этому префиксу. Эту опцию нельзя установить динамически. Ее можно установить в группе опций сервера группа опций в файле опций файл опций до запуска сервера. Например:
[mariadb] ... log-basename=mariadb general_log
log-basename не может быть абсолютным путем. Имя файла журнала относительно каталога datadir.
Выбор места вывода общего журнала запросов
Общий журнал запросов может быть записан либо в файл на диске, либо в таблицу general_log в базе данных mysql. Чтобы выбрать место вывода общего журнала запросов, установите системную переменную log_output.
Запись общего журнала запросов в файл
По умолчанию общий журнал запросов выводится в файл. Однако его можно явно выбрать, установив системную переменную log_output в значение FILE. Ее можно изменить динамически с помощью SET GLOBAL. Например:
SET GLOBAL log_output='FILE';
Её также можно установить в группе опций сервера группа опций в файле опций файл опций до запуска сервера. Например:
[mariadb] ... log_output=FILE general_log general_log_file=queries.log
Запись общего журнала запросов в таблицу
Общий журнал запросов можно записать в таблицу general_log в базе данных mysql, установив системную переменную log_output в значение TABLE. Ее можно изменить динамически с помощью SET GLOBAL. Например:
SET GLOBAL log_output='TABLE';
Её также можно установить в группе опций сервера группа опций в файле опций файл опций до запуска сервера. Например:
[mariadb] ... log_output=TABLE general_log
Некоторые строки в этой таблице могут выглядеть так:
SELECT * FROM mysql.general_log\G
*************************** 1. row ***************************
event_time: 2014-11-11 08:40:04.117177
user_host: root[root] @ localhost []
thread_id: 74
server_id: 1
command_type: Query
argument: SELECT * FROM test.s
*************************** 2. row ***************************
event_time: 2014-11-11 08:40:10.501131
user_host: root[root] @ localhost []
thread_id: 74
server_id: 1
command_type: Query
argument: SELECT * FROM mysql.general_log
...
См. Запись журналов в таблицы для получения дополнительной информации.
Отключение общего журнала запросов для сессии
Пользователь с привилегией SUPER может отключить протоколирование в общий журнал запросов для подключения, установив системную переменную SQL_LOG_OFF в значение 1. Например:
SET SESSION SQL_LOG_OFF=1;
Отключение общего журнала запросов для определенных заявлений
В MariaDB 10.3.1 и более поздних версиях можно отключить протоколирование в общий журнал запросов для определённых типов заявлений, установив системную переменную log_disabled_statements. Эту опцию нельзя установить динамически. Ее можно установить в группе опций сервера группа опций в файле опций файл опций до запуска сервера. Например:
[mariadb] ... log_output=FILE general_log general_log_file=queries.log log_disabled_statements='slave,sp'
Вращение общего журнала запросов в Unix и Linux
Дистрибутивы Unix и Linux предлагают утилиту logrotate, которая позволяет очень легко вращать файлы журналов. См. Вращение журналов в Unix и Linux для получения дополнительной информации о том, как использовать эту утилиту для вращения общего журнала запросов.
См. также
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/general-query-log/