Detaillierte Erläuterung zur Konfiguration der mehrfädigen Master-Slave-Replikation von MySQL 5.7-Slaveknoten

Detaillierte Erläuterung zur Konfiguration der mehrfädigen Master-Slave-Replikation von MySQL 5.7-Slaveknoten

Vorwort

MySQL unterstützt Multithread-Replikation ab MySQL 5.6, aber Version 5.6 weist einen Defekt auf. Obwohl Multithreading unterstützt wird, kann jede Datenbank nur einen Thread haben. Das heißt, wenn wir nur eine Datenbank haben, arbeitet während der Master-Slave-Replikation nur ein Thread. Es entspricht dem vorherigen Einzelthread. Ab MySQL 5.7 wird die parallele Master-Slave-Replikation unter derselben Datenbank unterstützt. Standardmäßig handelt es sich jedoch immer noch um eine einzelne Datenbank und einen einzelnen Thread. Wenn Sie Multithreading verwenden müssen, müssen Sie es auf dem Slave-Knoten konfigurieren.

MySQL 5.7 fügt einen neuen Typ der Master-Slave-Replikation hinzu, mit den folgenden zwei Typen:

  • DATABASE Bibliotheksbasierte parallele Replikation, jede Datenbank entspricht einem Replikationsthread
  • LOGICAL_CLOCK Parallele Replikation basierend auf Gruppenübermittlung, mehrere Threads können unter derselben Datenbank existieren

Die folgenden Schritte werden auf dem Slave-Knoten konfiguriert.

Aktuelle Konfiguration anzeigen

Bevor wir mit der Konfiguration beginnen, werfen wir einen Blick auf die Anzahl der Master-Slave-Replikationsprozesse unter der aktuellen Konfiguration.

mysql> Prozessliste anzeigen;
+----+----------+----------+------+---------+---------+-----------+-----------------------------------------+------------------+
| ID | Benutzer | Host | db | Befehl | Zeit | Status | Info |
+----+----------+----------+------+---------+---------+-----------+-----------------------------------------+------------------+
| 1 | Systembenutzer | | NULL | Verbinden | 91749 | Warte darauf, dass der Master ein Ereignis sendet | NULL |
| 2 | Systembenutzer | | NULL | Verbinden | 208 | Slave hat das gesamte Relay-Protokoll gelesen; wartet auf weitere Aktualisierungen | NULL |
| 37 | root | localhost | NULL | Abfrage | 0 | wird gestartet | Prozessliste anzeigen |
+----+----------+----------+------+---------+---------+-----------+-----------------------------------------+------------------+
3 Zeilen im Satz (0,00 Sek.)

Aus dem Obigen können wir erkennen, dass nur ein Hauptprozess auf die Synchronisierung wartet.

Schauen Sie sich unten den Replikationstyp und die parallele Nummernkonfiguration an

mysql> Variablen wie „slave_parallel_type“ anzeigen;
+---------------------+----------+
| Variablenname | Wert |
+---------------------+----------+
| Slave-Paralleltyp | DATENBANK |
+---------------------+----------+
1 Zeile im Satz (0,00 Sek.)

Der aktuelle Replikationstyp ist DATABASE, was bedeutet, dass es nur einen Thread für die Replikation unter der einheitlichen Datenbank gibt und eine parallele Replikation nicht möglich ist.

mysql> Variablen wie „slave_parallel_workers“ anzeigen;
+------------------------+----------+
| Variablenname | Wert |
+------------------------+----------+
| parallele_Sklavenarbeiter | 0 |
+------------------------+----------+
1 Zeile im Satz (0,01 Sek.)

Die aktuelle Anzahl parallel arbeitender Prozesse beträgt 0

Konfigurieren von Multithreading

1. Stoppen Sie die Replikation vom Knoten

mysql> Slave stoppen;
Abfrage OK, 0 Zeilen betroffen (0,01 Sek.)

2. Stellen Sie den Replikationstyp auf LOGICAL_CLOCK ein

mysql> setze globalen Slave-Parallel-Typ = 'logische_Uhr';
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)
mysql> Variablen wie „slave_parallel_type“ anzeigen;
+---------------------+---------------+
| Variablenname | Wert |
+---------------------+---------------+
| Slave-Paralleltyp | LOGISCHE_UHR |
+---------------------+---------------+
1 Zeile im Satz (0,01 Sek.)

3. Stellen Sie die Anzahl der parallelen Operationen auf 4 ein

mysql> setze globale Slave_Parallel_Worker = 4;
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)
mysql> Variablen wie „slave_parallel_workers“ anzeigen;
+------------------------+----------+
| Variablenname | Wert |
+------------------------+----------+
| Sklaven_Parallelarbeiter | 4 |
+------------------------+----------+
1 Zeile im Satz (0,00 Sek.)

4. Starten Sie die Replikation vom Knoten aus

mysql> Slave starten;
Abfrage OK, 0 Zeilen betroffen (0,02 Sek.)

5. Überprüfen Sie die Anzahl der aktuell arbeitenden Threads

