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:

wprowadź opis zdjęcia tutaj

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:

wprowadź opis zdjęcia tutaj

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 .



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow