MySQL
Protokolldateien
Suche…
Eine Liste
- Allgemeines Protokoll - alle Abfragen - siehe VARIABLE general_log
- Langsame Log-Abfragen langsamer als long_query_time - slow_query_log_file
- Binlog - für die Replikation und Sicherung - log_bin_basename
- Relay Log - auch für die Replikation
- Allgemeine Fehler - mysqld.err
- start / stop - mysql.log (nicht sehr interessant) - log_error
- InnoDB-Wiederherstellungsprotokoll - iblog *
In den Variablen basedir
und datadir
Standardspeicherort für viele Protokolle
Einige Protokolle werden von anderen VARIABLES ein- und ausgeschaltet. Einige werden entweder in eine Datei oder in eine Tabelle geschrieben.
(Hinweis für Rezensenten: Dies erfordert mehr Details und weitere Erläuterungen.)
Dokumentierer : Bitte geben Sie den Standardspeicherort und -namen für jeden Protokolltyp sowohl für Windows als auch für * nix an. (Oder zumindest so viel wie möglich.)
Langsames Abfrageprotokoll
Das langsame long_query_time
besteht aus Protokollereignissen für Abfragen, deren Abschluss bis zu long_query_time
dauert. Zum Beispiel bis zu 10 Sekunden. Geben Sie Folgendes ein, um den aktuell eingestellten Zeitgrenzwert anzuzeigen:
SELECT @@long_query_time;
+-------------------+
| @@long_query_time |
+-------------------+
| 10.000000 |
+-------------------+
Sie kann als GLOBAL-Variable in der Datei my.cnf
oder my.ini
werden. Oder es kann von der Verbindung eingestellt werden, obwohl dies ungewöhnlich ist. Der Wert kann zwischen 0 und 10 Sekunden eingestellt werden. Welchen Wert verwenden?
- 10 ist so hoch, dass es fast nutzlos ist;
- 2 ist ein Kompromiss;
- 0,5 und andere Fraktionen sind möglich;
- 0 erfasst alles; Dies könnte die Festplatte gefährlich schnell füllen, kann jedoch sehr nützlich sein.
Die Erfassung langsamer Abfragen ist entweder aktiviert oder deaktiviert. Die angemeldete Datei wird ebenfalls angegeben. Das Folgende fängt diese Konzepte ein:
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)
Weitere Informationen finden Sie auf der MySQL-Handbuchseite The Slow Query Log
Hinweis: Die obigen Informationen zum Ein- / Ausschalten des Slowlogs wurden in 5.6 (?) Geändert. ältere Version hatte einen anderen Mechanismus.
Der "beste" Weg, um zu sehen, was Ihr System verlangsamt:
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
Allgemeines Abfrageprotokoll
Das allgemeine Abfrageprotokoll enthält eine Liste allgemeiner Informationen zu Clientverbindungen, Verbindungsabbrüchen und Abfragen. Es ist von unschätzbarem Wert für das Debugging, stellt jedoch ein Leistungshindernis dar (Zitat?).
Eine Beispielansicht eines allgemeinen Abfrageprotokolls ist unten zu sehen:
So stellen Sie fest, ob das allgemeine Protokoll derzeit erfasst wird:
SELECT @@general_log; -- 1 = Capture is active; 0 = It is not.
So bestimmen Sie den Dateinamen der Capture-Datei:
SELECT @@general_log_file; -- Full path to capture file
Wenn der vollständige Pfad zur Datei nicht angezeigt wird, ist die Datei im datadir
.
Windows-Beispiel:
+----------------------------------------------------------+
| @@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 |
+-----------------------------------+
Wenn Änderungen an der gemacht werden general_log_file
GLOBAL Variable, wird das neue Protokoll in der gespeicherten datadir
. Der vollständige Pfad wird jedoch möglicherweise durch die Untersuchung der Variablen nicht mehr angezeigt.
general_log_file
in der Konfigurationsdatei kein Eintrag für general_log_file
enthalten ist, wird standardmäßig @@hostname
.log im datadir
.
Best Practices sind das Abschalten der Erfassung. Speichern Sie die Protokolldatei in einem Sicherungsverzeichnis mit einem Dateinamen, der die Start- / Endzeit der Erfassung angibt. Löschen der vorherigen Datei, wenn diese Datei nicht verschoben wurde . Legen Sie einen neuen Dateinamen für die Protokolldatei fest und schalten Sie die Erfassung ein (alle werden unten angezeigt). Best Practices beinhalten auch eine sorgfältige Bestimmung, wenn Sie im Moment sogar erfassen möchten. In der Regel ist die Erfassung nur zu Debugging-Zwecken aktiviert.
Ein typischer Dateiname des Dateisystems für ein gesichertes Protokoll ist:
/LogBackup/GeneralLog_20160802_1520_to_20160802_1815.log
Dabei sind Datum und Uhrzeit Teil des Dateinamens als Bereich.
Für Windows beachten Sie die folgende Reihenfolge mit den Einstellungsänderungen.
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 ist ähnlich. Diese würden dynamische Veränderungen darstellen. Bei einem Neustart des Servers werden die Einstellungen der Konfigurationsdatei übernommen.
Berücksichtigen Sie bei der Konfigurationsdatei die folgenden relevanten Variableneinstellungen:
[mysqld]
general_log_file = /path/to/currentquery.log
general_log = 1
Außerdem kann die Variable log_output
für die Ausgabe von TABLE
konfiguriert werden, nicht nur für FILE
. Siehe dazu Destinationen .
Siehe die MySQL-Handbuchseite Das allgemeine Abfrageprotokoll .
Fehlerprotokoll
Das Fehlerprotokoll enthält Start- und Stoppinformationen sowie kritische Ereignisse, die vom Server festgestellt wurden.
Das folgende ist ein Beispiel für den Inhalt:
Die Variable log_error
enthält den Pfad zur Protokolldatei für die Fehlerprotokollierung.
log_error
für log_error
kein Konfigurationsdateieintrag log_error
, werden die Werte des Systems standardmäßig auf @@hostname
.err im datadir
. Beachten Sie, dass log_error
keine dynamische Variable ist. Daher werden Änderungen durch Änderungen an einer CNF- oder INI-Datei und durch einen Neustart des Servers vorgenommen (oder indem Sie unten im Link "Manual Page" auf der Seite "Manual Page" auf "Manuelles Löschen und Umbenennen der Fehlerprotokolldatei" klicken).
Die Protokollierung kann nicht für Fehler deaktiviert werden. Sie sind wichtig für die Systemintegrität bei der Fehlerbehebung. Außerdem sind Einträge im Vergleich zum allgemeinen Abfrageprotokoll selten.
Die GLOBAL-Variable log_warnings
legt die Stufe für die Ausführlichkeit fest, die je nach Serverversion variiert. Der folgende Ausschnitt veranschaulicht:
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
wie oben gesehen eine dynamische Variable.
Konfigurationsdateiänderungen in cnf
und ini
Dateien können wie folgt aussehen.
[mysqld]
log_error = /path/to/CurrentError.log
log_warnings = 2
MySQL 5.7.2 erweiterte die Warnstufe auf 3 und fügte GLOBAL log_error_verbosity
. Auch hier wurde eingeführt in 5.7.2. Es kann dynamisch gesetzt und als Variable überprüft oder über die Konfigurationsdateien von cnf
oder ini
werden.
Ab MySQL 5.7.2:
[mysqld]
log_error = /path/to/CurrentError.log
log_warnings = 2
log_error_verbosity = 3
log_warnings
error_log_verbosity
Sie auf der MySQL-Handbuchseite mit dem Titel " Das Fehlerprotokoll", insbesondere zum Löschen und Umbenennen der Fehlerprotokolldatei , und im Abschnitt " Fehlerprotokoll-Ausführlichkeit " mit Versionen, die sich auf " log_warnings
und " error_log_verbosity
.