Detaillierte Erklärung der MySQL-Binlog-Verwendung

Detaillierte Erklärung der MySQL-Binlog-Verwendung

binlog ist eine binäre Protokolldatei, die alle DML-Operationen von MySQL aufzeichnet. Über Binlog-Protokolle können wir Datenwiederherstellung, inkrementelle Sicherungen, Master-Master-Replikation, Master-Slave-Replikation usw. durchführen. Entwickler schenken Binlog möglicherweise nicht viel Aufmerksamkeit, aber für Betriebs- und Wartungspersonal oder Architekturpersonal ist es sehr wichtig.

MySQL 5.7 aktiviert Binlog nicht standardmäßig. Einzelheiten zur Aktivierung finden Sie unter https://www.jb51.net/article/207953.htm

Nachdem Binlog erfolgreich aktiviert wurde, kann der Speicherort der Binlog-Datei in der Konfigurationsdatei my.inf angezeigt werden. Sie können es auch in der MySQL-Befehlszeile anzeigen. Der Befehlszeilenansichtscode lautet wie folgt

Variablen wie „%log_bin%“ anzeigen;

Wir können auch einen Blick auf die aktuelle MySQL-Binlog-Situation werfen

Masterstatus anzeigen; 

Wie aus der obigen Abbildung ersichtlich, gibt es derzeit nur eine Binlog-Datei, der Dateiname lautet: mysql-bin.000001. Bei jedem Neustart wird automatisch eine Binlog-Datei generiert . Nach dem Neustart führen wir denselben Befehl erneut aus und der Inhalt lautet wie folgt:

Es gibt auch eine solche Datei im Verzeichnis, in dem Binlog gespeichert ist.

Natürlich können wir die Binlog-Datei auch manuell aktualisieren. Durch das Leeren der Protokolle wird auch eine neue Binlog-Datei erstellt. Tatsächlich wird beim Neustart des Servers auch der Vorgang zum Leeren der Protokolle aufgerufen.

Wenn wir alle diese Dateien löschen möchten, können wir dazu den Reset-Master verwenden.

Als nächstes schauen wir uns die Funktionsweise einer einzelnen Datei an. Zunächst wollen wir uns den Inhalt der Datei ansehen.

Suchen Sie das Binlog-Verzeichnis. Wir möchten uns beispielsweise mysql-bin.000001 ansehen.

vi mysql-bin.000001 

Wir sehen eine Menge Kauderwelsch. Wir wissen, dass es sich hier um eine Reihe von Binärdateien handelt. Daher muss beim Öffnen der Binärdatei als Text etwas schiefgehen. Wie können wir also den Inhalt dieser Datei anzeigen?

MySQL stellt uns ein Tool zum Anzeigen von Binlog-Protokollen zur Verfügung, genannt mysqlbinlog

mysqlbinlog myql-bin.000001

Diese Datei ist ziemlich lang. Was sollten Sie tun, wenn Sie sie nicht in einem Rutsch durchlesen können? Sie können Linux-Pipes verwenden. Ich werde das hier nicht im Detail erklären. Sie können sich selbst etwas Wissen über Linux aneignen.

Beachten Sie, dass im obigen Screenshot ein Positionsfeld vorhanden ist. Dieses Feld ähnelt einem Zeiger. Der aktuelle Wert dieses Felds ist 154, was die aktuelle Position des Binärprotokolls angibt. Jedes Mal, wenn wir eine DML-Operation durchführen, ändert sich die Position. Erstellen wir beispielsweise einen Datentest

Vor dem Erstellen können wir der Einfachheit halber das Binlog-Protokoll löschen und den Master zurücksetzen. In einer Produktionsumgebung ist dieser Vorgang sehr gefährlich, daher können wir Flush-Protokolle verwenden, um ihn zu verarbeiten und eine neue Binärprotokolldatei zu generieren. Unabhängig von der verwendeten Methode benötigen wir lediglich eine neue Binlog-Datei in der Testumgebung. Nach dem Generieren einer neuen Binlog-Datei können wir den Status über den Show-Master-Status überprüfen.

Lassen Sie uns eine DML-Anweisung ausführen. Wir möchten beispielsweise eine Testdatenbank erstellen

Datenbanktest erstellen;

Dann überprüfen wir den Status nach der Erstellung. Wie unten gezeigt, stellen wir fest, dass sich die Position von 154 auf 313 geändert hat, was bedeutet, dass unser Vorgang zwischen 154 und 313 liegt. Dann schauen wir uns den Inhalt des Binlogs an.

Den Inhalt des Binlogs zwischen 154 und 313 fangen wir wie folgt ab:

# bei 154
 
#170708 9:24:02 Server-ID 12345 End-Log-Position 219 CRC32 0x30763ffe Anonymous_GTID last_committed=0 Sequenznummer=1
 
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
 
# bei 219
 
#170708 9:24:02 Server-ID 12345 End-Log-Pos 313 CRC32 0x4d0140b3 Abfrage Thread-ID = 5 Exec-Zeit = 0 Fehlercode = 0
 
ZEITSTEMPEL EINSTELLEN=1499477042/*!*/;
 
