MySQL Series 11-Protokollierung

MySQL Series 11-Protokollierung

Tutorial-Reihe

MySQL-Reihe: Grundlegende Konzepte der relationalen MySQL-Datenbank
MariaDB-Serverinstallation der MySQL-Reihe
MySQL Series II-Konfiguration für mehrere Instanzen
MySQL Serie 3 Grundlagen
MySQL Serie 4 SQL-Syntax
MySQL-Serie fünf Ansichten, gespeicherte Funktionen, gespeicherte Prozeduren, Trigger
MySQL Series 6-Benutzer und Autorisierung
MySQL Series 7 MySQL-Speicher-Engine
MySQL Serie 8 MySQL Server-Variablen
MySQL-Serie 9 MySQL-Abfrage-Cache und -Index
MySQL Series 10 MySQL-Transaktionsisolierung zur Implementierung der Parallelitätskontrolle
MySQL Series 11-Protokollierung
MySQL Serie 12 Backup und Wiederherstellung
MySQL Serie 13 MySQL-Replikation
MySQL Serie 14 MySQL Hochverfügbarkeitsimplementierung
MySQL-Serie 15: Allgemeine MySQL-Konfiguration und Leistungsstresstest

1. SQL-Befehlsverlauf

~/.mysql_history zeichnet den in MySQL ausgeführten Befehlsverlauf auf

Transaktionsprotokoll

Transaktionsprotokoll: Die transaktionale Speicher-Engine verwaltet und nutzt sich selbst

Wenn eine Transaktion festgeschrieben, aber noch nicht auf der Festplatte gespeichert wurde, wird sie im Transaktionsprotokoll aufgezeichnet. Wenn das System zu diesem Zeitpunkt die Stromversorgung verliert, wird die festgeschriebene Transaktion automatisch wiederholt (Redo-Protokoll) und nach dem Neustart auf die Festplatte geschrieben. Wenn die Transaktion nicht festgeschrieben wurde, wird der Rückgängig-Vorgang (Rückgängig-Protokoll) nach dem Stromausfall und Neustart ausgeführt.

Zugehörige Variablen

MariaDB [Schule]> VARIABLEN WIE 'innodb_log%' ANZEIGEN;
+-----------------------------+---------+
| Variablenname | Wert |
+-----------------------------+---------+
| innodb_log_block_size | 512 | -- Blockgröße | innodb_log_buffer_size | 8388608 | -- Cachegröße | innodb_log_file_size | 1073741824 | -- Größe jeder Protokolldatei | innodb_log_files_in_group | 3 | -- Anzahl der Protokollgruppenmitglieder, d. h. wie viele Dateien | innodb_log_group_home_dir | ./ | -- Transaktionsdateipfad relativ zum Datenverzeichnis +---------------------------+------------+

Der Standardwert von innodb_log_file_size beträgt 5 M und der Standardwert von innodb_log_files_in_group beträgt 2. Es wird dringend empfohlen, diese beiden Werte zu erhöhen.

Wenn die Daten des Transaktionsvorgangs größer sind als die Gesamtgröße der Transaktionsprotokolldatei, kann beim Ausführen von ROLLBACK Folgendes rückgängig gemacht werden: Die Ausführung kann zwar rückgängig gemacht werden, die Datendatei wird jedoch belegt und der Befehl OPTIMIZE TABLE muss verwendet werden, um Datenspeicherplatz freizugeben.

Durch das Löschen von Tabellendatensätzen mit TRUNCATE kann der belegte Speicherplatz reduziert werden. Der Befehl DELETE gibt keinen Speicherplatz frei. Wenn Sie Speicherplatz freigeben müssen, müssen Sie den Befehl OPTIMIZE verwenden, um durch Defragmentieren Speicherplatz freizugeben.

Hinweis: Wenn Sie innodb_log_file_size ändern, müssen Sie zuerst die ursprüngliche Protokolldatei löschen.

3. Fehlerprotokoll

