Maison > base de données > tutoriel mysql > le corps du texte

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

黄舟
Libérer: 2017-03-16 14:00:58
original
1121 Les gens l'ont consulté

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
Copier après la connexion

2. Redémarrez MySQL pour que le fichier de configuration prenne effet.


sudo systemctl restart mysql
Copier après la connexion
Copier après la connexion

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)
Copier après la connexion

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)
Copier après la connexion

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)
Copier après la connexion

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
Copier après la connexion

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


mysql> UNLOCK TABLES;
Copier après la connexion

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


scp dbdump.sql ubuntu@192.168.33.33:/home/ubuntu
Copier après la connexion

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
Copier après la connexion

2. Redémarrez MySQL pour que le fichier de configuration prenne effet


sudo systemctl restart mysql
Copier après la connexion
Copier après la connexion

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
Copier après la connexion

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)
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal