Spec-Zone.ru › MariaDB

Общий журнал запросов

Общий журнал запросов — это журнал каждого 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 для получения дополнительной информации о том, как использовать эту утилиту для вращения общего журнала запросов.

См. также

  • Плагин аудита MariaDB
Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проходит предварительную проверку MariaDB. Мнения, информация и мнения, выраженные в этом содержании, не обязательно отражают взгляды MariaDB или любой другой стороны.

© 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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API