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

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

SET GLOBAL general_log = 'ON';

Есть ли не GLOBAL параметр, который можно установить?

2 ответа

Решение

В MySQL нет способа сделать это, но вы можете создать общий файл журнала для конкретной базы данных. Если вы собираетесь использовать pt-query-digest, вы также можете фильтровать запросы для выбранной базы данных.

Я достиг этого, используя ведение журнала таблицы и задание cron, чтобы скопировать записи из таблицы general_log в мою таблицу журналов для конкретной базы данных, а затем обрезать таблицу general_log. Таким образом, он должен регистрировать каждый запрос, но вы можете изолировать вашу базу данных, и таблица будет только увеличиваться в размере, необходимом для регистрации запросов к вашей базе данных (плюс, тем не менее, многие запросы выполняются между выполнениями задания cron).

Это процедура, которую я использовал (для базы данных с именем db):

set global general_log = 'OFF';
alter table mysql.general_log ENGINE = MyISAM;
show create table mysql.general_log;

-- create a new table mysql.db_log using the above schema
-- i.e. just replace the table name.

set global log_output = 'TABLE';
set global general_log = 'ON';

Работа cron выглядит так:

mysql -e "insert into mysql.db_log select * from mysql.general_log where user_host like '%[db]%"
mysql -e "truncate mysql.general_log"

Настройте условие where так, чтобы оно соответствовало всем журналам, которые вы хотите сохранить: база данных, пользователь, ip, имя таблицы и т. Д.

Вы можете использовать pt-query-digest, где имя базы данных - это имя вашей базы данных.

pt-query-digest --filter '($event->{db} || "") =~ m/databasename/' /var/lib/mysql/mysql-slow.log > /var/tmp/slow-result.log
Другие вопросы по тегам