Próbuję włączyć powolne rejestrowanie zapytań na naszym serwerze, aby zidentyfikować wszelkie zapytania, które mogłyby skorzystać z optymalizacji. Brzmi dość prosto, jednak mój plik nie jest zapisywany. Nie otrzymuję żadnych błędów ani nic podobnego, po prostu nie rejestruje powolnych zapytań. Pamiętam, aby zrestartować mysql po moich zmianach konfiguracji.
Używam MySQL wer. 5.1.61. Oto, co mam w my.cnf:
slow-query-log=1
slow-query-log-file=/var/logs/my.slow.log
long_query_time=1
plik /var/logs/my.slow.log ma mysql jako właściciela, również w interesie debugowania dałem odczyt / zapis wszystkim w pliku dziennika.
Mam long_query_time ustawiony powyżej na 1, ponieważ chcę tylko sprawdzić, czy to działa. Próbowałem ustawić niższą wartość (np. 0,3), ale nadal nic nie loguję. Wiem, że zapytania, które są uruchomione przez moją aplikację, trwają dłużej niż 1 sekundę, a także celowo uruchomiłem zapytania SELECT sleep(10);
w terminalu ( ) w celu przetestowania, a dziennik jest nadal pusty.
Przejrzałem dokumenty, z tego, co widzę, powinno działać. Czy ktoś ma jakieś sugestie, co robię źle? Wszelkie porady będą mile widziane, wielkie dzięki!
Edycja: Jak zapytałem w komentarzach, uruchomiłem zapytanie:
`SELECT variable_value FROM information_schema.global_variables WHERE variable_name IN ('slow_query_log','slow_query_log_file','long_query_time');`
Wynik:
10.0000000
/var/run/mysqld/mysqld-slow.log
OFF
Oczywiście moje zmiany konfiguracji nie są brane pod uwagę, ponieważ uważam, że są to wartości domyślne. Jestem pewien, że plik my.cnf, który zmieniam, jest analizowany, tak jak gdybym wprowadził niepoprawną wartość, mysql wyświetli błąd podczas restartu. Co tu się dzieje?
Kolejna edycja:
Po skorzystaniu z porady @RolandoMySQLDBA i przeniesieniu moich wierszy konfiguracji z powolnymi zapytaniami do pod [mysqld]
moimi ustawieniami wydaje się oszczędzać. Teraz wynikiem powyższego zapytania zmienna_wartość jest:
1.0000000
/var/logs/my.slow.log
ON
Jednak nadal nie widzę pliku, do którego zapisywany jest mój.slow.log. Nie sądzę, że jest to problem z uprawnieniami, ponieważ plik jest własnością mysql i dodałem wszystkie uprawnienia dla wszystkich użytkowników pliku. Czy ktoś mógłby wymyślić powód, dla którego to nie zadziałałoby?
Edycja: rozwiązana! Ścieżka do dziennika powolnych zapytań była niepoprawna. Powinien to być /var/log/my.slow.log zamiast / var / log * s * / my.slow.log. Dzięki wszystkim za pomoc, nauczyłem się dużo!
źródło
SELECT variable_value FROM information_schema.global_variables WHERE variable_name IN ('slow_query_log','slow_query_log_file','long_query_time');
i opublikuj jego wynik.SET GLOBAL log_output=FILE
naprawiłem to dla mnie.Odpowiedzi:
Myślę, że mam odpowiedź:
Musisz umieścić te opcje w
[mysqld]
sekcjii zrestartuj mysql
AKTUALIZACJA 2013-03-05 16:36 EST
Nie wiem, dlaczego tak się dzieje, ale spróbuj tego:
następnie biegnij
SELECT SLEEP(10);
i zobacz, czy wyląduje/var/logs/my.slow.log
źródło
/var/logs/
zamiast/var/log
[mysqld_safe]
, co nie działało. Poddanie ich[mysql]
rozwiązaniu problemu.