Медленные запросы не регистрируются

13

Я пытаюсь включить медленную регистрацию запросов на нашем сервере, чтобы определить любые запросы, которые могут использовать оптимизацию. Звучит достаточно просто, но мой файл не записывается. Я не получаю никаких ошибок или чего-то в этом роде, просто не регистрируются медленные запросы. Я вспомнил, чтобы перезапустить mysql после изменения конфигурации.

Я использую MySQL Ver 5.1.61. Вот что у меня есть в my.cnf:

slow-query-log=1
slow-query-log-file=/var/logs/my.slow.log
long_query_time=1

файл /var/logs/my.slow.log имеет mysql в качестве владельца, также в интересах отладки, которую я дал для чтения / записи всем в файле журнала.

У меня long_query_time, установленный на 1 в приведенном выше примере, я просто хочу посмотреть, работает ли он. Я попытался установить его ниже (например, 0,3), но я все еще не получаю ничего зарегистрированного. Я знаю, что запросы, выполняемые моим приложением, занимают более 1 секунды, и я также намеренно выполнял запись запросов ( SELECT sleep(10);) в терминале для тестирования, и журнал все еще пуст.

Я просмотрел документы, насколько я вижу, это должно работать. У кого-нибудь есть предложения относительно того, что я делаю неправильно? Любой совет будет оценен, спасибо большое!

Редактировать: как и просили в комментариях я выполнил запрос:

 `SELECT variable_value FROM information_schema.global_variables WHERE variable_name IN ('slow_query_log','slow_query_log_file','long_query_time');`

Результат:

10.0000000
/var/run/mysqld/mysqld-slow.log
OFF

Очевидно, что мои изменения конфигурации не принимаются во внимание, так как я считаю, что это настройки по умолчанию. Я совершенно уверен, что файл my.cnf, который я изменяю, анализируется, как если бы я ввел недопустимое значение. Mysql выдаст ошибку при перезапуске. Что здесь может происходить?

Другое Править:

После того, как я принял совет @RolandoMySQLDBA и переместил мои медленные строки конфигурации запроса в [mysqld]мои настройки, похоже, что это экономит. Теперь результат вышеприведенного запроса variable_value:

1.0000000
/var/logs/my.slow.log
ON

Однако я до сих пор не вижу файл my.slow.log, в который выполняется запись. Я не думаю, что это проблема с разрешениями, поскольку файл принадлежит mysql, и я добавил все разрешения для всех пользователей файла. Может ли кто-нибудь придумать причину, по которой это не сработает?

Редактировать: Решено! Путь к журналу медленных запросов был неверным, он должен был быть /var/log/my.slow.log вместо / var / log * s * / my.slow.log. Спасибо всем за помощь, я многому научился!

Метод
источник
1
Пожалуйста, запустите SELECT variable_value FROM information_schema.global_variables WHERE variable_name IN ('slow_query_log','slow_query_log_file','long_query_time');и опубликуйте его вывод.
RolandoMySQLDBA
1
Если у кого-то все еще есть проблемы после прочтения этого, проверьте переменную log_output. SET GLOBAL log_output=FILEисправил это для меня.
Молхольм

Ответы:

21

Я думаю, что получил ответ:

Вы должны поместить эти параметры в [mysqld]разделе

[mysqld]
slow-query-log=1
slow-query-log-file=/var/logs/my.slow.log
long_query_time=1

и перезапустите MySQL

ОБНОВЛЕНИЕ 2013-03-05 16:36 EST

Я не знаю, почему это все еще происходит, но, пожалуйста, попробуйте это:

service mysql stop
rm -f /var/logs/my.slow.log
touch /var/logs/my.slow.log
chown mysql:mysql /var/logs/my.slow.log
service mysql start

затем беги SELECT SLEEP(10);и посмотри, приземлится ли он в/var/logs/my.slow.log

RolandoMySQLDBA
источник
Спасибо! То, что вы предложили, помогло, кажется, настройки сохраняются должным образом, но я все еще не пишу вещи. Я отредактировал свой вопрос, чтобы отразить это.
TheMethod
Эй, просто любопытно, я использую систему Debian под виртуальной машиной. Правильный ли путь в вашем ответе? /var/logs/вместо/var/log
Сильвиу-Мариан
Просто информация. "touch & chown" также необходим в среде CentOS 6.6 mysql 5.1.73.
Фумиски Уэллс
Я просто наткнулся на систему, где они пытались вставить их [mysqld_safe], но это не сработало. Положив их под [mysql]решенную проблему.
Майкл Хэмптон