mysql> Prozessliste anzeigen;
+----+----------+----------+------+---------+---------+------+----------------------------------------------------+------------------+
| ID | Benutzer | Host | db | Befehl | Zeit | Status | Info |
+----+----------+----------+------+---------+---------+------+----------------------------------------------------+------------------+
| 37 | root | localhost | NULL | Abfrage | 0 | wird gestartet | Prozessliste anzeigen |
| 38 | Systembenutzer | | NULL | Verbinden | 8 | Warte darauf, dass der Master ein Ereignis sendet | NULL |
| 39 | Systembenutzer | | NULL | Verbinden | 7 | Slave hat das gesamte Relay-Protokoll gelesen; wartet auf weitere Aktualisierungen | NULL |
| 40 | Systembenutzer | | NULL | Verbinden | 8 | Warte auf ein Ereignis vom Koordinator | NULL |
| 41 | Systembenutzer | | NULL | Verbinden | 8 | Warte auf ein Ereignis vom Koordinator | NULL |
| 42 | Systembenutzer | | NULL | Verbinden | 8 | Warte auf ein Ereignis vom Koordinator | NULL |
| 43 | Systembenutzer | | NULL | Verbinden | 8 | Warte auf ein Ereignis vom Koordinator | NULL |
+----+----------+----------+------+---------+---------+------+----------------------------------------------------+------------------+
7 Zeilen im Satz (0,00 Sek.)

Lassen Sie uns abschließend darüber sprechen, warum eine Multithread-Replikation erforderlich ist. Da es zu einer Verzögerung bei der Synchronisierung zwischen Master und Slave kommt, besteht der Zweck des Multithreadings darin, diese Verzögerung zu minimieren. Obwohl die Optimierung der Master-Slave-Beziehung eine Systemfunktion ist und unterschiedliche Szenarien unterschiedliche Lösungen erfordern, kann Multithreading die Latenz zumindest aus grundlegender Sicht reduzieren. Darüber hinaus müssen je nach tatsächlicher Situation der Datenbank wiederholte Tests durchgeführt werden, um die für Sie passenden Daten zu erhalten und festzustellen, ob die Verzögerung wirklich reduziert werden kann und wie viele Threads konfiguriert werden müssen.

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels Ihnen bei Ihrem Studium oder Ihrer Arbeit helfen kann. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Umfassende Interpretation der MySQL Master-Slave-Replikation, vom Prinzip bis zur Installation und Konfiguration
  • So konfigurieren Sie die MySQL Master-Slave-Replikation unter Windows
  • MySQL-Konfiguration SSL-Master-Slave-Replikation
  • Detaillierte Erläuterung der Konfigurationsmethode der Lese-/Schreibtrennung bei der MySQL-Master-Slave-Replikation
  • MySQL (Master/Slave) Master-Slave-Replikationsprinzip und Konfigurationsgrafik – detaillierte Erläuterung
  • Detaillierte Konfiguration der MySQL5.6-Master-Slave-Replikationssynchronisation (Bild und Text)
  • Detaillierte Analyse der halbsynchronen und asynchronen MySQL Master-Slave-Replikationskonfiguration
  • Einführung in die Heartbeat-Funktion der MySQL Master-Slave-Replikationskonfiguration
  • Das Prinzip und die Konfigurationsmethode der MySQL-Master-Slave-Replikation (ausführlicher)
  • Konfigurationsprozess für die MySQL-Master-Slave-Replikation

<<:  Detaillierte Erklärung zur Verwendung von JavaScript WeakMap

>>:  Detaillierte Erläuterung der CentOS-Konfiguration der offiziellen Nginx-Yum-Quelle

Artikel empfehlen

Analyse von MySQL-Latenzproblemen und Datenlöschungsstrategieprozess

Inhaltsverzeichnis 1. MySQL-Replikationsprozess 2...

Zusammenfassung und Analyse häufig verwendeter Docker-Befehle und Beispiele

Inhalt 1. Container-Lebenszyklusmanagement (1) Do...

JavaScript zum Erzielen eines Skin-Effekts (Ändern des Hintergrunds)

In diesem Artikel wird der spezifische JavaScript...

So konfigurieren Sie pseudostatisches und clientadaptives Nginx

Das Backend verwendet das Framework thinkphp3.2.3...

Detailliertes Tutorial zur Verwendung von stimulsoft.reports.js mit vue-cli

vue-cli verwendet stimulsoft.reports.js (Tutorial...

MySQL-Optimierung: Cache-Optimierung

Ich freue mich, dass einige Blogger meinen Artike...

Detaillierte Erklärung zur Verwendung von Titel-Tags und Absatz-Tags in XHTML

XHTML-Überschriftenübersicht Wenn wir Word-Dokume...

So installieren Sie die Linux-Onlinesoftware gcc online

Befehle zur Linux-Onlineinstallation: yum install...

Lösen Sie das Problem des MySQL Threads_running-Surge und der langsamen Abfrage

Inhaltsverzeichnis Hintergrund Problembeschreibun...

So machen Sie React-Komponenten im Vollbildmodus

einführen Dieser Artikel basiert auf React + antd...

960 Grid System – Grundprinzipien und Verwendung

Natürlich gibt es auch viele Leute, die die gegent...