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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

4<strong>MySQL</strong> 5 – <strong>Audit</strong> <strong>et</strong> <strong>optimisation</strong>ATTENTION Précautions à prendre avec une table MyISAM corrompueLe maître mot est ici : sauvegardez ! En eff<strong>et</strong>, la documentation le stipule elle-même : il est possible queles procédures de réparation entraînent une perte de données :B http://dev.mysql.com/doc/refman/5.1/en/repair-table.htmlSi possible, veuillez donc sauvegarder les tables MyISAM concernées. En cas d’impossibilité de passer parun outil tel que mysqldump ou mysqlhotcopy, copiez directement les fichiers .MYD, .MYI, <strong>et</strong>.frm de la table concernée si le serveur est arrêté. Si ce dernier est en marche, la commande FLUSHTABLES WITH READ LOCK vous perm<strong>et</strong> d’effectuer l’opération mais cela peut être coûteux en termesde performance.Le plus important ici est de récupérer le fichier qui contient la base .MYD. En eff<strong>et</strong>, sivous connaissez la définition de la table concernée, il sera possible de recréer un .frmlui correspondant. Le fichier .MYI, quant à lui, peut également être reconstruit :REPAIR TABLE utilisé avec l’option USE_FRM repartira justement du .frm <strong>et</strong> les indexseront totalement créés à nouveau.Pensez également aux logs binaires. C<strong>et</strong>te remarque est aussi valable <strong>pour</strong> un moteurtel que InnoDB. Si la partition sur laquelle se trouvaient vos tables MyISAM estperdue, récupérez vos sauvegardes <strong>et</strong> les logs binaires, puis réinjectez le tout dans<strong>MySQL</strong> <strong>et</strong> vous en serez quitte <strong>pour</strong> une bonne frayeur.Attention toutefois à exclure de vos logs binaires l’éventuelle instruction SQL dévastatriceresponsable du carnage... À ce suj<strong>et</strong>, reportez-vous au chapitre 8, consacré à laréplication.Tentez de vous connecter à la baseAu-delà des outils système, pouvez-vous vous connecter à la base ? Pouvoir effectuer lacommande SHOW FULL PROCESSLIST est très utile dans ce type de situation. Lorsque labase est chargée, il est efficace de passer par une ligne de commandes <strong>pour</strong> écrire dansun fichier texte le contenu de c<strong>et</strong>te commande, exemple :shell> mysql -uuser -ppassword -e "SHOW FULL PROCESSLIST;" > /tmp/sfp.txtIl sera alors possible d’éditer facilement l’ensemble des requêtes SQL <strong>et</strong> de les conserver<strong>pour</strong> étude, le cas échéant, une fois la tempête passée.L’utilisation de la commande SHOW FULL PROCESSLIST n’est pas forcément chosefacile dans tous les cas : encore faut-il pouvoir se connecter !

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

Saved successfully!

Ooh no, something went wrong!