Повільні запити не реєструються


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]моїх налаштувань, здається, економиться. Тепер результат вищезазначеного запиту змінної цінності:

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виправив це для мене.
molholm

Відповіді:


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


Дякую! Що ви запропонували, допомогло, здається, що налаштування економить належним чином, проте я все ще не пишу щось. Я відредагував своє запитання, щоб це відобразити.
Метод

Гей, просто цікаво, я запускаю систему Debian під VM. Чи правильний шлях у вашій відповіді? /var/logs/замість/var/log
Сільвіу-Маріан

Просто інформація. "touch & chown" необхідні також у середовищі CentOS 6.6 mysql 5.1.73.
Fumisky Wells

Я просто натрапив на систему, де вони намагалися вкласти їх [mysqld_safe], але це не спрацювало. Постановка їх [mysql]вирішила проблему.
Майкл Хемптон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.