:: DEVELOPER ZONE
Si vous utilisez mysqld avec l'option --skip-external-locking (qui
est la configuration par défaut pour certains systèmes, comme Linux), vous ne
pouvez pas utiliser myisamchk pour vérifier une table, lorsque
mysqld utilise aussi la table. Si vous pouvez être sûr que
personne n'utilise cette table via mysqld lorsque vous utilisez
myisamchk, vous n'aurez qu'à utiliser la commande
mysqladmin flush-tables avant de commencer à vérifier les tables.
Si vous ne pouvez pas garantir cette condition, vous devez alors éteindre
le serveur mysqld pour vérifier les tables. Si vous exécutez
myisamchk alors que mysqld modifie la table, vous pourriez
obtenir un diagnostic de corruption de la table, alors que ce n'est pas
le cas.
Si vous n'utilisez pas l'option --skip-external-locking, vous pouvez
vous servir de myisamchk pour vérifier les tables à tout moment.
Pendant que vous le faites, les autres clients qui tentent de modifier la table
devront attendre que myisamchk ait fini.
Si vous utilisez myisamchk pour réparer ou optimiser les tables, vous
devez toujours vous assurer que mysqld n'utilise pas cette
table (ce qui s'applique aussi si vous utilisez --skip-external-locking).
Si vous n'éteignez pas le serveur mysqld, vous devez au moins utiliser
mysqladmin flush-tables avant de lancer myisamchk.
Vos tables peuvent être corrompues si le serveur et myisamchk
travaillent dans une même table simultanément.
Ce chapitre décrit comment vérifier et gérer les corruptions de données dans les bases MySQL. Si vos tables sont fréquemment corrompues, vous devriez commencer par en rechercher la raison ! See Section A.4.2, « Que faire si MySQL plante constamment ? ».
La section sur les tables MyISAM contient différentes raisons pour lesquelles
une table peut être corrompue. See Section 15.1.4, « Problèmes avec les tables MyISAM ».
Lorsque vous effectuez une restauration de table, il est important que
chaque table tbl_name dans une base corresponde aux trois fichiers dans le dossier
de base, du dossier de données :
| Fichier | Utilisation |
tbl_name.frm |
Définition de la table |
tbl_name.MYD |
Fichier de données |
tbl_name.MYI |
Fichier d'index |
Chacun de ces trois fichiers est sujet à des corruptions diverses, mais les problèmes surviennent généralement dans les fichiers de données ou d'index.
myisamchk fonctionne en créant une copie du fichier .MYD (les
données), ligne par ligne. Il termine sa réparation en supprimant l'ancien fichier
.MYD et en renommant le nouveau à la place de l'ancien. Si vous
utilisez l'option --quick, myisamchk ne crée pas de fichier temporaire .MYD
mais suppose plutôt que le fichier .MYD est correct et il génère simplement
un nouveau fichier d'index sans toucher au fichier .MYD. C'est une
méthode sécuritaire, car myisamchk va automatiquement détecter
si le fichier .MYD est corrompu, et annulera alors la réparation si c'est le cas.
Vous pouvez aussi ajouter deux options --quick à myisamchk. Dans ce cas,
myisamchk ne s'interrompt pas sur certaines erreurs (comme des
clés doublons), et essaie de résoudre ce problème en modifiant le fichier
.MYD. Normalement, l'utilisation de deux options --quick n'est utile
que si vous n'avez pas trop d'espace disque pour réaliser la réparation. Dans ce cas,
vous devez au moins faire une copie de sauvegarde avant d'utiliser
myisamchk.
© 1995-2005 MySQL AB. All rights reserved.
