Detaillierte Erklärung des Codes zwischen der MySQL-Masterbibliothek Binlog (Master-Log) und der Slave-Bibliothek Relay-Log

Detaillierte Erklärung des Codes zwischen der MySQL-Masterbibliothek Binlog (Master-Log) und der Slave-Bibliothek Relay-Log

Binärprotokoll der Hauptbibliothek:

# bei 2420
#170809 17:16:20 Server-ID 1882073306 end_log_pos 2451 CRC32 0x58f2db87 Xid = 32880
BEGEHEN /*!*/;
# bei 2451
#170814 11:07:18 Server-ID 1882073306 end_log_pos 2528 CRC32 0x40774a4b Abfrage Thread_ID=92 Exec_Time=0 Fehlercode=0
ZEITSTEMPEL FESTLEGEN=1502680038/*!*/;
BEGINNEN
/*!*/;
# bei 2528
# bei 2560
#170814 11:07:18 Server-ID 1882073306 end_log_pos 2560 CRC32 0x7bdf274b Intvar
SETZEN SIE INSERT_ID=107/*!*/;
#170814 11:07:18 Server-ID 1882073306 end_log_pos 2669 CRC32 0x68e441c8 Abfrage Thread_ID = 92 Exec_Time = 0 Fehlercode = 0
ZEITSTEMPEL FESTLEGEN=1502680038/*!*/;
in t2 (Name) Werte einfügen ('a100')
/*!*/;
# bei 2669
# bei 2701
#170814 11:07:27 Server-ID 1882073306 end_log_pos 2701 CRC32 0xcf89b910 Intvar
SETZEN SIE INSERT_ID=108/*!*/;
#170814 11:07:27 Server-ID 1882073306 End-Log-Pos 2810 CRC32 0x78466d7b Abfrage Thread-ID = 92 Exec-Zeit = 0 Fehlercode = 0
ZEITSTEMPEL EINSTELLEN=1502680047/*!*/;
in t2 (Name) Werte einfügen ('a200')
/*!*/;
# bei 2810
# bei 2842
#170814 11:07:30 Server-ID 1882073306 end_log_pos 2842 CRC32 0x1e5a0847 Intvar
SETZEN SIE INSERT_ID=109/*!*/;
#170814 11:07:30 Server-ID 1882073306 end_log_pos 2951 CRC32 0xebeb947c Abfrage Thread_ID=92 Exec_Time=0 Fehlercode=0
ZEITSTEMPEL EINSTELLEN=1502680050/*!*/;
in t2 (Name) Werte einfügen ('a300')
/*!*/;
# bei 2951
#170814 11:07:34 Server-ID 1882073306 end_log_pos 2982 CRC32 0x6436ad60 Xid = 32934
BEGEHEN /*!*/;

Aus dem Relay-Protokoll der Bibliothek:

/*!50530 SETZEN @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!40019 SETZEN @@session.max_insert_delayed_threads=0*/;
/*!50003 SETZEN @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
TRENNUNGSZEICHEN /*!*/;
# bei 4
#170809 17:17:24 Server-ID 1882083306 end_log_pos 120 CRC32 0x5df4221c Start: Binlog v 4, Server v 5.6.23-72.1-Log erstellt 170809 17:17:24
# bei 120
#700101 8:00:00 Server-ID 1882073306 end_log_pos 0 CRC32 0x0b8a412f Rotieren zu test-mysql-bin.000116 pos: 2451
# bei 172
#170809 16:28:12 Server-ID 1882073306 end_log_pos 0 CRC32 0xd0d3bf30 Start: Binlog v 4, Server v 5.6.23-72.1-Log erstellt 170809 16:28:12
# bei 288
#170814 11:07:18 Server-ID 1882073306 end_log_pos 2528 CRC32 0x40774a4b Abfrage Thread_ID=92 Exec_Time=0 Fehlercode=0
ZEITSTEMPEL FESTLEGEN=1502680038/*!*/;
SET @@session.pseudo_thread_id=92/*!*/;
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=1073741824/*!*/;
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=33/*!*/;
SETZEN @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGINNEN
/*!*/;
# bei 365
# bei 397
#170814 11:07:18 Server-ID 1882073306 end_log_pos 2560 CRC32 0x7bdf274b Intvar
SETZEN SIE INSERT_ID=107/*!*/;
#170814 11:07:18 Server-ID 1882073306 end_log_pos 2669 CRC32 0x68e441c8 Abfrage Thread_ID = 92 Exec_Time = 0 Fehlercode = 0
verwende `db1`/*!*/;
ZEITSTEMPEL FESTLEGEN=1502680038/*!*/;
in t2 (Name) Werte einfügen ('a100')
/*!*/;
# bei 506
# bei 538
#170814 11:07:27 Server-ID 1882073306 end_log_pos 2701 CRC32 0xcf89b910 Intvar
SETZEN SIE INSERT_ID=108/*!*/;
#170814 11:07:27 Server-ID 1882073306 End-Log-Pos 2810 CRC32 0x78466d7b Abfrage Thread-ID = 92 Exec-Zeit = 0 Fehlercode = 0
ZEITSTEMPEL EINSTELLEN=1502680047/*!*/;
in t2 (Name) Werte einfügen ('a200')
/*!*/;
# bei 647
# bei 679
#170814 11:07:30 Server-ID 1882073306 end_log_pos 2842 CRC32 0x1e5a0847 Intvar
SETZEN SIE INSERT_ID=109/*!*/;
#170814 11:07:30 Server-ID 1882073306 end_log_pos 2951 CRC32 0xebeb947c Abfrage Thread_ID=92 Exec_Time=0 Fehlercode=0
ZEITSTEMPEL EINSTELLEN=1502680050/*!*/;
in t2 (Name) Werte einfügen ('a300')
/*!*/;
# bei 788
#170814 11:07:34 Server-ID 1882073306 end_log_pos 2982 CRC32 0x6436ad60 Xid = 32934
BEGEHEN /*!*/;

Beachten Sie diese Zeile im Relay-Protokoll:

#700101 8:00:00 Server-ID 1882073306 end_log_pos 0 CRC32 0x0b8a412f Rotieren zu test-mysql-bin.000116 pos: 2451

Dies zeigt an, dass das Relay-Protokoll die Informationen der Hauptdatenbank test-mysql-bin.000116 ab Position 2451 speichert.

Schauen wir uns eine konkrete Korrespondenz an:

Das Binlog der Hauptbibliothek lautet wie folgt:

# bei 2560
#170814 11:07:18 Server-ID 1882073306 end_log_pos 2560 CRC32 0x7bdf274b Intvar
SETZEN SIE INSERT_ID=107/*!*/;
#170814 11:07:18 Server-ID 1882073306 end_log_pos 2669 CRC32 0x68e441c8 Abfrage Thread_ID = 92 Exec_Time = 0 Fehlercode = 0
ZEITSTEMPEL FESTLEGEN=1502680038/*!*/;
in t2 (Name) Werte einfügen ('a100')
/*!*/;
# bei 2669

Das entsprechende Relay-Log der Slave-Bibliothek enthält die folgenden Zeilen:

# bei 397
#170814 11:07:18 Server-ID 1882073306 end_log_pos 2560 CRC32 0x7bdf274b Intvar
SETZEN SIE INSERT_ID=107/*!*/;
#170814 11:07:18 Server-ID 1882073306 end_log_pos 2669 CRC32 0x68e441c8 Abfrage Thread_ID = 92 Exec_Time = 0 Fehlercode = 0
verwende `db1`/*!*/;
ZEITSTEMPEL FESTLEGEN=1502680038/*!*/;
in t2 (Name) Werte einfügen ('a100')
/*!*/;
# bei 506

Beachten Sie auch die Beziehung zwischen den folgenden Zeilen von show slave status\G:

Master_Log_File: test-mysql-bin.000117
Read_Master_Log_Pos: 774

Die beiden Zeilen oben repräsentieren IO-Threads relativ zur Hauptbibliothek

Relay-Log-Datei: relay-log.000038
Relay_Log_Pos: 723

Die beiden Zeilen oben stellen den SQL-Thread relativ zur Slave-Bibliothek dar

Relay_Master_Log_File: test-mysql-bin.000117
Exec_Master_Log_Pos: 555

Die beiden Zeilen oben stellen den SQL-Thread relativ zur Hauptbibliothek dar

Die SQL-Anweisungen entsprechend Relay_Log_Pos: 723 und Exec_Master_Log_Pos: 555 sind konsistent.

Zusammenfassen

Das Obige ist der gesamte Inhalt dieses Artikels zur detaillierten Code-Erklärung der Beziehung zwischen dem Binlog der MySQL-Masterbibliothek und dem Relay-Log der Slavebibliothek. Ich hoffe, es wird für alle hilfreich sein. Interessierte Freunde können sich auf Folgendes beziehen: Detaillierte Analyse des Binlog_Format-Modus und der Konfiguration in MySQL, mehrere wichtige MySQL-Variablen, detaillierte Erklärung des MySQL-Vorbereitungsprinzips usw. Wenn Sie Fragen haben, können Sie jederzeit eine Nachricht hinterlassen. Jeder ist herzlich eingeladen, zu kommunizieren und zu diskutieren.

Das könnte Sie auch interessieren:
  • So zeigen Sie das MySQL-Binlog (Binärprotokoll) an
  • So verwenden Sie Binlog zur Datenwiederherstellung in MySQL
  • Detaillierte Erläuterung der Methode zur Anzeige von Mysql-Binlog-Daten
  • Detaillierte Analyse des binlog_format-Modus und der Konfiguration in MySQL
  • Detaillierte Erläuterung der Verwendung von binlog2sql zum schnellen Rollback nach einem MySQL-Fehler
  • Zwei Möglichkeiten zum korrekten Bereinigen von MySQL-Binlog-Protokollen
  • Schritte zum Öffnen des MySQL-Binlogs

<<:  JS implementiert einfachen Beispielcode zur Steuerung der Videowiedergabegeschwindigkeit

>>:  So blockieren und verbieten Sie Webcrawler im Nginx-Server

Artikel empfehlen

js, um einen einfachen Drag-Effekt zu erzielen

In diesem Artikel wird der spezifische Code von j...

React-Methode zum Anzeigen von Daten auf Seiten

Inhaltsverzeichnis Übergeordnete Komponente „list...

Detaillierte Erklärung der JavaScript-Funktion dieses Zeigeproblems

Inhaltsverzeichnis 1. Die Richtung davon in der F...

React-Beispiel zum Abrufen des Werts aus dem Eingabefeld

Reagieren Sie auf mehrere Arten, um den Wert des ...

Beispielcode für HTML-Layered-Box-Shadow-Effekt

Schauen wir uns zunächst das Bild an: Heute werde...

Implementierung von Diensten im Docker für den Zugriff auf Hostdienste

Inhaltsverzeichnis 1. Szenario 2. Lösung 3. Fazit...

Verwendung von Vue-Filtern und benutzerdefinierten Anweisungen

Inhaltsverzeichnis Filter 01.Was ist 02. Wie es g...

VMware Workstation ist nicht mit Device/Credential Guard kompatibel

Beim Installieren einer virtuellen Maschine wird ...

Erläuterung der Schritte für Tomcat zur Unterstützung des https-Zugriffs

So ermöglichen Sie Tomcat die Unterstützung des h...