Может ли общий журнал запросов 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