Heim > Datenbank > MySQL-Tutorial > Hauptteil

Detaillierte Einführung in die Methode zum Konfigurieren der Multithread-Master-Slave-Replikation auf Mysql5.7-Slave-Knoten

黄舟
Freigeben: 2017-03-16 13:49:08
Original
1050 Leute haben es durchsucht

Dieser Artikel stellt hauptsächlich die relevanten Informationen zur Multithread-Master-Slave-Replikation von MySQL vor. Die Einführung im Artikel ist sehr detailliert und hat einen gewissen Referenzwert für alle Freunde, die sie benötigen Kommen Sie vorbei und schauen Sie vorbei.

Vorwort

Mysql verwendet Multithreading für die Replikation, das ab MySQL 5.6 unterstützt wird, aber es gibt Fehler in der Version 5.6. Obwohl es mehrere Threads unterstützt, kann jede Datenbank nur einen Thread haben. Das heißt, wenn wir nur eine Datenbank haben, wird während der Master-Slave-Replikation nur ein Thread arbeiten. 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 weiterhin um eine einzelne Datenbank und einen einzelnen Thread. Wenn Sie mehrere Threads verwenden müssen, müssen Sie diese auf dem Slave-Knoten konfigurieren.

Mysql 5.7 fügt eine Art Master-Slave-Replikation hinzu. Es gibt zwei Arten:

  • Datenbankbasierte parallele Replikation, Jede Datenbank entspricht einem Replikationsthread

  • LOGICAL_CLOCK Parallele Replikationsmethode basierend auf Gruppenübermittlung, es können mehrere Threads unter derselben Datenbank vorhanden sein

Konfigurieren Sie die folgenden Schritte auf dem Slave-Knoten.

Sehen Sie sich die aktuelle Konfiguration an

Bevor Sie mit der Konfiguration beginnen, werfen wir einen Blick auf die Anzahl der Master-Slave-Replikationsprozesse unten die aktuelle Konfiguration.


mysql> show processlist;
+----+-------------+-----------+------+---------+-------+--------------------------------------------------------+------------------+
| Id | User  | Host  | db | Command | Time | State             | Info    |
+----+-------------+-----------+------+---------+-------+--------------------------------------------------------+------------------+
| 1 | system user |   | NULL | Connect | 91749 | Waiting for master to send event      | NULL    |
| 2 | system user |   | NULL | Connect | 208 | Slave has read all relay log; waiting for more updates | NULL    |
| 37 | root  | localhost | NULL | Query |  0 | starting            | show processlist |
+----+-------------+-----------+------+---------+-------+--------------------------------------------------------+------------------+
3 rows in set (0.00 sec)
Nach dem Login kopieren

Aus dem Obigen ist ersichtlich, dass nur ein Hauptprozess auf die Synchronisierung wartet.

Überprüfen Sie unten den Replikationstyp und die Parallelnummernkonfiguration


mysql> show variables like 'slave_parallel_type';
+---------------------+----------+
| Variable_name  | Value |
+---------------------+----------+
| slave_parallel_type | DATABASE |
+---------------------+----------+
1 row in set (0.00 sec)
Nach dem Login kopieren

Der aktuelle Replikationstyp ist DATABASE, der sich unter befindet einheitliche Datenbank Nur ein Thread übernimmt das Kopieren, paralleles Kopieren ist nicht möglich.


mysql> show variables like 'slave_parallel_workers';
+------------------------+-------+
| Variable_name   | Value |
+------------------------+-------+
| slave_parallel_workers | 0  |
+------------------------+-------+
1 row in set (0.01 sec)
Nach dem Login kopieren

Die aktuelle Anzahl parallel arbeitender Prozesse beträgt 0

Multithreading konfigurieren

1. Stoppen Sie die Replikation vom Slave-Knoten


mysql> stop slave;
Query OK, 0 rows affected (0.01 sec)
Nach dem Login kopieren

2. Stellen Sie den Replikationstyp auf LOGICAL_CLOCK


< ein 🎜>

mysql> set global slave_parallel_type=&#39;logical_clock&#39;;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like &#39;slave_parallel_type&#39;;
+---------------------+---------------+
| Variable_name  | Value   |
+---------------------+---------------+
| slave_parallel_type | LOGICAL_CLOCK |
+---------------------+---------------+
1 row in set (0.01 sec)
Nach dem Login kopieren
3. Stellen Sie die Parallelzahl auf 4 ein


mysql> set global slave_parallel_workers=4;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like &#39;slave_parallel_workers&#39;;
+------------------------+-------+
| Variable_name   | Value |
+------------------------+-------+
| slave_parallel_workers | 4  |
+------------------------+-------+
1 row in set (0.00 sec)
Nach dem Login kopieren
4. Starten Sie die Slave-Knotenreplikation


mysql> start slave;
Query OK, 0 rows affected (0.02 sec)
Nach dem Login kopieren
5. Überprüfen Sie die Anzahl der aktuell arbeitenden Threads


mysql> show processlist;
+----+-------------+-----------+------+---------+------+--------------------------------------------------------+------------------+
| Id | User  | Host  | db | Command | Time | State             | Info    |
+----+-------------+-----------+------+---------+------+--------------------------------------------------------+------------------+
| 37 | root  | localhost | NULL | Query | 0 | starting            | show processlist |
| 38 | system user |   | NULL | Connect | 8 | Waiting for master to send event      | NULL    |
| 39 | system user |   | NULL | Connect | 7 | Slave has read all relay log; waiting for more updates | NULL    |
| 40 | system user |   | NULL | Connect | 8 | Waiting for an event from Coordinator     | NULL    |
| 41 | system user |   | NULL | Connect | 8 | Waiting for an event from Coordinator     | NULL    |
| 42 | system user |   | NULL | Connect | 8 | Waiting for an event from Coordinator     | NULL    |
| 43 | system user |   | NULL | Connect | 8 | Waiting for an event from Coordinator     | NULL    |
+----+-------------+-----------+------+---------+------+--------------------------------------------------------+------------------+
7 rows in set (0.00 sec)
Nach dem Login kopieren
Abschließend: Warum ist eine Multi-Thread-Replikation erforderlich? Da es zu einer Verzögerung bei der Synchronisierung zwischen Master und Slave kommt, besteht der Zweck von Multithreading darin, diese Verzögerungszeit zu minimieren. Obwohl die Optimierung von Master-Slave eine Systemfunktion ist und unterschiedliche Szenarien unterschiedliche Lösungen erfordern, kann Multithreading die Latenz zumindest grundsätzlich reduzieren. Abhängig von der tatsächlichen Situation der Datenbank müssen Sie außerdem wiederholt testen, ob die Verzögerung wirklich verringert werden kann und wie viele Threads konfiguriert werden müssen, um die für Sie geeigneten Daten zu erhalten.

Zusammenfassung

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die Methode zum Konfigurieren der Multithread-Master-Slave-Replikation auf Mysql5.7-Slave-Knoten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage