Postępowałem zgodnie z instrukcjami tutaj: http://crazytoon.com/2007/07/23/mysql-changing-runtime-variables-with-out-restarting-mysql-server/, ale wydaje się, że ustawia tylko próg.
Czy muszę robić coś innego, np. Ustawić ścieżkę do pliku?
Zgodnie z dokumentacją MySQL
Jeśli nie podano wartości nazwa_pliku dla --log-slow-queries, domyślną nazwą jest nazwa_hosta-slow.log. Serwer tworzy plik w katalogu danych, chyba że Podana jest bezwzględna nazwa ścieżki, aby określić inny katalog.
Bieganie
POKAŻ ZMIENNE
nie wskazuje ścieżki do pliku dziennika i nie widzę żadnego wolnego pliku dziennika zapytań na moim serwerze ...
EDYTOWAĆ
Wygląda na to, że używam serwera w wersji 5.0.77, więc musiałem zrobić:
SET GLOBAL log_slow_queries = 1;
ale otrzymuję: ERROR 1238 (HY000): Zmienna `` log_slow_queries '' jest zmienną tylko do odczytu
Zakładam, że będę musiał zrestartować serwer i ustawić log_slow_queries w mojej konfiguracji?
Odpowiedzi:
Spróbuj
SET GLOBAL slow_query_log = 'ON';
i możeFLUSH LOGS;
Zakłada się, że używasz MySQL 5.1 lub nowszego. Jeśli używasz wcześniejszej wersji, musisz ponownie uruchomić serwer. Jest to udokumentowane w podręczniku MySQL . Możesz skonfigurować dziennik w pliku konfiguracyjnym lub w wierszu poleceń.
źródło
SET GLOBAL slow_query_log = 'OFF';
działa również zgodnie z oczekiwaniami.FLUSH LOGS
nie było konieczne w żadnym przypadku.W przypadku powolnych zapytań w wersji <5.1 działała dla mnie następująca konfiguracja:
Zwróć również uwagę, aby umieścić go pod
[mysqld]
częścią pliku konfiguracyjnego i zrestartowaćmysqld
.źródło
sudo mkdir /var/log/mysql
sudo touch /var/log/mysql/slow-query.log
sudo chown -R _mysql /var/log/mysql/
log_slow_queries
został uznany za przestarzały w MySQL 5.1.29 przezslow-query-log
. MySQL 5.1 Reference Manual ma więcej szczegółów.Znajdź dziennik włączony czy nie?
SHOW VARIABLES LIKE '%log%';
Ustaw dzienniki: -
SET GLOBAL general_log = 'ON'; SET GLOBAL slow_query_log = 'ON';
źródło
Podręcznik MySQL - plik dziennika powolnego zapytania
To twierdzi, że możesz uruchomić następujące polecenie, aby ustawić plik slow-log (od wersji 5.1.6):
set global slow_query_log_file = 'path';
Zmienna slow_query_log tylko kontroluje, czy jest włączona, czy nie.
źródło
Te działają
SET GLOBAL LOG_SLOW_TIME = 1; SET GLOBAL LOG_QUERIES_NOT_USING_INDEXES = ON;
Uszkodzony w mojej konfiguracji 5.1.42
SET GLOBAL LOG_SLOW_QUERIES = ON; SET GLOBAL SLOW_QUERY_LOG = ON; set @@global.log_slow_queries=1;
http://bugs.mysql.com/bug.php?id=32565
Wygląda na to, że najlepszym sposobem na to jest ustawienie log_slow_time na bardzo wysokie, co powoduje „wyłączenie” powolnego dziennika zapytań. Zmniejsz log_slow_time, aby go włączyć. Użyj tej samej sztuczki (ustaw na OFF) dla log_queries_not_using_indexes.
źródło
Myślę, że problemem jest upewnienie się, że serwer MySQL ma prawa do pliku i może go edytować.
Jeśli możesz uzyskać dostęp do pliku, możesz spróbować ustawić:
SET GLOBAL slow_query_log = 1;
Jeśli nie, zawsze możesz „przeładować” serwer po zmianie pliku konfiguracyjnego. W Linuksie jest to zwykle
/etc/init.d/mysql reload
źródło
Jeśli chcesz włączyć ogólne dzienniki błędów i powolne dzienniki błędów zapytań w tabeli zamiast w pliku
Aby rozpocząć logowanie do tabeli zamiast do pliku:
set global log_output = “TABLE”;
Aby włączyć ogólny i powolny dziennik zapytań:
set global general_log = 1; set global slow_query_log = 1;
Aby wyświetlić dzienniki:
select * from mysql.slow_log; select * from mysql.general_log;
Aby uzyskać więcej informacji, odwiedź ten link
http://easysolutionweb.com/technology/mysql-server-logs/
źródło
To powinno działać na mysql> 5.5
źródło