Umfassende Inventarisierung wichtiger Logdateien in MySQL

Umfassende Inventarisierung wichtiger Logdateien in MySQL

Einführung

Dieser Artikel fasst die Protokolle in MySQL zusammen und stellt sie kurz vor, ohne zu sehr ins Detail zu gehen. Der Hauptzweck besteht darin, ein systematisches Verständnis der Protokolldateien in MySQL zu erlangen.

Protokollklassifizierung

Zu den Protokolldateien in MySQL zählen Konfigurationsdateien, Fehlerprotokolldateien, Binärdateien (Binärprotokoll), Slow-Query-Protokolle (Slow-Query-Log), allgemeine Protokolle (Genera-Log), Prüfprotokolle (Audit-Log), Datenbankdateien und Datentabellendateien, Speichermoduldateien, Relay-Protokolle (Relay-Log), Prozessdateien (PID) und Socket-Dateien.

Snipaste_2021-04-20_16-55-53

Parameterdatei

Die Parameterdatei ist die Konfigurationsdatei in MySQL, die Datei my.cnf in Linux und die Datei my.ini in Windows. Der Dateiinhalt ist hauptsächlich in zwei Module unterteilt: Server und Client. Das Servermodul konfiguriert MySQL-Dienstinformationen, beispielsweise das Protokoll für langsame Abfragen. Das Clientmodul konfiguriert MySQL-Client-Verbindungsinformationen, beispielsweise die Portnummer der Clientverbindung.
Das Dateiformat ist ungefähr wie folgt:

[Kunde]
Port = 3306
Standardzeichensatz = utf8mb4

[mysqld]
Benutzer = MySQL
Port = 3306
sql_mode = ""
Standard-Speicher-Engine = InnoDB
Standardauthentifizierungs-Plugin = MySQL_native_Password
Zeichensatzserver = utf8mb4
Sortierserver = utf8mb4_unicode_ci
init_connect = "Namen festlegen utf8mb4"
langsames_Abfrageprotokoll
lange_Abfragezeit = 3
langsame Abfrage-Logdatei = /var/lib/mysql/mysql.slow.log
log-Fehler = /var/lib/mysql/mysql.error.log
Standardzeitzone = '+8:00'

Fehlerprotokolldateien

Die Fehlerprotokolldatei zeichnet die Protokollinformationen von MySQL vom Start, Betrieb und Herunterfahren auf. Beispiele hierfür sind Verbindungsfehler bei MySQL, Fehler beim Abfragebefehl, SQL-Ausführungsprozess usw. Es ist sehr hilfreich zum Auffinden von MySQL-Fehlern.
Der allgemeine Inhalt der Datei ist wie folgt:

Version: „5.7.28-log“ Socket: „/var/run/mysqld/mysqld.sock“ Port: 3306 MySQL Community Server (GPL)
2021-04-17T21:23:00.865868Z 3 [Hinweis] Abgebrochene Verbindung 3 zu db: ‚exam_wechat‘ Benutzer: ‚root‘ Host: ‚172.18.0.1‘ (Timeout beim Lesen der Kommunikationspakete aufgetreten)
2021-04-17T21:23:00.865969Z 2 [Hinweis] Abgebrochene Verbindung 2 zu db: ‚exam_wechat‘ Benutzer: ‚root‘ Host: ‚172.18.0.1‘ (Timeout beim Lesen der Kommunikationspakete aufgetreten)
2021-04-19T22:33:24.137143Z 0 [Hinweis] InnoDB: page_cleaner: 1000 ms, beabsichtigte Schleife dauerte 18415 ms. Die Einstellungen sind möglicherweise nicht optimal. (flushed=0 und evicted=0, während der Zeit.)
2021-04-20T07:03:21.765208Z 79 [Hinweis] Zugriff für Benutzer ‚root‘@‚172.18.0.1‘ verweigert (mit Passwort: NEIN)
2021-04-20T07:03:23.825044Z 81 [Hinweis] Abgebrochene Verbindung 81 zur Datenbank: „nicht verbunden“ Benutzer: „root“ Host: „172.18.0.1“ (Beim Lesen der Kommunikationspakete ist ein Fehler aufgetreten)
2021-04-20T07:14:25.033983Z 82 [Hinweis] Zugriff für Benutzer ‚root‘@‚172.18.0.1‘ verweigert (mit Passwort: NEIN)
2021-04-20T07:14:27.442608Z 84 [Hinweis] Abgebrochene Verbindung 84 zu db: „nicht verbunden“ Benutzer: „root“ Host: „172.18.0.1“ (Beim Lesen der Kommunikationspakete ist ein Fehler aufgetreten)
2021-04-20T07:27:13.971644Z 83 [Hinweis] Abgebrochene Verbindung 83 zu db: „nicht verbunden“ Benutzer: „root“ Host: „172.18.0.1“ (Timeout beim Lesen der Kommunikationspakete aufgetreten)
2021-04-20T07:41:02.916249Z 85 [Hinweis] Abgebrochene Verbindung 85 zu db: „nicht verbunden“ Benutzer: „root“ Host: „172.18.0.1“ (Timeout beim Lesen der Kommunikationspakete aufgetreten)

So starten Sie die Fehlerprotokollierung. Konfigurieren Sie einfach die Absicht log_error in der Konfigurationsdatei in MySQL.

mysql [email protected]:(keine)> Variablen wie „%log_error%“ anzeigen;
+---------------------+--------------------------------+
| Variablenname | Wert |
+---------------------+--------------------------------+
| binlog_error_action | ABORT_SERVER |
| log_fehler | /var/lib/mysql/mysql.error.log |
| log_error_verbosity | 3 |
+---------------------+--------------------------------+
3 Reihen im Set
Zeit: 0,010 s

Vollständige Protokolldatei

Die vollständige Protokolldatei zeichnet alle SQL-Vorgangsprotokolle von MySQL auf. Beispielsweise werden Vorgänge wie Hinzufügen, Löschen, Ändern und Prüfen protokolliert.

mmysql [email protected]:(none)> Variablen wie „%general%“ anzeigen;
Verbindung wird erneut hergestellt...
+------------------+---------------------------------+
| Variablenname | Wert |
+------------------+---------------------------------+
| general_log | AUS |
| allgemeine_Protokolldatei | /var/lib/mysql/7fdc5f723ff9.log |
+------------------+---------------------------------+

Das Konfigurationselement hat drei Werte: Tabelle, keine und Datei. Wenn Sie „file“ konfigurieren, werden die Daten in der Protokolldatei aufgezeichnet. Wenn Sie „none“ konfigurieren, werden die Daten nicht aufgezeichnet. Wenn Sie „table“ konfigurieren, wird in der MySQL-Standarddatenbank eine Tabelle (genannt „general-log“) erstellt, um die Daten aufzuzeichnen.

Es wird nicht empfohlen, diese Option zu aktivieren. Es werden zu viele Protokolldateien aufgezeichnet, was nicht nur die Leistung beeinträchtigt, sondern auch zu viel ungültigen Speicherplatz beansprucht.

# Protokolldateiformat mysqld, Version: 5.7.28-log (MySQL Community Server (GPL)). gestartet mit:
TCP-Port: 3306 Unix-Socket: /var/run/mysqld/mysqld.sock
Zeit-ID-Befehlsargument
2021-04-20T09:16:48.572888Z 88 Verbinden Sie [email protected] über TCP/IP
2021-04-20T09:16:48.574591Z 88 Verbindungszugriff für Benutzer „root“@„172.18.0.1“ verweigert (mit Passwort: NEIN)
2021-04-20T09:16:50.325379Z 89 Verbinden Sie [email protected] über TCP/IP
2021-04-20T09:16:50.329894Z 89 Abfrage select connection_id()
2021-04-20T09:16:50.335222Z 89 Abfrage SELECT @@VERSION
2021-04-20T09:16:50.339432Z 90 Verbinden Sie [email protected] über TCP/IP
2021-04-20T09:16:50.339621Z 89 Abfrage SELECT @@VERSION_COMMENT
2021-04-20T09:16:50.343525Z 90 Abfrage „select connection_id()“
2021-04-20T09:16:50.347115Z 90 Abfrage DATENBANKEN ANZEIGEN
2021-04-20T09:16:50.380236Z 90 Abfrage „select TABLE_NAME, COLUMN_NAME“ aus information_schema.columns
                                    wobei table_schema = „Keines“
                                    Sortieren nach Tabellenname,Ordinalposition
2021-04-20T09:16:50.391019Z 90 Abfrage SELECT CONCAT("'", Benutzer, "'@'", Host,"'") FROM mysql.user
2021-04-20T09:16:50.415062Z 90 Abfrage SELECT ROUTINE_NAME FROM INFORMATION_SCHEMA.ROUTINES
    Wobei ROUTINE_TYPE = "FUNKTION" und ROUTINE_SCHEMA = "Keine"
2021-04-20T09:16:50.432015Z 90 Abfrage SELECT Name aus mysql.help_topic WHERE Name wie "SHOW %"
2021-04-20T09:16:52.572608Z 89 Abfrage zeigt Variablen wie „%general%“ an
2021-04-20T09:17:13.532046Z 89 Abfrage zeigt Variablen wie „%general%“ an

Langsames Abfrageprotokoll