Im Fehlerprotokoll wird Folgendes aufgezeichnet:

  1. Ausgabe von Ereignisinformationen beim Starten und Herunterfahren von mysqld
  2. Während des mysqld-Vorgangs generierte Fehlermeldungen
  3. Protokollinformationen, die generiert werden, wenn der Ereignisplaner ein Ereignis ausführt
  4. Beim Starten eines Slave-Threads auf einem Slave in einer Master-Slave-Replikationsarchitektur wird eine Meldung generiert

Zugehörige Variablen

MariaDB [Schule]> GLOBALE VARIABLEN WIE 'log_error' ANZEIGEN; #Pfad der Fehlerprotokolldatei+---------------+-------------------------------+
| Variablenname | Wert |
+-----------------+------------------------------+
| log_fehler | /var/log/mariadb/mariadb.log |
+-----------------+-------------------------------+

log_warnings=1|0 0Standardwert 1 (ja): Ob Warninformationen in die Fehlerprotokolldatei protokolliert werden sollen

4. Abfrageprotokoll

Protokolliert Benutzeroperationsprotokolle. Es wird im Allgemeinen nicht empfohlen,

MariaDB [Schule]> VARIABLEN WIE 'general_log%' ANZEIGEN;
+------------------+-------------+
| Variablenname | Wert |
+------------------+-------------+
| general_log | OFF | – Allgemeines Protokoll ein- und ausschalten, standardmäßig deaktiviert | general_log_file | centos7.log | – Dateiname der allgemeinen Protokolldatei, /var/lib/mysql/HOSTNAME.log
+------------------+-------------+
MariaDB [Schule]> VARIABLEN WIE 'log_output' ANZEIGEN;  
+---------------+-------+
| Variablenname | Wert |
+---------------+-------+
| log_output | DATEI | -- So speichern Sie Protokolle (TABELLE|DATEI|KEINE)
+---------------+-------+

mysql.general_log: Die Tabelle speichert Abfrageprotokolle, sofern diese in einer Tabelle gespeichert sind

5. Langsames Abfrageprotokoll

Zeichnet Vorgänge auf, deren Ausführung von Abfragen länger als die angegebene Zeit dauert.

1. Langsame abfragebezogene Variablen

MariaDB [Schule]> VARIABLEN WIE 'slow_query%' ANZEIGEN;    
+---------------------+------------------+
| Variablenname | Wert |
+---------------------+------------------+
| slow_query_log | OFF | -- Aktivieren oder deaktivieren Sie das Protokoll für langsame Abfragen | slow_query_log_file | centos7-slow.log | -- Protokolldatei für langsame Abfragen+---------------------+------------------+
MariaDB [Schule]> VARIABLEN WIE 'long_query_time' ANZEIGEN;
+-----------------+------------+
| Variablenname | Wert |
+-----------------+------------+
| long_query_time | 10.000000 | -- Der Schwellenwert für langsame Abfragen in Sekunden. Wenn die Abfragezeit 10 überschreitet, wird dies im Protokoll für langsame Abfragen aufgezeichnet. +-----------------+-----------+
MariaDB [Schule]> VARIABLEN WIE 'log_slow%' ANZEIGEN;
+---------------------+--------+
| Variablenname | Wert |
+---------------------+--------+
| log_slow_rate_limit | 1 | -- Wie viele Abfragen werden protokolliert? MariaDB-spezifisch | log_slow_verbosity | | -- Der Detaillierungsgrad des protokollierten Inhalts (Query_plan, Explain)
+---------------------+--------+
MariaDB [Schule]> VARIABLEN WIE 'log_queries_not_using_indexes' ANZEIGEN;
+-------------------------------+----------+
| Variablenname | Wert |
+-------------------------------+----------+
| log_queries_not_using_indexes | OFF | -- Protokollanweisungen, die keine Indexabfragen, sondern Volltextscans verwenden; standardmäßig deaktiviert, Aktivierung empfohlen +-------------------------------+----------+

log_slow_filter : Filter basierend auf Abfrageergebnissen

  • Administrator
  • Dateisortierung
  • Dateisortierung auf der Festplatte
  • Vollständig beitreten
  • Vollscan
  • Abfrage-Cache
  • query_cache_miss
  • temporäre Tabelle
  • temporäre_Tabelle_auf_der_Festplatte

