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

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

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

Ответы [ 2 ]

10 голосов
/ 01 апреля 2011

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

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

SET SQL_LOG_OFF = 1;

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

6 голосов
/ 01 апреля 2011

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

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