Das Protokoll langsamer Abfragen ist eine Protokolldatei, die die Geschwindigkeit von SQL-Abfragen aufzeichnet. Wenn die Abfragezeit einer SQL-Anweisung einen festen Schwellenwert überschreitet, wird diese SQL-Anweisung als langsame Abfrage-SQL-Anweisung definiert und in der Protokolldatei für langsame Abfragen aufgezeichnet.

Die Konfiguration einer langsamen Abfrage umfasst hauptsächlich die folgenden drei Parameter.

Gibt an, ob langsame Abfragen und die Protokolldatei für langsame Abfragen aktiviert werden sollen.

mysql [email protected]:(keine)> Variablen wie „%slow%“ anzeigen;
+-----------------------------+----------------------------------+
| Variablenname | Wert |
+-----------------------------+----------------------------------+
| slow_query_log | EIN |
| slow_query_log_datei | /var/lib/mysql/mysql.slow.log |
+-----------------------------+----------------------------------+
5 Reihen im Set
Zeit: 0,014 s

Schwelle für langsame Abfragezeit.

mysql [email protected]:(keine)> Variablen wie „%long_query_time%“ anzeigen;
+-----------------+----------+
| Variablenname | Wert |
+-----------------+----------+
| lange Abfragezeit | 3.000000 |
+-----------------+----------+
1 Reihe im Set
Zeit: 0,013

Binäre Protokolldateien

Die binäre Protokolldatei wird zum Aufzeichnen von MySQL-DML-Anweisungen verwendet. Sie zeichnet den physischen Protokollinhalt nach dem Vorgang auf, zeichnet jedoch keine Select-, Show- und anderen Anweisungen in MySQL auf. Die Hauptfunktionen von Binärprotokolldateien sind folgende:

Bei der Master-Slave-Replikation sendet der Master-Server das physische Protokoll in der Binärdatei an den Slave-Server und der Slave-Server schreibt das Protokoll in sich selbst.

Wird zur Datenwiederherstellung verwendet. Rufen Sie basierend auf dem physischen Protokoll das Betriebsprotokoll ab, bevor Daten verloren gehen.

Es kann über die folgenden Parameter konfiguriert werden:

mysql [email protected]:(keine)> Variablen wie „%log_bin%“ anzeigen;
Verbindung wird wiederhergestellt...
+---------------------------------+--------------------------------+
| Variablenname | Wert |
+---------------------------------+--------------------------------+
| log_bin | EIN |
| log_bin_basename | /var/lib/mysql/mysql-bin |
| log_bin_index | /var/lib/mysql/mysql-bin.index |
+---------------------------------+--------------------------------+
6 Reihen im Set
Zeit: 0,015 s

log_bin gibt an, ob binäre Protokolldateien geöffnet werden sollen, log_bin_basename gibt das gespeicherte Verzeichnis und Protokolldateipräfix an und log_bin_index gibt den Protokolldateiindex (Protokolldateiname) an. Wenn für die Protokolldatei kein Dateiname angegeben ist, wird standardmäßig der lokale Name verwendet.

Liste der Protokolldateien.

-rw-r----- 1 MySQL-Wurzel 154 12. April 09:31 mysql-bin.000041
-rw-r----- 1 MySQL-Wurzel 154 12. April 19:45 mysql-bin.000042
-rw-r----- 1 MySQL-Wurzel 1459325 17. April 20:26 mysql-bin.000043
-rw-r----- 1 mysql mysql 24576 17. April 22:18 mysql-bin.000044
# cat mysql-bin.index
./mysql-bin.000001
./mysql-bin.000002
./mysql-bin.000003
./mysql-bin.000004
./mysql-bin.000005
./mysql-bin.000006

Überwachungsprotokoll

Prüfprotokolle werden verwendet, um MySQL-Netzwerkaktivitäten aufzuzeichnen und Statistiken, Analysen und Berichte zu MySQL-Betriebsaufzeichnungen zu erstellen. Eine Protokolldatei, die Informationen zur MySQL-Sicherheitsüberwachung aufzeichnet.

MySQL selbst enthält diese Funktion nicht und auf der offiziellen MySQL-Website wird für diese Funktion auch eine Gebühr erhoben. Eine konkrete Demonstration hierzu erfolgt hier nicht.

Relay-Protokoll

Das Relay-Protokoll spielt eine wichtige Rolle bei der MySQL-Master-Slave-Replikation auf dem Slave-Server. Wenn der Master-Server eine Binärdatei an den Slave-Server sendet, führt der Slave-Server sie nicht sofort aus, sondern legt sie in einer Protokolldatei eines bestimmten Typs ab. Anschließend startet der Slave-Server einen SQL-Thread, um den Inhalt der Relay-Protokolldatei zu lesen und in seine eigenen Daten zu schreiben.

