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)
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)
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)
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)
2. Stellen Sie den Replikationstyp auf LOGICAL_CLOCK
< ein 🎜>
mysql> set global slave_parallel_type='logical_clock'; Query OK, 0 rows affected (0.00 sec) mysql> show variables like 'slave_parallel_type'; +---------------------+---------------+ | Variable_name | Value | +---------------------+---------------+ | slave_parallel_type | LOGICAL_CLOCK | +---------------------+---------------+ 1 row in set (0.01 sec)
mysql> set global slave_parallel_workers=4; Query OK, 0 rows affected (0.00 sec) mysql> show variables like 'slave_parallel_workers'; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | slave_parallel_workers | 4 | +------------------------+-------+ 1 row in set (0.00 sec)
mysql> start slave; Query OK, 0 rows affected (0.02 sec)
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)
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!