Ответы:
Для тех, кто благословлен 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 - Системные переменные сервера - general_log
Вы можете включить общий журнал запросов для такого рода диагностики. Как правило, вы не регистрируете все запросы SELECT на производственном сервере, хотя это снижает производительность.
Отредактируйте конфигурацию MySQL, например /etc/mysql/my.cnf - найдите или добавьте строку, подобную этой
[mysqld]
log = /var/log/mysql/mysql.log
Перезапустите mysql, чтобы получить это изменение, теперь вы можете
tail -f /var/log/mysql/mysql.log
Эй, Presto, вы можете наблюдать за запросами по мере их поступления.
Вы можете сделать текущую вещь для мониторинга журналов запросов 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
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
Может быть, вы могли бы узнать это, посмотрев журнал запросов .
Если mysql binlog включен, вы можете проверить команды, запущенные пользователем, выполнив следующую команду в консоли Linux, перейдя в каталог mysql binlog
mysqlbinlog binlog.000001 > /tmp/statements.sql
что позволяет
[mysqld]
log = /var/log/mysql/mysql.log
или общий журнал будет влиять на производительность MySQL
Если вы не хотите менять конфигурацию MySQL, вы можете использовать профилировщик SQL, например «Neor Profile SQL» http://www.profilesql.com .
Прочитав ответ Пола, я продолжал копать для получения дополнительной информации на https://dev.mysql.com/doc/refman/5.7/en/query-log.html
Я нашел действительно полезный код от человека. Вот краткое изложение контекста.
(Примечание: следующий код не мой)
Этот скрипт является примером для поддержания чистоты таблицы, который поможет вам уменьшить размер таблицы. Как и после дня, будет около 180 тыс. Запросов журнала. (в файле это будет 30 МБ в день)
Вам нужно добавить дополнительный столбец (event_unix), а затем вы можете использовать этот скрипт для поддержания чистоты журнала ... он обновит временную метку в Unix-timestamp, удалит журналы старше 1 дня и затем обновит event_time в Timestamp из event_unix ... звучит немного запутанно, но работает отлично.
Команды для нового столбца:
SET GLOBAL general_log = 'OFF';
RENAME TABLE general_log TO general_log_temp;
ALTER TABLE `general_log_temp`
ADD COLUMN `event_unix` int(10) NOT NULL AFTER `event_time`;
RENAME TABLE general_log_temp TO general_log;
SET GLOBAL general_log = 'ON';
Скрипт очистки:
SET GLOBAL general_log = 'OFF';
RENAME TABLE general_log TO general_log_temp;
UPDATE general_log_temp SET event_unix = UNIX_TIMESTAMP(event_time);
DELETE FROM `general_log_temp` WHERE `event_unix` < UNIX_TIMESTAMP(NOW()) - 86400;
UPDATE general_log_temp SET event_time = FROM_UNIXTIME(event_unix);
RENAME TABLE general_log_temp TO general_log;
SET GLOBAL general_log = 'ON';
Кредит идет к Себастьяну Кайзеру (Оригинальный автор кода).
Надеюсь, кто-то найдет это полезным, как и я.
Вы можете посмотреть на следующее в Linux
cd /root
ls -al
vi .mysql_history
Может помочь