2. Ergänzung: Verwenden Sie profiling , um die von Abfrageanweisungen verbrauchte Zeit detailliert zu verfolgen

MariaDB [Schule]> VARIABLEN WIE „Profiling“ ANZEIGEN;
+---------------+-------+
| Variablenname | Wert |
+---------------+-------+
| Profilerstellung | AUS | -- Aktivieren oder deaktivieren, standardmäßig deaktiviert+---------------+---------+
MariaDB [Schule]> SET Profiling=ON; #Aktivieren Sie die Funktion zur Verfolgung von Abfrageanweisungen. MariaDB [Schule]> SHOW Profiles; #Zeitliste der Ausführung von Abfrageanweisungen+----------+------------+---------------------------------------------------------+
| Abfrage-ID | Dauer | Abfrage |
+----------+------------+---------------------------------------------------------+
| 1 | 0,00024497 | AUSWÄHLEN * VON Studenten |
| 2 | 0,00038528 | SELECT stuid,name,age FROM students WHERE stuid = 2 |
+----------+------------+---------------------------------------------------------+
MariaDB [Schule]> SHOW-Profil für Abfrage 2; #Frage den detaillierten Ausführungsprozess der SQL-Anweisung mit der angegebenen Nummer ab+----------------------+----------+
| Status | Dauer |
+----------------------+----------+
| beginnt | 0,000035 |
| Eröffnungstabellen | 0,000003 |
| Nach dem Öffnen der Tabellen | 0,000006 |
| Abfrageende | 0,000003 |
| Tabellen schließen | 0,000002 |
| Elemente freigeben | 0,000011 |
| Status wird aktualisiert | 0,000006 |
| aufräumen | 0,000001 |
+----------------------+----------+

6. Binäres Protokoll

Zeichnet SQL-Anweisungen auf, die Datenänderungen verursacht haben oder möglicherweise Datenänderungen in festgeschriebenen Transaktionen verursacht haben, und generiert Datenkopien durch „Wiedergeben“ von Ereignissen in Protokolldateien, unabhängig vom Typ der Speicher-Engine.

Binäres Logging aktivieren. Es ist standardmäßig deaktiviert. Binäres Logging und Daten werden getrennt gespeichert.

Aktivieren Sie die Funktion zum Protokollieren von Binärdateien : Fügen Sie og_bin[=/path/somefile] unter [mysqld] in my.cnf hinzu

Das Standard-Binärprotokoll befindet sich im Datenbankverzeichnis. mariadb-bin.000001 ist die Binärprotokolldatendatei mariadb-bin.index ist die Binärprotokollindexdatei.

1. Drei Möglichkeiten zum Aufzeichnen von Binärprotokollen:

  • Basierend auf der Methode zur Aufzeichnung von Anweisungen wird jede Anweisung, die Daten ändert, als Anweisung aufgezeichnet, um Platz zu sparen. Das System verwendet standardmäßig diesen Modus, es wird jedoch nicht empfohlen, ihn zu verwenden, da versteckte Risiken bestehen.
  • Basierend auf der Zeilenaufzeichnungsmethode wird bei jeder Änderung einer Zeile die Anweisung, die sie ändert, als Anweisung aufgezeichnet. Das Protokollvolumen ist groß, aber der Sicherheitsschutz der Daten ist sehr hoch.
  • Gemischter Modus: gemischt, das System entscheidet, welche Methode verwendet werden soll
MariaDB [(keine)]> VARIABLEN WIE 'binlog_format' ANZEIGEN;  
+---------------+-----------+
| Variablenname | Wert |
+---------------+-----------+
| binlog_format | STATEMENT | -- Protokollierungsmodus, das System verwendet standardmäßig den anweisungsbasierten Modus+---------------+-----------+
SET binlog_format='ROW|STATEMENT|MIXED'; -- Ändern Sie den Aufzeichnungsmodus des Binärprotokolls

2. Mit dem Binärprotokoll verbundene Variablen

