Si vos serveurs esclaves MySQL affichent un status Seconds_Behind_Master à Null, il est fort probable qu'une requête soit mal passée.
Ceci peut être corrigé très simplement, en fonction du type de l'erreur.
Commençons par déterminer d'où vient l'erreur :
Lancez la commande suivante sur l'esclave MySQL qui pose problème :
SHOW SLAVE STATUS
et analysez le champ Ladt_SQL_Error.
2 cas de figures se présentent :
- Soit la requête est une requête critique qui pourrait désynchroniser la réplication (un INSERT, DELETE, ALTER,...) ou une requete UPDATE qui fait que les données ne seront plus en phase entre le maître et l'esclave et dans ce cas, il est préférable de resynchroniser complètement les 2 serveurs.
- Soit la requète n'est pas critique (c'est le cas chez nous la plupart du temps), par exemple un UPDATE sans trop de conséquence.
Dans ce deuxième cas, voila la marche à suivre :
Lancez les commandes suivantes dans le client MySQL:
STOP SLAVE;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = n; (où n est le nombre de requetes à sauter (1 en général))
START SLAVE;
Vérifiez avec SHOW SLAVE STATUS;
Il faut parfois lancer plusieurs fois la commandeSET GLOBAL SQL_SLAVE_SKIP_COUNTER = n; pour que ça marche (en mettant 2 si 1 ne fonctionne pas).
Votre esclave devrait avoir retrouvé un statut de réplication correct.
Commentaires