17.07.2015 Views

Audit et optimisation MySQL 5 Bonnes pratiques pour l ... - Éditions VM

Audit et optimisation MySQL 5 Bonnes pratiques pour l ... - Éditions VM

Audit et optimisation MySQL 5 Bonnes pratiques pour l ... - Éditions VM

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

12<strong>MySQL</strong> 5 – <strong>Audit</strong> <strong>et</strong> <strong>optimisation</strong>Les problèmes de réplicationLe chapitre 8, consacré à la réplication, détaille les mécanismes, la configuration <strong>et</strong>les commandes nécessaires <strong>pour</strong> gérer la réplication <strong>MySQL</strong>. Il est important queson fonctionnement soit bien compris.En conséquence, nous n’expliquerons pas ici à nouveau les arcanes de la réplication.En revanche, le conseil à r<strong>et</strong>enir dans le cadre d’une situation d’urgence concernantune réplication est de ne pas agir à la légère. En eff<strong>et</strong>, en cas d’erreur de votre part,par exemple lors du redémarrage d’une réplication arrêtée, vous pouvez rendrel’esclave inutilisable avec <strong>pour</strong> seule issue de recharger complètement les donnéesqu’il contient. L’importance d’un tel incident (esclave hors service) est inversementproportionnelle au nombre d’esclaves possédés. C’est une situation dramatique sivous n’en possédez qu’un seul (faire pointer les applications vers le maître si celui-citient la charge...) mais moins grave si vous en possédez un grand nombre. L’incident<strong>pour</strong>rait passer inaperçu si votre système est correctement dimensionné avec unebonne répartition de charge.Les messages d’erreurs liés à la réplication sont assez variés. Ne pas comprendre l’originedu problème vous expose à de graves difficultés. Il serait inconsidéré d’appliquerà la légère le fameux SET GLOBAL sql_slave_skip_counter=1 indiquant à l’esclavede passer outre le problème qui a généré l’erreur <strong>et</strong> de sauter à l’instruction suivantedu relay-log. Le risque de désynchronisation entre l’esclave <strong>et</strong> le maître serait alorsimportant <strong>et</strong> d’autres erreurs analogues ne manqueraient pas de se produire à plus oumoins courte échéance.Pire encore, ignorer systématiquement un certain type d’erreurs (slave-skip-errors)sans maîtriser réellement les conséquences de ce réglage, est une grosse erreur.Selon le type de moteur de stockage que vous utilisez (MyISAM ou InnoDB), <strong>et</strong> l<strong>et</strong>ype de réplication (row based ou statement based) une requête stoppée manuellementsur le maître peut avoir des conséquences différentes sur l’esclave. AvecMyISAM <strong>et</strong> en mode statement based, par exemple, une requête interrompue sur lemaître provoque :Query partially compl<strong>et</strong>ed on the master (error on master: 1053) and wasaborted. There is a chance that your master is inconsistent at thispoint. If you are sure that your master is ok, run this query manuallyon the slave and then restart the slave with SET GLOBALSQL_SLAVE_SKIP_COUNTER=1; START SLAVE;L’esclave détecte que la requête a été interrompue sur le maître (c<strong>et</strong>te information circuledans le log binaire) <strong>et</strong> décide de stopper lui aussi la réplication. À vous de vérifierque la ou les tables concernées sur le maître <strong>et</strong> l’esclave sont bien symétriques : il n’y a

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!