Base de données · 3 min read · Dec 23, 2025

Comment configurer la réplication de base de données dans MySQL

Ceci est un “copier & coller” HowTo!

La manière la plus simple de suivre ce tutoriel est d’utiliser un client en ligne de commande/client SSH (comme

PuTTY

pour Windows) et de simplement copier et coller les commandes (sauf là où vous devez fournir vos propres informations comme les adresses IP, les noms d’hôte, les mots de passe,…). Cela aide à éviter les fautes de frappe.

Comment configurer la réplication de base de données dans MySQL

Version 1.1
Auteur : Falko Timme
Dernière modification : 01/14/2006

Ce tutoriel décrit comment configurer la réplication de base de données dans MySQL. La réplication MySQL vous permet d’avoir une copie exacte d’une base de données d’un serveur maître sur un autre serveur (esclave), et toutes les mises à jour de la base de données sur le serveur maître sont immédiatement répliquées à la base de données sur le serveur esclave afin que les deux bases de données soient synchronisées. Ce n’est pas une politique de sauvegarde car une commande DELETE émise par accident sera également exécutée sur l’esclave ; mais la réplication peut aider à protéger contre les pannes matérielles.

Dans ce tutoriel, je vais montrer comment répliquer la base de données exampledb depuis le maître avec l’adresse IP 192.168.0.100 vers un esclave. Les deux systèmes (maître et esclave) fonctionnent sous Debian Sarge ; cependant, la configuration devrait s’appliquer à presque toutes les distributions avec peu ou pas de modification.

Les deux systèmes ont MySQL installé, et la base de données exampledb avec des tables et des données existe déjà sur le maître, mais pas sur l’esclave.

Je veux d’abord dire que ce n’est pas la seule façon de configurer un tel système. Il existe de nombreuses façons d’atteindre cet objectif, mais c’est la méthode que je choisis. Je ne donne aucune garantie que cela fonctionnera pour vous !

1 Configurer le Maître

Tout d’abord, nous devons éditer /etc/mysql/my.cnf. Nous devons activer le réseau pour MySQL, et MySQL doit écouter sur toutes les adresses IP, donc nous commentons ces lignes (si elles existent) :

| #skip-networking #bind-address = 127.0.0.1 |

De plus, nous devons dire à MySQL pour quelle base de données il doit écrire des journaux (ces journaux sont utilisés par l’esclave pour voir ce qui a changé sur le maître), quel fichier journal il doit utiliser, et nous devons spécifier que ce serveur MySQL est le maître. Nous voulons répliquer la base de données exampledb, donc nous mettons les lignes suivantes dans /etc/mysql/my.cnf :

| log-bin = /var/log/mysql/mysql-bin.log binlog-do-db=exampledb server-id=1 |

Ensuite, nous redémarrons MySQL :

/etc/init.d/mysql restart

Ensuite, nous nous connectons à la base de données MySQL en tant que root et créons un utilisateur avec des privilèges de réplication :

mysql -u root -p
Entrez le mot de passe :

Maintenant, nous sommes dans le shell MySQL.

GRANT REPLICATION SLAVE ON . TO ‘slave_user’@’%’ IDENTIFIED BY ‘’; (Remplacez par un vrai mot de passe !)
FLUSH PRIVILEGES;

Ensuite (toujours dans le shell MySQL), faites ceci :

USE exampledb;
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;

La dernière commande affichera quelque chose comme ceci :

| +---------------+----------+--------------+------------------+ | File | Position | Binlog_do_db | Binlog_ignore_db | +---------------+----------+--------------+------------------+ | mysql-bin.006 | 183 | exampledb | | +---------------+----------+--------------+------------------+ 1 row in set (0.00 sec) |

Notez cette information, nous en aurons besoin plus tard sur l’esclave !

Ensuite, quittez le shell MySQL :

quit;


Il y a deux possibilités pour obtenir les tables et les données existantes de exampledb du maître vers l’esclave. La première consiste à faire un dump de la base de données, la seconde consiste à utiliser la commande LOAD DATA FROM MASTER; sur l’esclave. Cette dernière a l’inconvénient que la base de données sur le maître sera bloquée pendant cette opération, donc si vous avez une grande base de données sur un système de production à fort trafic, ce n’est pas ce que vous voulez, et je recommande de suivre la première méthode dans ce cas. Cependant, la dernière méthode est très rapide, donc je vais décrire les deux ici.

Si vous souhaitez suivre la première méthode, faites ceci :

mysqldump -u root -p –opt exampledb > exampledb.sql (Remplacez par le vrai mot de passe pour l’utilisateur MySQL root! Important : Il n’y a pas d’espace entre -p et !)

Cela créera un dump SQL de exampledb dans le fichier exampledb.sql. Transférez ce fichier sur votre serveur esclave !

Si vous souhaitez suivre la méthode LOAD DATA FROM MASTER;, alors il n’y a rien que vous devez faire pour l’instant.


Enfin, nous devons déverrouiller les tables dans exampledb :

mysql -u root -p
Entrez le mot de passe :
UNLOCK TABLES;
quit;

Maintenant, la configuration sur le maître est terminée. Passons à l’esclave…

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.