Base de données · 3 min read · Sep 27, 2025
Réplication MySQL Maître-Maître
Tutoriel de Réplication MySQL Maître-Maître
Ce tutoriel décrit comment configurer la réplication maître-maître MySQL. Nous devons répliquer les serveurs MySQL pour atteindre une haute disponibilité (HA). Dans mon cas, j’ai besoin de deux maîtres qui sont synchronisés entre eux afin que si l’un d’eux tombe, l’autre puisse prendre le relais et aucune donnée ne soit perdue. De même, lorsque le premier redémarre, il sera toujours utilisé comme esclave pour le maître actif.
Voici un tutoriel de base étape par étape, qui couvrira la réplication MySQL maître et esclave et décrira également la réplication MySQL maître et maître.
Notions : nous appellerons le système 1 maître1 et esclave2 et le système 2 maître2 et esclave1.
Étape 1 :
Installez MySQL sur maître 1 et esclave 1. Configurez les services réseau sur les deux systèmes, comme
Maître 1/Esclave 2 ip : 192.168.16.4
Maître 2/Esclave 1 ip : 192.168.16.5
Étape 2 :
Sur Maître 1, apportez des modifications dans my.cnf :
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
old_passwords=1
log-bin
binlog-do-db=
binlog-ignore-db=mysql # saisissez la base de données qui doit être ignorée pour la réplication
binlog-ignore-db=test
server-id=1
[mysql.server]
user=mysql
basedir=/var/lib
[mysqld_safe]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
Étape 3 :
Sur maître 1, créez un compte esclave de réplication dans MySQL.
mysql> grant replication slave on . to ‘replication’@192.168.16.5 \
identified by ‘slave’;
et redémarrez le maître MySQL1.
Étape 4 :
Maintenant, éditez my.cnf sur Esclave1 ou Maître2 :
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
old_passwords=1
server-id=2
master-host = 192.168.16.4
master-user = replication
master-password = slave
master-port = 3306
[mysql.server]
user=mysql
basedir=/var/lib
[mysqld_safe]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
Étape 5 :
Redémarrez l’esclave MySQL 1 et à
mysql> start slave;
mysql> show slave status\G;
* 1. ligne *
Slave_IO_State: En attente que le maître envoie un événement
Master_Host: 192.168.16.4
Master_User: replica
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: MASTERMYSQL01-bin.000009
Read_Master_Log_Pos: 4
Relay_Log_File: MASTERMYSQL02-relay-bin.000015
Relay_Log_Pos: 3630
Relay_Master_Log_File: MASTERMYSQL01-bin.000009
Slave_IO_Running: Oui
Slave_SQL_Running: Oui
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 4
Relay_Log_Space: 3630
Until_Condition: Aucun
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: Non
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 1519187
1 ligne dans l’ensemble (0.00 sec)
Les lignes mises en surbrillance ci-dessus doivent indiquer les fichiers journaux associés et Slave_IO_Running et Slave_SQL_Running : doivent être à OUI.
Étape 6 :
Sur maître 1 :
mysql> show master status;
+————————+———-+————–+——————+
| Fichier | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+————————+———-+————–+——————+
|MysqlMYSQL01-bin.000008 | 410 | adam | |
+————————+———-+————–+——————+
1 ligne dans l’ensemble (0.00 sec)
Le scénario ci-dessus est pour maître-esclave, maintenant nous allons créer un scénario maître-esclave pour les mêmes systèmes et cela fonctionnera comme maître-maître.
Étape 7 :
Sur Maître2/Esclave 1, éditez my.cnf et ajoutez les entrées du maître :
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
old_passwords=1
server-id=2
master-host = 192.168.16.4
master-user = replication
master-password = slave
master-port = 3306
log-bin #information pour devenir maître ajoutée
binlog-do-db=adam
[mysql.server]
user=mysql
basedir=/var/lib
[mysqld_safe]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
Étape 8 :
** Créez un compte esclave de réplication sur maître2 pour maître1 :
mysql> grant replication slave on *.* to 'replication'@192.168.16.4 identified by 'slave2';Étape 9 :
** Éditez my.cnf sur maître1 pour les informations de son maître.
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
old_passwords=1
log-bin
binlog-do-db=adam
binlog-ignore-db=mysql
binlog-ignore-db=test
server-id=1
#information pour devenir esclave.
master-host = 192.168.16.5
master-user = replication
master-password = slave2
master-port = 3306
[mysql.server]user=mysqlbasedir=/var/lib
Étape 10 :
Redémarrez à la fois le maître MySQL1 et le maître2.
Sur le maître MySQL1 :
mysql> start slave;Sur le maître MySQL2 :
mysql > show master status;Sur le maître MySQL 1 :
mysql> show slave status\G;* 1. ligne *
Slave_IO_State: En attente que le maître envoie un événement
Master_Host: 192.168.16.5
Master_User: replica
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: Mysql1MYSQL02-bin.000008
Read_Master_Log_Pos: 410
Relay_Log_File: Mysql1MYSQL01-relay-bin.000008
Relay_Log_Pos: 445
Relay_Master_Log_File: Mysql1MYSQL02-bin.000008
Slave_IO_Running: Oui
Slave_SQL_Running: Oui
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 410
Relay_Log_Space: 445
Until_Condition: Aucun
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: Non
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 103799
1 ligne dans l’ensemble (0.00 sec)
ERREUR :
Aucune requête spécifiée
Vérifiez les lignes mises en surbrillance, assurez-vous qu’elles fonctionnent. Maintenant, vous pouvez créer des tables dans la base de données et vous verrez des changements dans l’esclave. Profitez-en !!
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.