Мониторинг запросов пользователя MySQL - PullRequest
8 голосов
/ 03 января 2011

есть ли способ отслеживать / регистрировать пользователя MySQL и запросы, которые он / она выполнял? Мне пришлось отключить общий журнал с помощью запроса:

SET GLOBAL general_log = 'OFF';  

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

Есть ли другой способ узнать все, что конкретный пользователь выполняет в моей базе данных?

Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 20 июля 2012

Есть несколько способов, которые я могу предложить.

  1. SELECT * FROM information_schema.PROCESSLIST WHERE USER="someuser"; Теперь вам решать, что вы используете.Напишите cronjob (linux), чтобы сохранить его в файл, или запишите событие MySQL, чтобы ввести его в таблицу mysql.
  2. Используйте общий журнал запросов и используйте такие инструменты, как linux awk, sed, grep и т. Д., Чтобы проанализировать файл журнала и получить желаемый результат

Но если вы не привыкли писать linux для командной строкиВы можете использовать команду mk-query-digest или даже настроить собственные инструменты мониторинга, такие как nagios, cacti и т. д. Но я лично предпочитаю MONyog , он отлично выполняет пункты 1 и 2 и лучше всего имеетGUI.

enter image description here

0 голосов
/ 03 января 2011

Взгляните на инструмент mk-query-digest из maatkit, он может сделать что-то похожее на то, что вы хотите.По крайней мере, он сможет помочь вам разобрать общий журнал запросов, если вам придется его снова включить:

http://www.maatkit.org/doc/mk-query-digest.html

0 голосов
/ 03 января 2011

подробности о ведении журнала

MySQL Server может создавать несколько различных файлов журналов, чтобы помочь вам увидеть, какие действия происходят. Смотрите Раздел 5.2, «Журналы MySQL Server». Однако вы должны регулярно очищать эти файлы, чтобы журналы не занимали слишком много места на диске .


В других системах вы должны самостоятельно установить короткий сценарий, запускаемый с cron (или его эквивалента) для обработки файлов журнала.


Вы можете заставить MySQL начать использовать новые файлы журналов, сбрасывая журналы. Очистка журналов происходит, когда вы выполняете инструкцию FLUSH LOGS или выполняете сбросные журналы mysqladmin, обновление mysqladmin, mysqldump --flush-logs или команду mysqldump --master-data.

...