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:
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:
|
<<: Detaillierte Erklärung zur Verwendung von JavaScript WeakMap
>>: Detaillierte Erläuterung der CentOS-Konfiguration der offiziellen Nginx-Yum-Quelle
Kontrollkästchen sind auf Webseiten sehr verbreit...
Inhaltsverzeichnis Hintergrund Zweck Vor der Spal...
Eine Reihe von Projekten für die Ausbildung reagi...
1. Laden Sie das ElasticSearch 6.4.1-Installation...
In diesem Artikel wird der spezifische Code von J...
In diesem Artikel wird das MySQL 5.7.18 MSI-Insta...
Inhaltsverzeichnis 1. Mehrere .catch 2. Mehrere ....
MySQL erstellt bei der Installation automatisch e...
In diesem Artikel wird der spezifische JavaScript...
Im Internet finden sich zahlreiche Methoden, die ...
Ich erstelle schon lange Websites, habe aber immer...
Jellyka BeesAntike Handschrift [Ank]* Jellyka Cutt...
Aktivieren Sie Remote-Zugriffsrechte für MySQL My...
Inhaltsverzeichnis Frage verlängern Lösung des Pr...
In diesem Artikel wird der spezifische JS-Code zu...