5.6.2 Utilisation de myisamchk pour la maintenance des tables et leur recouvrement
5.6 Prévention des désastres et restauration
5 Administration du serveur
Manuel de Référence MySQL 4.1 : Version Française
->Syntaxe de l'utilitaire myisamchk . Options générales de myisamchk . Options de vérifications pour myisamchk . Options de réparation de myisamchk . Autres options de myisamchk . Utilisation de la mémoire par myisamchk . Utiliser myisamchk pour restaurer une table . Comment vérifier la cohérence d'une table . Comment réparer des tables . Optimisation de table
|
5.6.2.1 Syntaxe de l'utilitaire myisamchk
myisamchk
s'exécute avec une commande de la forme :
shell> myisamchk [options] tbl_name
|
Les
options
spécifient ce que vous voulez que
myisamchk
fasse.
Elles sont décrites dans ce chapitre. Vous pouvez aussi obtenir une liste d'options
en invoquant le programme avec
myisamchk --help
. Sans option,
myisamchk
va simplement vérifier les tables. Pour obtenir plus d'information ou pour demander
à
myisamchk
de prendre des mesures correctives, il faut ajouter l'une des options
listées ici.
tbl_name
est la table que vous voulez réparer ou vérifier. Si vous
exécutez
myisamchk
autre part que dans le dossier de données, vous devez spécifier
le chemin jusqu'au fichier, car sinon,
myisamchk
n'aura aucune idée d'où chercher
les données dans votre base. En fait,
myisamchk
ne se préoccupe pas du fait
que le fichier que vous utilisez est dans le dossier de base ou pas : vous pouvez copier
le fichier à réparer dans un autre dossier, et y faire les opérations d'entretien.
Vous pouvez spécifier plusieurs noms de tables à
myisamchk
si vous le voulez.
Vous pouvez aussi spécifier un nom sous la forme d'un fichier d'index
(avec l'option
.MYI
), qui vous permettra de spécifier toutes les tables
dans un dossier en utilisant le schéma
*.MYI
.
Par exemple, si vous êtes dans le dossier de données, vous pouvez spécifier toutes les tables
dans le dossier comme ceci :
Si vous n'êtes pas dans le dossier de données, et que vous souhaitez vérifier toutes
les tables, vous devez ajouter le chemin jusqu'au dossier :
shell> myisamchk /path/to/database_dir/*.MYI
|
Vous pouvez même vérifier toutes les tables de toutes les bases avec le chemin
suivant :
shell> myisamchk /path/to/datadir/*/*.MYI
|
La méthode recommandée pour vérifier rapidement toutes les tables est :
myisamchk --silent --fast /path/to/datadir/*/*.MYI isamchk --silent /path/to/datadir/*/*.ISM
|
Si vous voulez vérifier toutes les tables et réparer celles qui sont corrompues,
vous pouvez utiliser la ligne suivante :
myisamchk --silent --force --fast --update-state -O key_buffer=64M \ -O sort_buffer=64M -O read_buffer=1M -O write_buffer=1M \ /path/to/datadir/*/*.MYI isamchk --silent --force -O key_buffer=64M -O sort_buffer=64M \ -O read_buffer=1M -O write_buffer=1M /path/to/datadir/*/*.ISM
|
Ces commandes ci-dessus supposent que vous avez plus de 64 Mo de libres.
Pour plus d'informations sur l'allocation de mémoire avec
myisamchk
,
voyez la section Utilisation de la mémoire avec
myisamchk
.Notez que si vous obtenez une erreur comme celle-ci :
myisamchk: warning: 1 clients is using or hasn't closed the table properly
|
Cela signifie que vous essayez de vérifier une table qui a été modifiée par un
autre programme (comme le serveur
mysqld
) qui n'a pas encore refermé le fichier
de table, ou que le fichier n'a pas été correctement refermé.Si
mysqld
fonctionne, vous devez forcer la fermeture correcte des
fichiers de tables avec la commande
FLUSH TABLES
, et vous assurer que
personne n'utilise les tables durant vos opérations avec
myisamchk
. En MySQL version 3.23, la meilleure méthode pour éviter
ce problème est d'utiliser la commande
CHECK TABLE
au lieu
de
myisamchk
pour vérifier les tables.
|