Configurer la réplication

Sur le maître

Activer le log binaire et déclarer un ID

Dans le fichier /etc/mysql/my.cnf :

[mysqld]
log-bin=mysql-bin
server-id=1

Relancer le service mysql

systemctl restart mysql

Créer un utilisateur avec les droits de réplication

mysql> CREATE USER 'repl'@'%.example.com' IDENTIFIED BY 'password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.example.com';

Sur l'esclave

Déclarer un ID

Dans le fichier /etc/mysql/my.cnf :

[mysqld]
server-id=2

Sur le maître

Bloquer l'écriture sur les tables

mysql> FLUSH TABLES WITH READ LOCK;

Attention : Garder la session ouverte pour maintenir le verrou. En quittant la session, le verrou est libéré.

Relever les données d'index

mysql> SHOW MASTER STATUS;

Extraire un snapshot de la base de données

shell> mysqldump -u <username> -p --all-databases --master-data > dbdump.db

ou bien

shell> mysqldump -u <username> -p <dbname> --master-data > dbdump.db

Sur l'esclave

Arrêter la réplication

mysql> STOP SLAVE;

Importer le snapshot du maître sur l'esclave

Après avoir copier le dump du serveur maître sur le serveur esclave, il faut le restaurer :

shell> mysql -u <username> -p <dbname> < dbdump.db

Configurer la réplication

Vérifier les données d'index

mysql> SHOW SLAVE STATUS;

Les champs Master_Log_File et Read_Master_Log_Pos doivent avoir les valeurs relevées précédemment.

Démarrer la réplication

mysql> START SLAVE;

A partir de maintenant, la réplication est active. Il est éventuellement possible de tester en faisant une modification sur la base de donnée du maître et de s'assurer qu'elle est répliquée sur l'esclave.