Heim > Datenbank > MySQL-Tutorial > Hauptteil

Detaillierte Erläuterung des Beispielcodes für die MySQL-Master-Slave-Synchronisierungskonfiguration

黄舟
Freigeben: 2017-03-16 14:00:58
Original
1121 Leute haben es durchsucht

In diesem Artikel wird hauptsächlich die MySQL-Master-Slave-Synchronisation anhand von Beispielen erläutert. Es ist von großem praktischem Wert beziehen Sie sich darauf.

1. Einführung

Ich habe bereits einen Artikel geschrieben: Das Prinzip der MySQL-Master-Slave-Synchronisation.

Ich glaube, dass Kinderschuhe, die diesen Artikel gelesen haben, es unbedingt ausprobieren möchten, oder?

Heute gibt es eine praktische MySQL-Master-Slave-Synchronisation!

2. Umgebungsbeschreibung

os:ubuntu16.04

mysql:5.7.17

Die folgenden praktischen Übungen basieren auf der oben genannten Umgebung. Natürlich sind andere Umgebungen ähnlich.

3. Betreten Sie den tatsächlichen Kampf

Tools

2 Maschinen:

Master-IP: 192.168. 33.22

Slave-IP: 192.168.33.33

Betrieb auf Master-Maschine

1. Änderung Konfigurationsdatei

Wir haben die Datei /etc/mysql/mysql.conf.d/mysqld.cnf gefunden.

Die Konfiguration ist wie folgt:


bind-address = 192.168.33.22 #your master ip
server-id = 1 #在master-slave架构中,每台机器节点都需要有唯一的server-id
log_bin = /var/log/mysql/mysql-bin.log #开启binlog
Nach dem Login kopieren

2. Starten Sie MySQL neu, damit die Konfigurationsdatei wirksam wird.


sudo systemctl restart mysql
Nach dem Login kopieren
Nach dem Login kopieren

3. Erstellen Sie einen MySQL-Benutzer für die Master-Slave-Synchronisierung.


$ mysql -u root -p
Password:

##创建slave1用户,并指定该用户只能在主机192.168.33.33上登录。
mysql> CREATE USER 'slave1'@'192.168.33.33' IDENTIFIED BY 'slavepass';
Query OK, 0 rows affected (0.00 sec)

##为slave1赋予REPLICATION SLAVE权限。
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave1'@'192.168.33.33';
Query OK, 0 rows affected (0.00 sec)
Nach dem Login kopieren

4. Fügen Sie eine Lesesperre zu MYSQL hinzu

Um die Daten der Master-Datenbank und der Slave-Datenbank konsistent zu halten, haben wir zunächst Fügen Sie MySQL eine Lesesperre hinzu.


mysql> FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (0.00 sec)
Nach dem Login kopieren

5. Notieren Sie den Speicherort des MASTER REPLICATION LOG

Diese Informationen werden später verwendet.


mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+-------------------+
| File    | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |  613 |    |     |     |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
Nach dem Login kopieren

6. Exportieren Sie die vorhandenen Dateninformationen in die Master-DB


$ mysqldump -u root -p --all-databases --master-data > dbdump.sql
Nach dem Login kopieren

7 die Lesesperre der Master-Datenbank


mysql> UNLOCK TABLES;
Nach dem Login kopieren

8. Kopierendie dbdump.sql-Datei in Schritt 6 auf den Slave


scp dbdump.sql ubuntu@192.168.33.33:/home/ubuntu
Nach dem Login kopieren

Vorgänge auf der Slave-Maschine

1. Ändern Sie die Konfigurationsdatei

Wir finden die Datei /etc/mysql/mysql.conf.d/mysqld.cnf .

Ändern Sie die Konfiguration wie folgt:


bind-address = 192.168.33.33 #your slave ip
server-id = 2 #master-slave结构中,唯一的server-id
log_bin = /var/log/mysql/mysql-bin.log #开启binlog
Nach dem Login kopieren

2. Starten Sie MySQL neu, damit die Konfigurationsdatei wirksam wird


sudo systemctl restart mysql
Nach dem Login kopieren
Nach dem Login kopieren

3. Import aus der Master-Datenbank. Exportierte dbdump.sql-Datei, um die Master-Slave-Daten konsistent zu machen


$ mysql -u root -p < /home/ubuntu/dbdump.sql
Nach dem Login kopieren

4. Lassen Sie den Slave eine Verbindung mit dem Master herstellen, um ihn zu synchronisieren


$ mysql -u root -p
Password:

mysql> STOP SLAVE;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> CHANGE MASTER TO
 -> MASTER_HOST=&#39;192.168.33.22&#39;,
 -> MASTER_USER=&#39;slave1&#39;,
 -> MASTER_PASSWORD=&#39;slavepass&#39;,
 -> MASTER_LOG_FILE=&#39;mysql-bin.000001&#39;,
 -> MASTER_LOG_POS=613;
Query OK, 0 rows affected, 2 warnings (0.01 sec)

mysql> START SLAVE;
Query OK, 0 rows affected (0.00 sec)
Nach dem Login kopieren

Die Werte von MASTER_LOG_FILE='mysql-bin.000001' und MASTER_LOG_POS=613 werden aus dem obigen SHOW MASTER STATUS erhalten.

Nach diesen Einstellungen kann die Master-Slave-Synchronisation durchgeführt werden~

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Beispielcodes für die MySQL-Master-Slave-Synchronisierungskonfiguration. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
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