Snipaste_2021-04-20_17-39-50

PID-Datei

PID ist die Prozess-ID einer MySQL-Instanz. MySQL ist ein Einzelprozessdienst. Wenn Sie eine MySQL-Instanz starten, wird eine PID-Datei erstellt.

Socket-Datei

Socket ist auch eine Möglichkeit der MySQL-Kommunikation. Es gibt zwei Möglichkeiten der MySQL-Kommunikation: TCP und Socket. TCP verwendet Netzwerkkommunikation und kann Dienste auf jedem zugänglichen Server bereitstellen. Socket ist eine Methode zur Dateikommunikation und muss sich auf demselben Server befinden.

# TCP-Modus mysql -hxxxx -pxxxx -uxxxx -Pxxx
mysql -uxxxx -pxxxx -s /Pfad/Socket

Datenbank und Tabelle

Die Datenbank- und Tabellenwerte sind die Tabellenstrukturdateien, Datendateien und Indexdateien in MySQL.
Datentabellenstruktur der InnoDB-Speicher-Engine

-rw-r----- 1 MySQL-Wurzel 13650 13. April 09:46 wechat_user.frm
-rw-r----- 1 mysql mysql 98304 17. April 13:43 wechat_user.ibd

Datentabellenstruktur der MyISAM-Speicher-Engine

-rw-r----- 1 mysql mysql 0 20. April 17:53 Benutzer.MYD
-rw-r----- 1 mysql mysql 1024 20. April 17:53 Benutzer.MYI
-rw-r----- 1 root root 8586 20. April 17:53 Benutzer.frm

Speichermoduldateien

Verschiedene Speicher-Engines haben unterschiedliche Implementierungen. Die InnoDB-Speicher-Engine ist in zwei Arten von Protokolldateien unterteilt: Redolog und Undolog.

Dies ist das Ende dieses Artikels über eine umfassende Bestandsaufnahme wichtiger Protokolldateien in MySQL. Weitere relevante Inhalte zu MySQL-Protokolldateien finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Details zur MySQL-Protokolldatei
  • Einführung in MySQL-Protokolldateien und -Protokolltypen
  • MySQL-Binärprotokolldatei - Datenbank wiederherstellen
  • Wo befindet sich die MySQL-Protokolldatei? So ändern Sie den Speicherort der MySQL-Protokolldatei

<<:  Sortierfunktion für HTML-Tabellen per Mausklick

>>:  Beispielcode zur Realisierung eines Buchseitenumblättereffekts mit CSS3

Artikel empfehlen

Die Hook-Funktion von Vue-Router implementiert Routing Guard

Inhaltsverzeichnis Überblick Globale Hook-Funktio...

Analyse des Framework-Prinzips des Linux-Eingabesubsystems

Eingabe-Subsystem-Framework Das Linux-Eingabesubs...

Einführung in die Anwendung der HTML-Tags superscript sup und subscript sub

HTML-Tag: hochgestellt In HTML definiert das <s...

Lösen Sie das Problem der Installation von Theano auf Ubuntu 19

Lösung: Ändern Sie die Datei setup.py direkt in d...

So konfigurieren Sie zwei oder mehr Sites mit dem Apache-Webserver

So hosten Sie zwei oder mehr Sites auf dem belieb...

So aktualisieren Sie MySQL 5.6 auf 5.7 unter Windows

Vorne geschrieben Es gibt zwei Möglichkeiten, MyS...

Detaillierte Erklärung zur SQL-Injection - Sicherheit (Teil 2)

Sollte dieser Artikel Fehler enthalten oder du An...

Implementierung des HTML-Gleit- und Schwebeball-Menüeffekts

CSS-Stile html,Text{ Breite: 100 %; Höhe: 100%; R...

Tipps zur MySql-SQL-Optimierung teilen

Eines Tages stellte ich fest, dass die Ausführung...

Grafisches Tutorial zur Installation von Linux CentOS6.9 unter VMware

Als technischer Neuling zeichne ich den Vorgang d...

Ein kurzes Verständnis der Unterschiede zwischen MySQL InnoDB und MyISAM

Vorwort MySQL unterstützt viele Arten von Tabelle...

Gängige Master-Slave-Replikationsarchitekturen in MySQL 4

Inhaltsverzeichnis Replikationsarchitektur mit ei...

Implementierungscode zum Hinzufügen von Links zu FLASH über HTML (Div-Ebene)

Heute möchte ein Kunde eine Anzeige schalten und d...

Layui implementiert den Bestätigungscode der Anmeldeschnittstelle

In diesem Artikelbeispiel wird der spezifische Co...