Как включить, работать и анализировать журнал медленных запросов в MySQL?

Будут даны ответы на следующие вопросы.

  1. Как включить журнал медленных запросов в MySQL
  2. Как установить медленное время запроса
  3. Как читать журналы, созданные MySQL

Анализ логов с каждым днем ​​становится угрозой. Большинство технологических компаний начали использовать стек ELK или аналогичные инструменты для анализа журналов. Но что, если у вас нет часов на настройку ELK и вы просто хотите потратить некоторое время на анализ логов самостоятельно (то есть вручную).

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


person MontyPython    schedule 24.04.2016    source источник


Ответы (2)


(В дополнение к «настройке», предоставленной @MontyPython...)

Запустите pt-query-digest или mysqldumpslow -s t

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

Я предпочитаю long_query_time=1. Это в секундах; можно указать меньше 1.

Кроме того, в более поздних версиях вам потребуется log_output = FILE.

person Rick James    schedule 24.04.2016
comment
По моему мнению, журнал медленных запросов является наиболее важным инструментом для постоянного анализа производительности. - person Rick James; 25.04.2016

show variables like '%slow%';

+---------------------------+-----------------------------------+
| Variable_name             | Value                             |
+---------------------------+-----------------------------------+
| log_slow_admin_statements | OFF                               |
| log_slow_slave_statements | OFF                               |
| slow_launch_time          | 2                                 |
| slow_query_log            | OFF                               |
| slow_query_log_file       | /var/lib/mysql/server-slow.log    |
+---------------------------+-----------------------------------+

А потом,

show variables like '%long_query%';
+-----------------+----------+
| Variable_name   | Value    |
+-----------------+----------+
| long_query_time | 5.000000 |
+-----------------+----------+

Измените длинное время запроса на то, что вы хотите. Запросы, превышающие это значение, будут записываться в журнал медленных запросов.

set global long_query_time = 2.00;

Теперь включите журнал медленных запросов.

set global slow_query_log = 'ON';

flush logs;

Перейдите в терминал и проверьте каталог, в котором должен находиться файл журнала.

cd /var/lib/mysql/

la -lah | grep slow

-rw-rw----  1 mysql mysql 4.6M Apr 24 08:32 server-slow.log

Открытие файла - используйте одну из следующих команд

cat server-slow.log
tac server-slow.log
less server-slow.log
more server-slow.log
tail -f server-slow.log

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

grep 'Time: 160411.*' server-slow.log | cut -c2-18 | uniq -c
person MontyPython    schedule 24.04.2016