MariaDB [(keine)]> SHOW MASTER|BINARY LOGS; -- Liste der von MariaDB verwalteten Binärprotokolldateien anzeigen. +--------------------+-----------+
| Protokollname | Dateigröße |
+--------------------+-----------+
| mariadb-bin.000002 | 290 |
| mariadb-bin.000003 | 264 |
| mariadb-bin.000004 | 529038 |
| mariadb-bin.000005 | 245 |
+--------------------+-----------+
MariaDB [(keine)]> SHOW MASTER STATUS; -- Die verwendeten Binärprotokolldateien anzeigen +--------------------+----------+--------------+------------------+
| Datei | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------------+----------+--------------+------------------+
| mariadb-bin.000005 | 245 | | |
+--------------------+----------+--------------+------------------+
MariaDB [(keine)]> SHOW BINLOG EVENTS IN 'mariadb-bin.000004' FROM 1 LIMIT 2,3\G -- Den angegebenen Inhalt in der Binärdatei anzeigen
MariaDB [(keine)]> VARIABLEN ANZEIGEN WIE 'sql_log_bin'; -- Gibt an, ob Binärprotokolle aufgezeichnet werden sollen. Die Standardeinstellung ist EIN.
MariaDB [(keine)]> SHOW VARIABLES LIKE 'log_bin'; --Geben Sie den Dateispeicherort an; der Standardwert ist OFF, was bedeutet, dass die Binärprotokollfunktion nicht aktiviert ist. Beide der oben genannten Elemente müssen aktiviert sein. MariaDB [(keine)]> SHOW VARIABLES LIKE 'max_binlog_size';
+-----------------+------------+
| Variablenname | Wert |
+-----------------+------------+
| max_binlog_size | 1073741824 | -- Die maximale Größe einer einzelnen binären Protokolldatei. Wenn der Maximalwert erreicht ist, wird er automatisch erhöht. Der Standardwert ist 1 GB
+-----------------+------------+
MariaDB [(keine)]> VARIABLEN WIE 'sync_binlog' ANZEIGEN;    
+---------------+-------+
| Variablenname | Wert |
+---------------+-------+
| sync_binlog | 0 | -- Legen Sie fest, ob die Funktion zur sofortigen Synchronisierung des Binärprotokolls auf der Festplatte aktiviert werden soll. Der Standardwert ist 0. Das Betriebssystem ist für die Synchronisierung des Protokolls mit der Festplatte verantwortlich. +---------------+----------+
MariaDB [(keine)]> VARIABLEN WIE 'expire_logs_days' ANZEIGEN;
+------------------+--------+
| Variablenname | Wert |
+------------------+--------+
| expire_logs_days | 0 | – Anzahl der Tage, nach denen Binärprotokolle automatisch gelöscht werden können. Der Standardwert ist 0, was bedeutet, dass keine automatische Löschung erfolgt. +-------+--------+

3.mysqlbinlog-Befehl

  • Client-Befehlstool für Binärprotokoll
  • --start-position=# Startposition angeben
  • --stop-position=# Geben Sie die Endposition an
  • --start-datetime=(JJJJ-MM-TT hh:mm:ss) gibt die Startzeit an
  • --stop-datetime=(JJJJ-MM-TT hh:mm:ss) gibt die Endzeit an
  • --base64-output=Zeile dekodieren
  • -v |-vv |-vvv |-vvvv detaillierte Informationen anzeigen
[root@centos7 mysql]# mysqlbinlog --start-position=528864 --stop-position=529019 mariadb-bin.000004 --base64-output=decode-row -v
# bei 528864
#180611 20:59:46 Server-ID 1 end_log_pos 528992 Abfrage Thread_ID=29 exec_time=0 error_code=0
benutze „Schule“/*!*/;
ZEITSTEMPEL FESTLEGEN=1528721986/*!*/;
INSERT students(StuID,Name,Age,Gender) VALUES (26,'Tom',22,'M') #SQL-Anweisung zum Ändern der Daten /*!*/;

