4.4 Prévention des désastres et restauration
4 Administration du serveur
Manuel de Référence MySQL 4.1 : Version Française
. Sauvegardes de base de données . Syntaxe de BACKUP TABLE . Syntaxe de RESTORE TABLE ->Syntaxe de CHECK TABLE . Syntaxe de REPAIR TABLE . Utilisation de myisamchk pour la maintenance des tables et leur recouvrement . Mettre en place un régime d'entretien de MySQL . Obtenir des informations sur une table
|
4.4.4 Syntaxe de CHECK TABLE
CHECK TABLE tbl_name[,tbl_name...] [option [option...]] option = QUICK | FAST | MEDIUM | EXTENDED | CHANGED
|
CHECK TABLE
ne fonctionne qu'avec les tables
MyISAM
et
InnoDB
. Avec
les tables
MyISAM
, c'est l'équivalent de la commande
myisamchk -m table_name
sur la table.Par défaut, l'option
MEDIUM
est utilisée.
Cette commande vérifie l'intégrité des tables. Pour les tables
MyISAM
,
des statistiques importantes sont mises à jour. La commande retourne les
infomrations suivantes sur la table dans les colonnes suivantes :
Colonne
|
Valeur
|
Table |
Nom de la table.
|
Op |
Toujours ``check''.
|
Msg_type |
Un des statut
status
,
error
,
info
ou
warning
.
|
Msg_text |
Le message.
|
Notez que vous pouvez obtenir de nombreuses lignes d'informations pour chaque
table. La dernière ligne sera du type
Msg_type status
et doit être
normalement
OK
. Si vous n'obtenez pas de statut
OK
ou
Not checked
,
il vous faudra exécuter une réparation de la table. Utilisation de
myisamchk
pour maintenir les tables et recouvrir les données .
Not checked
signifie que la table a indiqué qu'il n'y a pas de vérification
à faire.
Les différents types de vérifications sont les suivants :
Type
|
Signification
|
QUICK
|
N'analyse pas les lignes pour vérifier les liens erronés.
|
FAST
|
Ne vérifie que les tables qui n'ont pas été correctement fermées.
|
CHANGED
|
Ne vérifie que les tables qui ont changées depuis la dernière vérification, ou bien qui n'ont pas été correctement fermées.
|
MEDIUM
|
Analyse les lignes pour s'assurer que les liens effacés sont corrects. Cette option calcule aussi la somme de contrôle des lignes, et la vérifie avec la somme de contrôle des clés.
|
EXTENDED
|
Fait une vérification complète des liens pour chaque ligne. Cela vérifie que la table est totalement cohérente, mais cela peut prendre beaucoup de temps.
|
Pour les tables à format de dynamique de type
MyISAM
, une vérifiation
de table sera toujours démarrée avec une option de niveau
MEDIUM
. Pour les
tables à format de ligne statique, nous évitons les niveaux de
QUICK
et
FAST
car les lignes sont rarement corrompues.
Vous pouvez combiner les options de vérification comme ceci :
CHECK TABLE test_table FAST QUICK;
|
L'exemple ci-dessus va simplement faire une vérification de la table,
pour s'assurer qu'elle a été correctement fermée.
Note
: dans certains cas,
CHECK TABLE
va modifier la table!
Cela arrive si la table a été marquée comme 'corrupted' et 'not closed properly' mais
CHECK TABLE
n'a trouvé aucun problème dans la table.
Dans ce cas,
CHECK TABLE
va marquer la table comme correcte.
Si une table est corrompue, il est probable que les problèmes sont dans les
fichiers d'index et non pas dans les données. Tous les types de vérifications
présentés ci-dessus vérifient les index soigneusement, et ils devraient
trouver la plupart des erreurs.
Si vous voulez simplement vérifier une table que vous supposez correcte,
vous pouvez n'utiliser aucune option, ou l'option
QUICK
. Cette dernière
peut aussi être utilisée si vous êtes pressé, et que vous pouvez prendre
le risque minime que
QUICK
ne trouve pas d'erreur dans votre fichier.
Dans la plupart des cas, MySQL doit trouver toutes les erreurs de données,
pour un usage normal. Si cela arrive, alors la table est marquée comme
'corrupted', auquel cas, la table ne pourra pas être utilisée tant qu'elle
n'a pas été réparée).
FAST
et
CHANGED
sont surtout destinées à être utilisées depuis
un script : par exemple, il peut être exécuté depuis une tâche
cron
, si
vous voulez vérifier la table de temps en temps. Dans la plupart des cas,
l'option
FAST
doit être préférée à
CHANGED
: le seul cas
ou vous pourriez préferez
CHANGED
est lorsque vous soupsonnez
avoir trouvé un bogue dans les tables
MyISAM
.
EXTENDED
ne doit être utilisé qu'après une vérification
normale, et que vous obtenez toujours des erreurs étranges lorsque
MySQL essaie de modifier une ligne ou trouve une ligne avec clé
(ce qui est très rare, si une vérification a réussie).
Certains problèmes rapportés par la commande
CHECK TABLE
, ne
peuvent être corrigés automatiquement :
-
Found row where the auto_increment column has the value 0
.Cela signifie que vous avez dans votre table une ligne qui contient
la valeur 0 alors qu'elle est de type
AUTO_INCREMENT
.
(Il est possible de créer une ligne où la colonne
AUTO_INCREMENT
vaut
0 en spécifiant explicitement la valeur 0 dans la colonne avec la commande
UPDATE
.
Ce n'est pas une erreur en soit, mais cela peut poser des problèmes si
vous décidez de sauver cette table dans un fichier texte, et de la restaurer,
ou encore d'appliquer la commande
ALTER TABLE
sur la table.
Dans ce cas, la colonne
AUTO_INCREMENT
va changer automatiquement
de valeur, en suivant les règles des colonnes de type
AUTO_INCREMENT
,
qui vont causer un problème de clé doublon.
Pour se débarasser de cette alerte, vous devez utiliser une commande
UPDATE
surla table, pour mettre une valeur différente de 0 dans
cette colonne.
|