Включение журнала для показа медленных запросов в MySQL / MariaDB

Обновлено Обновлено: Опубликовано Опубликовано:

Тематические термины: MySQL, MariaDB.

Данный журнал помогает найти узкие места в работе СУБД MySQL или MariaDB и повысить ее производительность. Инструкция написана на примере Linux CentOS и будет немного отличаться в зависимости от используемой операционной системы, но принцип остается такой же. 

Для включения возможности показа медленных запросов открываем файл конфигурации сервера баз данных my.cnf:

vi /etc/my.cnf

* данный файл может находиться в каталоге /etc, как в данном примере или располагаться в каталоге с базами (его можно посмотреть командой select @@datadir в командной оболочке СУБД).

или:

vi /etc/mysql/mariadb.conf.d/50-server.cnf

Добавляем в открытый файл (секцию mysqld) две строчки:

[mysqld]
long_query_time = 30
log-slow-queries = /var/log/mysql/slow-query.log

* при такой настройке SQL-запросы, которые по длительности превысят 30 секунд попадут в файл /var/log/mysql/slow-query.log.

В более новых версиях MySQL (5.6) или MariaDB:

[mysqld]
slow_query_log_file     = /var/log/mysql/slow-query.log
long_query_time = 30
log_slow_rate_limit     = 1000
log_slow_verbosity      = query_plan
log-queries-not-using-indexes

Создаем каталог для журнала:

mkdir /var/log/mysql

Создаем файл лога:

touch /var/log/mysql/slow-query.log

Задаем владельца mysql для созданного файла:

chown mysql:mysql /var/log/mysql/slow-query.log

И перезагружаем сервер MySQL:

systemctl restart mysqld

Открываем наш файл в режиме непрерывного просмотра содержимого:

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

И ждем появления медленных SQL-запросов

# Серверы # Базы данных # UNIX # MySQL
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет