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

Detaillierte Erklärung dreier häufig verwendeter Webeffekte in JavaScript

Inhaltsverzeichnis 1 Element Offset-Serie 1.1 Off...

Beispielcode mit SCSS in Uni-App

Aufgetroffene Fallstricke Ich habe den ganzen Nac...

So legen Sie Hintergrundfarbe und Transparenz in Vue fest

Einstellungen für Hintergrundfarbe und Transparen...

Detaillierte Erklärung und Erweiterung von ref und reactive in Vue3

Inhaltsverzeichnis 1. Ref und reaktiv 1. reaktiv ...

Alibaba Cloud Server Ubuntu Konfigurations-Tutorial

Da für den Import benutzerdefinierter Ubuntu-Imag...

MySQL Master-Slave-Replikationsprinzip und zu beachtende Punkte

Vorne geschrieben Ich habe kürzlich ein spezielle...

Detaillierte Erklärung der Set-Datenstruktur von JavaScript

Inhaltsverzeichnis 1. Was ist Set 2. Konstruktor ...

Zusammenfassung des Wissens zum Vue V-Modell

​v-model ist eine Vue-Direktive, die eine bidirek...

So greifen Sie über die IP-Adresse auf MySql zu

1. Melden Sie sich bei MySQL an: mysql -u root -h...