Heim  >  Artikel  >  Datenbank  >  Detaillierte Erläuterung des Beispielcodes für die MySQL-Master-Slave-Synchronisierungskonfiguration

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

黄舟
黄舟Original
2017-03-16 14:00:581122Durchsuche

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

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


sudo systemctl restart mysql

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)

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)

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)

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


$ mysqldump -u root -p --all-databases --master-data > dbdump.sql

7 die Lesesperre der Master-Datenbank


mysql> UNLOCK TABLES;

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


scp dbdump.sql ubuntu@192.168.33.33:/home/ubuntu

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

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


sudo systemctl restart mysql

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

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)

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!

Stellungnahme:
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