Відповіді:
Для тих, хто охочений 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
Гей престо, ви можете дивитися запити, як вони надходять.
Ви можете зробити поточну річ для моніторингу журналів запитів 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
Можливо, ви могли це дізнатися, переглянувши журнал запитів .
Якщо увімкнено binlog mysql , ви можете перевірити команди, виконані користувачем, виконавши наступну команду в консолі 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/uk/query-log.html
Я знайшов дійсно корисний код людиною. Ось підсумок контексту.
(Примітка. Наступний код не мій)
Цей сценарій є прикладом для збереження чистоти таблиці, що допоможе вам зменшити розмір таблиці. Як і через день, буде близько 180 тис. Запитів журналу. (у файлі це буде 30 Мб на день)
Вам потрібно додати додатковий стовпець (event_unix), і тоді ви можете використовувати цей скрипт, щоб журнал був чистим ... він оновить часову позначку в часову позначку Unix, видалить журнали, старші ніж на 1 день, а потім оновить подію_часу в 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
Це може допомогти