Я пытаюсь включить медленную регистрацию запросов на нашем сервере, чтобы определить любые запросы, которые могут использовать оптимизацию. Звучит достаточно просто, но мой файл не записывается. Я не получаю никаких ошибок или чего-то в этом роде, просто не регистрируются медленные запросы. Я вспомнил, чтобы перезапустить 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. Спасибо всем за помощь, я многому научился!
источник
SELECT variable_value FROM information_schema.global_variables WHERE variable_name IN ('slow_query_log','slow_query_log_file','long_query_time');
и опубликуйте его вывод.SET GLOBAL log_output=FILE
исправил это для меня.Ответы:
Я думаю, что получил ответ:
Вы должны поместить эти параметры в
[mysqld]
разделеи перезапустите MySQL
ОБНОВЛЕНИЕ 2013-03-05 16:36 EST
Я не знаю, почему это все еще происходит, но, пожалуйста, попробуйте это:
затем беги
SELECT SLEEP(10);
и посмотри, приземлится ли он в/var/logs/my.slow.log
источник
/var/logs/
вместо/var/log
[mysqld_safe]
, но это не сработало. Положив их под[mysql]
решенную проблему.