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

Vue ruft die Computerkamera auf, um die Fotofunktion zu realisieren

In diesem Artikelbeispiel wird der spezifische Co...

Detaillierte Erklärung der JavaScript-Timer

Inhaltsverzeichnis Kurze Einleitung Intervall fes...

CentOS 7 Installations- und Konfigurations-Tutorial unter VMware10

Während Ubuntu heute das beliebteste Linux-Betrie...

Spezifische Verwendung der MySQL-Segmentierungsfunktion substring()

Es gibt vier wichtige MySQL-Zeichenfolgenabfangfu...

So erstellen Sie WeChat-Spiele mit CocosCreator

Inhaltsverzeichnis 1. Laden Sie die WeChat-Entwic...

JavaScript implementiert die Maussteuerung eines frei beweglichen Fensters

In diesem Artikel wird der spezifische JavaScript...

So konfigurieren Sie mehrere Tomcats mit Nginx-Lastausgleich unter Linux

Die Methoden zur Installation von Nginx und mehre...

Lösung für die Ineffektivität der flexiblen Layoutbreite in CSS3

In Projekten wird häufig das zweispaltige Layout ...

Detaillierte Analyse des Flex-Layouts in CSS3

Das Flexbox-Layoutmodul soll eine effizientere Mö...

Lösung für den Absturz der Grafikkarte auf Linux-Servern

Wenn die Auflösung der Anmeldeoberfläche besonder...