Может ли общий журнал запросов MySQL включаться только для одной базы данных?

Я хотел бы включить общий журнал запросов MySQL только для одной базы данных. По умолчанию он записывает все операторы, отправленные во все базы данных, что приводит к огромным файлам журналов на серверах со многими базами данных.

Возможно ли только запись операторов, отправленных в конкретную базу данных?

Ответы

Ответ 1

Общий журнал запросов - это глобальный журнал всех запросов, выполняемых на данном сервере, поэтому его невозможно включить или отключить для конкретной схемы.

Существует переменная, называемая SQL_LOG_OFF, которая отключает обычное ведение журнала для определенного соединения, что может быть полезно для вас, если вы можете выделить конкретные соединения, которые используют схему, для которой вы хотите включить/отключить общий журнал запросов:

SET SQL_LOG_OFF = 1;

Обратите внимание, что это работает только для пользователей с привилегией SUPER, поэтому может быть вам не полезно.

Ответ 2

Общий запрос активируется с помощью опции LOG, это глобальная переменная, поэтому вы не можете установить ее для одной базы данных. Но размер журнала может быть уменьшен; отключите ведение журнала для сервера в ini файле, и если это возможно - включите его с помощью команды SET в ваших сценариях (только тогда, когда вам это нужно).

SET GLOBAL LOG := 1;  -- enable log
-- execute queries
SET GLOBAL LOG := 0;  -- disable log