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
Vorwort Die Entwickler des Unternehmens verwendet...
In diesem Artikelbeispiel wird der spezifische Co...
In Schreibstilen können wir diese Situation oft s...
Inhaltsverzeichnis Kurze Einleitung Intervall fes...
Während Ubuntu heute das beliebteste Linux-Betrie...
Es gibt vier wichtige MySQL-Zeichenfolgenabfangfu...
Inhaltsverzeichnis 1. Laden Sie die WeChat-Entwic...
In diesem Artikel wird der spezifische JavaScript...
Die Methoden zur Installation von Nginx und mehre...
In Projekten wird häufig das zweispaltige Layout ...
Vorwort Um die Hochverfügbarkeit des Systems zu g...
Das Flexbox-Layoutmodul soll eine effizientere Mö...
brauchen Vor Kurzem mussten wir die Node-Onlinedi...
Vorwort In den Anfangsphasen einiger Projekte wer...
Wenn die Auflösung der Anmeldeoberfläche besonder...