SETZEN Sie @@session.pseudo_thread_id=5/*!*/;
 
SETZEN Sie @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
 
SETZEN Sie @@session.sql_mode=1436549152/*!*/;
 
SETZEN Sie @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
 
/*!\C utf8 *//*!*/;
 
SETZEN @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=8/*!*/;
 
SETZEN @@session.lc_time_names=0/*!*/;
 
SET @@session.collation_database=DEFAULT/*!*/;
 
Datenbanktest erstellen
 
/*!*/;
 
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* hinzugefügt von mysqlbinlog */ /*!*/;
 
TRENNUNGSZEICHEN ;
 
# Ende der Protokolldatei
 
/*!50003 SETZEN SIE COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
 
/*!50530 SETZEN @@SESSION.PSEUDO_SLAVE_MODE=0*/;

Wir können sehen, dass MySQL viele implizite Operationen ausführt. Aufmerksame Freunde werden diesen Satz sehen: create database test;

Lassen Sie uns das Binlog kurz zusammenfassen:

1. Die Binlog-Datei erstellt eine neue Datei, wenn der Dienst gestartet wird

2. Sie können die Protokolle manuell aktualisieren, indem Sie die Protokolle leeren, um eine neue Binlog-Datei zu generieren

3. Sie können den Status von Binlog über Show Master Status anzeigen

4. Binlog-Logdateien können durch Zurücksetzen des Masters gelöscht werden

5. Der Inhalt des Binlog-Protokolls kann über das Tool mysqlbinlog angezeigt werden

6. Durch Ausführen von DML zeichnet MySQL automatisch Binlog auf

Dies ist das Ende dieses Artikels zur detaillierten Verwendung des MySQL-Binlog-Protokolls. Weitere relevante Inhalte zur Verwendung des MySQL-Binlog-Protokolls finden Sie in früheren Artikeln auf 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:
  • MySQL verwendet Binlog-Protokolle zur Implementierung der Datenwiederherstellung
  • So öffnen Sie das MySQL-Binlog-Protokoll
  • Detaillierte Erläuterung des Binlog-Protokollanalysetools zur Überwachung von MySQL: Canal
  • Detaillierte Erläuterung des Befehls zum Bereinigen des MySQL-Datenbank-Binlogs
  • 3 häufige Fehler beim Lesen von MySQL Binlog-Protokollen
  • So zeigen Sie das MySQL-Binlog (Binärprotokoll) an
  • Zwei Möglichkeiten zum korrekten Bereinigen von MySQL-Binlog-Protokollen
  • Erläutern Sie das Binlog-Protokoll von MySQL und wie Sie das Binlog-Protokoll zum Wiederherstellen von Daten verwenden
  • Zusammenfassung der Binlog-Nutzung der MySQL-Datenbank (unbedingt lesen)
  • Vergleichende Analyse von MySQL Binlog-Protokollverarbeitungstools

<<:  So installieren Sie Postgres 12 + pgadmin im lokalen Docker (unterstützt Apple M1)

>>:  Beim Website-Design sollte auf die Farbhierarchie geachtet werden

Artikel empfehlen

Häufige Browserkompatibilitätsprobleme (Zusammenfassung)

Browserkompatibilität ist nichts anderes als Stil...

Verwenden Sie Docker, um ein verteiltes lnmp-Image zu erstellen

Inhaltsverzeichnis 1. Verteilte LNMP-Image-Produk...

So legen Sie die Breite und Höhe von HTML-Tabellenzellen fest

Beim Erstellen von Webseiten tritt häufig das Pro...

InnoDB-Typ MySql stellt Tabellenstruktur und Daten wieder her

Voraussetzung: Speichern Sie die .frm- und .ibd-D...

So verwenden Sie vue3+TypeScript+vue-router

Inhaltsverzeichnis Einfach zu bedienen Erstellen ...

JavaScript-Implementierung von Lupendetails

Inhaltsverzeichnis 1. Rendern 2. Umsetzungsprinzi...

Ein grafisches Tutorial zur Installation von MySQL unter Windows

Zusammenfassung: Dieser Artikel erläutert hauptsä...

Analyse des HTTP-Schnittstellentestprozesses basierend auf Postman

Ich habe zufällig ein tolles Tutorial zum Thema k...

Detailliertes Beispiel für die Verwendung von useState in React

Verwendungsstatus useState fügt einer Komponente ...

Eine kurze Analyse der parallelen MySQL-Replikation

01 Das Konzept der parallelen Replikation In der ...

Detaillierte Erklärung der Verwendung des Bash-Befehls

Unter Linux wird Bash als Standard übernommen, wa...

Hinweise zum Systemaufruf des Linux-Kernel-Gerätetreibers

/**************************** * Systemaufruf*****...

HTML ungeordnete Liste Aufzählungspunkte mit Bildern CSS schreiben

Erstellen Sie eine HTML-Seite mit einer ungeordnet...

9 Tipps zur MySQL-Datenbankoptimierung

Inhaltsverzeichnis 1. Wählen Sie die am besten ge...

Vue implementiert Karussell-Animation

In diesem Artikelbeispiel wird der spezifische Co...