Rétablir la réplication après désynchronisation

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;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 | 73       | test         | manual,mysql     |
+------------------+----------+--------------+------------------+

Noter les valeurs de File et Position

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;

Restaurer le dump

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

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.