Datum und Uhrzeit des Vorfalls: 180611 20:59:46
Die Server-ID, auf der das Ereignis aufgetreten ist: Server-ID 1
Endposition des Ereignisses: end_log_pos 528992
Ereignistyp: Abfrage
Die ID des Threads, der dieses Ereignis auf dem Server ausgeführt hat, als das Ereignis auftrat: thread_id=29
Die Differenz zwischen dem Zeitstempel der Anweisung und dem Zeitpunkt, zu dem sie in die Binärdatei geschrieben wurde: exec_time=0
Fehlercode: error_code=0
Veranstaltungsinhalt: 
GTID: Global Transaction ID, ein eindeutiges Attribut von MySQL 5.6 und MariaDB 10 oder höher: GTID

Verwenden Sie mysqlbinlog mariadb-bin.000001 > file.sql um zur SQL-Datei umzuleiten, und verwenden Sie dann mysql -uroot -p < file.sql um die Daten direkt zu importieren und die Sicherungs- und Wiederherstellungsfunktion zu realisieren

4. Binäres Protokollmanagement

MariaDB [(keine)]> BINÄRPROTOKOLLE LÖSCHEN NACH „mariadb.000002“; – Löschen bis 02, Hinweis: 02 wird nicht gelöscht. MariaDB [(keine)]> BINÄRPROTOKOLLE LÖSCHEN VOR „2018-01-23“; – Protokolle vor dem 2018-01-23 löschen. MariaDB [(keine)]> BINÄRPROTOKOLLE LÖSCHEN VOR „2017-03-22 09:25:30“;
MariaDB [(keine)]> RESET MASTER; -- Alle Binärprotokolle löschen und Indexdateien zurücksetzen. MariaDB [(keine)]> FLUSH LOGS; -- Protokoll-Rolling manuell auslösen

7. Relais-Protokoll

relay log : In einer Master-Slave-Replikationsarchitektur wird der Slave-Server zum Speichern von Ereignissen verwendet, die aus dem Binärprotokoll des Master-Servers gelesen werden.

Zusammenfassen

Dieser Artikel endet hier. Ich hoffe, er kann Ihnen helfen. Ich hoffe auch, dass Sie mehr Inhalten auf 123WORDPRESS.COM mehr Aufmerksamkeit schenken können!

Das könnte Sie auch interessieren:
  • So aktivieren Sie die Protokollierung langsamer Abfragen in MySQL
  • mysql langsame Abfrage aktivieren So aktivieren Sie die Protokollierung langsamer MySQL-Abfragen
  • MySQL-Protokolleinstellungen und Anzeigemethoden
  • Details zur MySQL-Protokolldatei

<<:  Detaillierter Prozess zum Erstellen eines NFS-Servers mithilfe des NFS-Ganesha-Image von Docker

>>:  Native Netzwerkanforderungsschema von Vue und Netzwerkanforderungsbibliothek von JS

Artikel empfehlen

Informationen zur Verwendung des Iconfont-Vektorsymbols von Alibaba in Vue

Es gibt viele Importmethoden im Internet, und die...

So erstellen Sie einen untergeordneten Prozess in nodejs

Inhaltsverzeichnis Einführung Untergeordneter Pro...

So simulieren Sie eine Aufzählung mit JS

Vorwort Im aktuellen JavaScript gibt es kein Konz...

Tutorial zur Installation von htop unter CentOS 8

Wenn Sie Ihr System interaktiv überwachen möchten...

Detaillierte Erläuterung der allgemeinen Docker-Befehle Study03

Inhaltsverzeichnis 1. Hilfe-Befehl 2. Befehl „Spi...

HTTP-Rückgabecodeliste (Erklärung auf Chinesisch und Englisch)

Liste der HTTP-Rückgabecodes (unten finden Sie ei...

So entfernen Sie „Enter“, „Senden“ und „Enter != Senden“ aus dem Formular

Um das Problem „Eingeben != Absenden“ zu implement...

Lebenszyklus und Hook-Funktionen in Vue

Inhaltsverzeichnis 1. Was ist der Lebenszyklus 2....

Details zur Verwendung der JS-Tag-Syntax

Inhaltsverzeichnis 1. Einführung in Label-Anweisu...

Zusammenfassung der Vue Watch-Überwachungsmethoden

Inhaltsverzeichnis 1. Die Rolle der Uhr in Vue is...