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!
SET GLOBAL log_output=FILE
naprawiłem to dla mnie.
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.