Résolution des incompatibilités de base de données dans la réplication MySQL
Dans une configuration de réplication MySQL, une incompatibilité entre le contenu de la base de données des serveurs maître et esclave peut se produire si l'esclave est déconnecté pendant une période prolongée puis reconnecté. Pour resynchroniser les bases de données dans de telles situations, les étapes suivantes peuvent être suivies :
Sur le serveur maître :
- Réinitialisez le maître en exécutant RESET MASTER ;.
- Verrouillez les tables pour les opérations de lecture à l'aide de FLUSH TABLES WITH READ LOCK;.
- Obtenez l'état de réplication actuel du maître à l'aide de SHOW MASTER STATUS;. Copiez les valeurs renvoyées pour Master_Log_File et Master_Log_Pos.
- Exportez l'intégralité de la base de données du maître vers un fichier de vidage en utilisant mysqldump -u root -p --all-databases > /path/mysqldump.sql.
Sur le serveur esclave :
- Arrêtez le processus de réplication de l'esclave à l'aide de STOP SLAVE ;.
- Importez le dump de la base de données du maître dans l'esclave en utilisant mysql -uroot -p < mysqldump.sql.
- Réinitialisez la configuration de réplication de l'esclave en exécutant RESET SLAVE;.
- Mettez à jour la configuration de réplication de l'esclave pour qu'elle corresponde à la position actuelle du maître en utilisant CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001 ', MASTER_LOG_POS=98;. Remplacez 'mysql-bin.000001' et '98' par les valeurs obtenues à partir de la commande SHOW MASTER STATUS exécutée sur le serveur maître.
- Relancez le processus de réplication de l'esclave en utilisant START SLAVE ;.
Vérification :
Pour confirmer la synchronisation réussie, exécutez SHOW SLAVE STATUS ; sur le serveur esclave. La sortie doit afficher Slave_IO_Running et Slave_SQL_Running comme Oui.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!