Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment resynchroniser la base de données Mysql si le maître et l'esclave ont une base de données différente en cas de réplication Mysql ?

Voici la procédure complète étape par étape pour resynchroniser une réplication maître-esclave à partir de zéro :

Au maître :

RESET MASTER;
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;

Et copier les valeurs du résultat de la dernière commande quelque part.

Sans fermer la connexion au client (car cela libérerait le verrou de lecture), lancez la commande pour obtenir un vidage du maître :

mysqldump -u root -p --all-databases > /a/path/mysqldump.sql

Vous pouvez maintenant libérer le verrou, même si le vidage n'est pas encore terminé. Pour ce faire, exécutez la commande suivante dans le client MySQL :

UNLOCK TABLES;

Copiez maintenant le fichier de vidage sur l'esclave à l'aide de scp ou de votre outil préféré.

Chez l'esclave :

Ouvrez une connexion à mysql et tapez :

STOP SLAVE;

Chargez le vidage des données du maître avec cette commande de console :

mysql -uroot -p < mysqldump.sql

Synchroniser les journaux esclave et maître :

RESET SLAVE;
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=98;

Où les valeurs des champs ci-dessus sont celles que vous avez copiées auparavant.

Enfin, tapez :

START SLAVE;

Pour vérifier que tout fonctionne à nouveau, après avoir tapé :

SHOW SLAVE STATUS;

vous devriez voir :

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

C'est ça!