Maison  >  Article  >  base de données  >  Explication détaillée de l'exemple de code de configuration de synchronisation maître-esclave Mysql

Explication détaillée de l'exemple de code de configuration de synchronisation maître-esclave Mysql

黄舟
黄舟original
2017-03-16 14:00:581122parcourir

Cet article présente principalement l'explication détaillée de la pratique de synchronisation maître-esclave Mysql. Il analyse le principe et la mise en œuvre de la synchronisation maître-esclave Mysql avec des exemples. Il est d'une grande valeur pratique. référez-vous à lui.

1. Introduction

J'ai déjà écrit un article : Le principe de la synchronisation maître-esclave Mysql.

Je crois que les chaussures pour enfants qui ont lu cet article ont hâte de l'essayer, n'est-ce pas ?

Aujourd'hui, nous aurons une synchronisation maître-esclave mysql pratique !

2. Description de l'environnement

os:ubuntu16.04

mysql:5.7.17

Les exercices pratiques suivants sont basés sur l'environnement ci-dessus. Bien entendu, les autres environnements sont sensiblement les mêmes.

3. Entrez dans le combat réel

Outils

2 machines :

IP principale : 192.168. 33.22

IP esclave : 192.168.33.33

Fonctionnement sur machine maître

Changement Fichier de configuration

Nous avons trouvé le fichier /etc/mysql/mysql.conf.d/mysqld.cnf.

La configuration est la suivante :


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. Redémarrez MySQL pour que le fichier de configuration prenne effet.


sudo systemctl restart mysql

3. Créez un utilisateur MySQL pour la synchronisation maître-esclave.


$ 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. Ajouter un verrou en lecture à MYSQL

Afin de maintenir la cohérence des données de la base de données maître et de la base de données esclave, nous d'abord ajoutez un verrou de lecture à MySQL. Faites-le en lecture seule.


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

5. Enregistrez l'emplacement du MASTER REPLICATION LOG

Cette information sera utilisée plus tard.


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. Exportez les informations de données existantes dans la base de données principale


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

7. le verrou en lecture de la base de données maître


mysql> UNLOCK TABLES;

8. copiez le fichier dbdump.sql à l'étape 6 sur l'esclave


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

Opérations sur la machine esclave

1. Changer le fichier de configuration

On retrouve le fichier /etc/mysql/mysql.conf.d/mysqld.cnf. .

Modifiez la configuration comme suit :


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. Redémarrez MySQL pour que le fichier de configuration prenne effet


sudo systemctl restart mysql

3. Importer depuis la base de données principale. Fichier dbdump.sql exporté pour rendre les données maître-esclave cohérentes


$ mysql -u root -p < /home/ubuntu/dbdump.sql

4. Faire en sorte que l'esclave établisse une connexion avec le maître pour synchroniser


$ 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)

Les valeurs de MASTER_LOG_FILE='mysql-bin.000001' et MASTER_LOG_POS=613 sont obtenues à partir du SHOW MASTER STATUS ci-dessus.

Après une configuration ainsi, la synchronisation maître-esclave peut être effectuée~

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn