MySQL
Pliki dziennika
Szukaj…
Lista
- Dziennik ogólny - wszystkie zapytania - patrz ZMIENNY dziennik_ogólny
- Slow log - zapytania wolniejsze niż long_query_time - slow_query_log_file
- Binlog - do replikacji i tworzenia kopii zapasowych - log_bin_basename
- Dziennik przekazywania - również do replikacji
- ogólne błędy - mysqld.err
- start / stop - mysql.log (niezbyt interesujące) - log_error
- Dziennik ponownych InnoDB - iblog *
Zobacz zmienne basedir
i datadir
dla domyślnej lokalizacji wielu dzienników
Niektóre dzienniki są włączane / wyłączane przez inne ZMIENNE. Niektóre są zapisywane w pliku lub w tabeli.
(Uwaga dla recenzentów: wymaga to więcej szczegółów i wyjaśnień).
Dokumenty : podaj domyślną lokalizację i nazwę dla każdego typu dziennika, zarówno dla systemu Windows, jak i * nix. (Lub przynajmniej tyle, ile możesz.)
Dziennik powolnych zapytań
Wolny dziennik zapytań składa się ze zdarzeń dziennika dla zapytań, których long_query_time
może long_query_time
do long_query_time
. Na przykład do ukończenia do 10 sekund. Aby zobaczyć aktualnie ustawiony próg czasowy, wydaj następujące polecenie:
SELECT @@long_query_time;
+-------------------+
| @@long_query_time |
+-------------------+
| 10.000000 |
+-------------------+
Można go ustawić jako zmienną my.ini
pliku my.cnf
lub my.ini
. Lub można to ustawić przez połączenie, choć jest to niezwykłe. Wartość można ustawić w zakresie od 0 do 10 (sekund). Jakiej wartości użyć?
- 10 jest tak wysoka, że jest prawie bezużyteczna;
- 2 jest kompromisem;
- Możliwe są 0,5 i inne frakcje;
- 0 przechwytuje wszystko; może to niebezpiecznie szybko zapełnić dysk, ale może być bardzo przydatne.
Przechwytywanie wolnych zapytań jest włączane lub wyłączane. I plik zalogowany jest również określony. Poniżej przedstawiono te pojęcia:
SELECT @@slow_query_log; -- Is capture currently active? (1=On, 0=Off)
SELECT @@slow_query_log_file; -- filename for capture. Resides in datadir
SELECT @@datadir; -- to see current value of the location for capture file
SET GLOBAL slow_query_log=0; -- Turn Off
-- make a backup of the Slow Query Log capture file. Then delete it.
SET GLOBAL slow_query_log=1; -- Turn it back On (new empty file is created)
Aby uzyskać więcej informacji, zobacz stronę podręcznika MySQL The Slow Query Log
Uwaga: powyższe informacje dotyczące włączania / wyłączania slowlog zostały zmienione w 5.6 (?); starsza wersja miała inny mechanizm.
„Najlepszy” sposób, aby zobaczyć, co spowalnia Twój system:
long_query_time=...
turn on the slowlog
run for a few hours
turn off the slowlog (or raise the cutoff)
run pt-query-digest to find the 'worst' couple of queries. Or mysqldumpslow -s t
Ogólny dziennik zapytań
Ogólny dziennik zapytań zawiera listę ogólnych informacji z połączeń klientów, rozłączeń i zapytań. Jest nieoceniony przy debugowaniu, ale stanowi przeszkodę dla wydajności (cytowanie?).
Przykładowy widok dziennika ogólnych zapytań znajduje się poniżej:
Aby ustalić, czy rejestr ogólny jest obecnie przechwytywany:
SELECT @@general_log; -- 1 = Capture is active; 0 = It is not.
Aby określić nazwę pliku przechwytywania:
SELECT @@general_log_file; -- Full path to capture file
Jeśli pełna ścieżka do pliku nie jest wyświetlana, plik istnieje w katalogu datadir
.
Przykład systemu Windows:
+----------------------------------------------------------+
| @@general_log_file |
+----------------------------------------------------------+
| C:\ProgramData\MySQL\MySQL Server 5.7\Data\GuySmiley.log |
+----------------------------------------------------------+
Linux:
+-----------------------------------+
| @@general_log_file |
+-----------------------------------+
| /var/lib/mysql/ip-ww-xx-yy-zz.log |
+-----------------------------------+
Po wprowadzeniu zmian do zmiennej GLOBAL general_log_file
nowy dziennik jest zapisywany w katalogu datadir
. Jednak pełna ścieżka może nie być już odzwierciedlona przez badanie zmiennej.
W przypadku braku wpisu general_log_file
w pliku konfiguracyjnym domyślnie będzie to @@hostname
.log w katalogu datadir
.
Najlepsze praktyki to WYŁĄCZYĆ przechwytywanie. Zapisz plik dziennika w katalogu kopii zapasowej z nazwą pliku odzwierciedlającą czas rozpoczęcia / zakończenia przechwytywania. Usuwanie poprzedniego pliku, jeśli nie nastąpiło przeniesienie systemu plików tego pliku. Utwórz nową nazwę pliku dziennika i włącz przechwytywanie (wszystkie pokazano poniżej). Najlepsze praktyki obejmują również ostrożne ustalenie, czy chcesz w tej chwili uchwycić. Zazwyczaj przechwytywanie jest WŁĄCZONE wyłącznie w celu debugowania.
Typowa nazwa pliku systemu dla kopii zapasowej dziennika może być:
/LogBackup/GeneralLog_20160802_1520_to_20160802_1815.log
gdzie data i godzina są częścią nazwy pliku jako zakresu.
W systemie Windows należy zwrócić uwagę na następującą sekwencję ze zmianami ustawień.
SELECT @@general_log; -- 0. Not being captured
SELECT @@general_log_file; -- C:\ProgramData\MySQL\MySQL Server 5.6\Data\GuySmiley.log
SELECT @@datadir; -- C:\ProgramData\MySQL\MySQL Server 5.7\Data\
SET GLOBAL general_log_file='GeneralLogBegin_20160803_1420.log'; -- datetime clue
SET GLOBAL general_log=1; -- Turns on actual log capture. File is created under `datadir`
SET GLOBAL general_log=0; -- Turn logging off
Linux jest podobny. Oznaczałyby to dynamiczne zmiany. Każde ponowne uruchomienie serwera spowoduje pobranie ustawień pliku konfiguracyjnego.
Jeśli chodzi o plik konfiguracyjny, rozważ następujące odpowiednie ustawienia zmiennych:
[mysqld]
general_log_file = /path/to/currentquery.log
general_log = 1
Ponadto zmienną log_output
można skonfigurować dla danych wyjściowych TABLE
, a nie tylko dla FILE
. W tym celu zobacz Miejsca docelowe .
Proszę zobaczyć stronę podręcznika MySQL The General Query Log .
Dziennik błędów
Dziennik błędów jest zapełniany informacjami o uruchamianiu i zatrzymywaniu oraz krytycznymi zdarzeniami napotkanymi przez serwer.
Oto przykład jego zawartości:
Zmienna log_error
przechowuje ścieżkę do pliku dziennika log_error
do rejestrowania błędów.
W przypadku braku wpisu pliku konfiguracyjnego dla log_error
, system domyślnie przyjmie wartości @@hostname
.err w katalogu datadir
. Zauważ, że log_error
nie jest zmienną dynamiczną. W związku z tym zmiany są dokonywane poprzez zmiany pliku cnf lub ini oraz restart serwera (lub poprzez zobacz „Opróżnianie i zmiana nazwy pliku dziennika błędów” w linku Strona podręcznika u dołu tutaj).
Nie można wyłączyć rejestrowania błędów. Są ważne dla zdrowia systemu podczas rozwiązywania problemów. Ponadto wpisy są rzadsze w porównaniu do dziennika ogólnych zapytań.
Zmienna GLOBAL log_warnings
ustawia poziom szczegółowości, który różni się w zależności od wersji serwera. Poniższy fragment kodu ilustruje:
SELECT @@log_warnings; -- make a note of your prior setting
SET GLOBAL log_warnings=2; -- setting above 1 increases output (see server version)
log_warnings
jak pokazano powyżej, jest zmienną dynamiczną.
Zmiany plików konfiguracyjnych w plikach cnf
i ini
mogą wyglądać następująco.
[mysqld]
log_error = /path/to/CurrentError.log
log_warnings = 2
MySQL 5.7.2 rozszerzył poziom szczegółowości ostrzeżenia do 3 i dodał GLOBALNIE log_error_verbosity
. Ponownie wprowadzono go w 5.7.2. Można go ustawić dynamicznie i sprawdzić jako zmienną lub ustawić za cnf
ustawień pliku konfiguracyjnego cnf
lub ini
.
Począwszy od MySQL 5.7.2:
[mysqld]
log_error = /path/to/CurrentError.log
log_warnings = 2
log_error_verbosity = 3
Proszę zapoznać się z MySQL Obsługi stronę zatytułowaną Error Log zwłaszcza do płukania i zmiana nazwy pliku dziennika błędów, a jego przekrój Error Log oznajmiania z wersjami związanych log_warnings
i error_log_verbosity
.