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='192.168.33.22', -> MASTER_USER='slave1', -> MASTER_PASSWORD='slavepass', -> MASTER_LOG_FILE='mysql-bin.000001', -> 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!