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

Как включить медленный журнал запросов на моем сервере? Я включил его на своем локальном хосте, добавив log-slow-queries =[path] в my.ini файл, но не знаю, как добавить это на моем сервере. Мой сервер основан на Linux и имеет версию PHP 5.2.16.

Ответ 1

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

  • Во время выполнения
  • Во время запуска сервера

Если ваш сервер выше 5.1.6, вы можете установить медленный журнал запросов в самой рабочей среде. Для чего вам необходимо выполнить эти запросы.

set global log_slow_queries = 1;
set global slow_query_log_file = <some file name>;

Или, альтернативно, вы можете установить эти параметры в файлах параметров my.cnf/my.ini

log_slow_queries = 1; 
slow_query_log_file = <some file name>;

Если файл опции изменен, необходимо перезапустить сервер MySQL.

Местоположение файла опций mysql можно найти здесь http://dev.mysql.com/doc/refman/4.1/en/mysql-config-wizard-file-location.html

FYI: log_slow_queries был удален в MySQL 5.6.1 и вместо него используется slow_query_log. http://dev.mysql.com/doc/refman/5.6/en/server-options.html#option_mysqld_log-slow-queries

Но для производительности вы можете установить выход журнала (опция log_output) на TABLE. Также вы можете посмотреть другие медленные параметры журнала запросов, такие как long_query_time, log-queries-not-using-indexes

Ответ 2

Вы можете установить его временно, выполнив следующие команды:

set global slow_query_log = 1;
set global slow_query_log_file = '/var/log/mysql-slow.log';

но ваши изменения будут отменены при перезапуске mysql.

Вы можете установить его навсегда, добавив в свой файл my.cnf следующее:

slow-query-log=1
slow-query-log-file=/var/log/mysql-slow.log

Расположение my.cnf зависит от ОС, но часто встречается в /etc/my.cnf или /etc/mysql/my.cnf:

После сохранения изменений вам необходимо перезапустить MySql. Это может зависеть от ОС, но вот некоторые общие примеры:

sudo /etc/init.d/mysqld restart

и

sudo service mysqld restart

Ответ 3

Сначала (как root:)

mkdir /var/log/mysql
touch /var/log/mysql/log-slow-queries.log
chown mysql:mysql -R /var/log/mysql

Затем в [mysqld] в файле /etc/my.conf(или где бы вы ни были: 1)

slow_query_log = 1
log-queries-not-using-indexes
long_query_time=1
log-slow-queries=/var/log/mysql/log-slow-queries.log

Далее:

service mysql restart

Наконец:

mysql
mysql> SELECT SLEEP(10);
mysql> quit

Проверка:

cat /var/log/mysql/log-slow-queries.log

/usr/sbin/mysqld, Version: 5.5.42-cll (MySQL Community Server (GPL)). started with:
Tcp port: 0  Unix socket: (null)
Time                 Id Command    Argument
# Time: 150727  0:05:17
# [email protected]: root[root] @ localhost []
# Query_time: 10.000215  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
SET timestamp=1437973517;
select sleep(10);