Как показать последние запросы, выполняемые в MySQL?

Есть ли какой-либо запрос/способ показать последние запросы, выполняемые на серверах ВСЕ?

Ответ 1

Для тех, кто благословлен MySQL >= 5.1.12, вы можете управлять этим параметром во всем мире во время выполнения:

  • Выполнить SET GLOBAL log_output = 'TABLE';
  • Выполнить SET GLOBAL general_log = 'ON';
  • Взгляните на таблицу mysql.general_log

Если вы предпочитаете выводить в файл вместо таблицы:

  • SET GLOBAL log_output = "FILE"; по умолчанию.
  • SET GLOBAL general_log_file = "/path/to/your/logfile.log";
  • SET GLOBAL general_log = 'ON';

Я предпочитаю этот метод для редактирования файлов .cnf, потому что:

  • вы не редактируете файл my.cnf и, возможно, постоянно включаете ведение журнала
  • вы не ловите рыбу вокруг файловой системы, которая ищет журнал запросов - или, что еще хуже, отвлекается на необходимость идеального назначения. /var/log /var/data/log /opt /home/mysql_savior/var
  • перезапуск сервера оставляет вас там, где вы начали (по умолчанию по умолчанию отключен)
  • Вам не нужно перезапускать сервер и прерывать любые текущие подключения к нему.

Для получения дополнительной информации см. Справочное руководство MySQL 5.1 - Системные переменные сервера - общий_лог

Ответ 2

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

Отредактируйте конфигурацию MySQL, например. /etc/mysql/my.cnf - найдите или добавьте строку, подобную этой

[mysqld]
log = /var/log/mysql/mysql.log

Перезагрузите mysql, чтобы получить это изменение, теперь вы можете

tail -f /var/log/mysql/mysql.log

Hey presto, вы можете смотреть запросы, когда они входят.

Ответ 3

Вы можете сделать текущую вещь для мониторинга журналов запросов mysql.

Откройте конфигурационный файл mysql my.cnf

sudo nano /etc/mysql/my.cnf

Искать следующие строки под заголовком [mysqld] и раскомментировать эти строки для включения журнала

general_log_file        = /var/log/mysql/mysql.log
general_log             = 1

Перезагрузите сервер mysql для отражения изменений

sudo service mysql start

Мониторинг журнала сервера mysql со следующей командой в терминале

tail -f /var/log/mysql/mysql.log

Ответ 4

SELECT * FROM  mysql.general_log  WHERE command_type ='Query' LIMIT total;

Ответ 5

Возможно, вы могли бы найти это, посмотрев .

Ответ 6

Если mysql binlog включен, вы можете проверить команды, выполняемые пользователем, выполнив следующую команду в консоли linux путем просмотра в каталоге binlog mysql

mysqlbinlog binlog.000001 >  /tmp/statements.sql

включение

[mysqld]
log = /var/log/mysql/mysql.log

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

Ответ 7

1) Если общее ведение журнала mysql включено, мы можем проверить запросы в файле журнала или таблице на основе того, что мы упоминали в конфиге. Проверьте, что включено с помощью следующей команды

mysql> show variables like 'general_log%';
mysql> show variables like 'log_output%';

Если нам нужна история запросов в таблице, то

Execute SET GLOBAL log_output = 'TABLE';
Execute SET GLOBAL general_log = 'ON';

Взгляните на таблицу mysql.general_log

Если вы предпочитаете выводить в файл:

SET GLOBAL log_output = "FILE"; which is set by default.
SET GLOBAL general_log_file = "/path/to/your/logfile.log";
SET GLOBAL general_log = 'ON';

2) Мы также можем проверить запросы в файле .mysql_history cat ~/.mysql_history

Ответ 8

Вы можете посмотреть следующее в linux

cd /root

ls -al

vi .mysql_history Это может помочь

Ответ 9

Если вам не хочется менять конфигурацию MySQL, вы можете использовать профилировщик SQL, например "Neor Profile SQL" http://www.profilesql.com.