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

So bedienen Sie das Kontrollkästchen auf einer HTML-Seite

Kontrollkästchen sind auf Webseiten sehr verbreit...

Lösung zur Codeaufteilung im Vue-Projekt

Inhaltsverzeichnis Hintergrund Zweck Vor der Spal...

Best Practices zur Implementierung einfacher Jira-Projekte mit React+TS

Eine Reihe von Projekten für die Ausbildung reagi...

Detailliertes Tutorial zur Installation von ElasticSearch 6.4.1 auf CentOS7

1. Laden Sie das ElasticSearch 6.4.1-Installation...

JavaScript implementiert die umfassendste Codeanalyse einer einfachen Lupe (ES5)

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

MySQL 5.7.18 MSI-Installations-Grafik-Tutorial

In diesem Artikel wird das MySQL 5.7.18 MSI-Insta...

Fragen zum Vorstellungsgespräch zu JS 9 Promise

Inhaltsverzeichnis 1. Mehrere .catch 2. Mehrere ....

Eine kurze Erläuterung der MySQL-Benutzerberechtigungstabelle

MySQL erstellt bei der Installation automatisch e...

Empfohlene 20 besten kostenlosen englischen Handschrift-Schriftarten

Jellyka BeesAntike Handschrift [Ank]* Jellyka Cutt...

echars 3D-Kartenlösung für benutzerdefinierte Farben von Regionen

Inhaltsverzeichnis Frage verlängern Lösung des Pr...

JS implementiert einfachen Kalendereffekt

In diesem Artikel wird der spezifische JS-Code zu...