Comme tout sysAdmin gérant des serveurs Web sous Linux, il vous est surement déjà arrivé d'avoir besoin de contrôler l'état des tables d'une base de données.
Dans mon cas j'ai deux outils de prédilection pour ce faire: mysqlchek et myisamcheck
mysqlcheck permet de vérifier, réparer, analyser et optimiser une base de données.
Pour ceux qui ont déjas eu cette erreur: Table XXX Is marked as crashed and last (automatic) repair failed.
Myisamchk est la commande qu'il vous faut. En fait cette erreur se produit lorsque que le moteur de base de donnée a été arrêter pendant qu'une opération de Lecture/Ecriture est en cours sur la table. le fichier correspondant à cette table (<table>.MYI) est donc corrompu et il faut le réparer.
- Il faut arrêter mysql avant de commencer l'opération.
Dans mon cas j'ai deux outils de prédilection pour ce faire: mysqlchek et myisamcheck
1- Mysqlcheck
mysqlcheck permet de vérifier, réparer, analyser et optimiser une base de données.
a- Check sur une table
# mysqlcheck -c <tablename> <databasename> -u root -p Enter password:
b- Check d'une base de données entière
# mysqlcheck -c <tablename> <databasename> -u root -p Enter password:
c- Check de toutes les bases de données
# mysqlcheck -u root -p --all-databases Enter password:
d- Réparer une table
# mysqlcheck -c <tablename> <databasename> -u root -p Enter password:
e- Contrôler et réparer une base de données en une seule commande
# mysqlcheck -u root -p --auto-repair -c --all-databases
2- Myisamchk
Pour ceux qui ont déjas eu cette erreur: Table XXX Is marked as crashed and last (automatic) repair failed.
Myisamchk est la commande qu'il vous faut. En fait cette erreur se produit lorsque que le moteur de base de donnée a été arrêter pendant qu'une opération de Lecture/Ecriture est en cours sur la table. le fichier correspondant à cette table (<table>.MYI) est donc corrompu et il faut le réparer.
Attention:
- pour que la réparation avec myisamchk fonctionne, la table doit absolument être de type MyIsam qui est le type par défaut des table mysql.- Il faut arrêter mysql avant de commencer l'opération.
a- Identifier les tables corrompues
# myisamchk /var/lib/mysql/<databasename>/*.MYI >> /tmp/log.txtIci les messages générés par la commande seront enregistrés dans le fichier /tmp/log.txt (très utile pour identifier toutes les tables à réparer).
b- réparer une table corrompue
# myisamchk -r /var/lib/mysql/<databasename>/<tablename>.MYIEt voilou!! là vous avez tout ce qu'il vous faut pour réparer vos bases de données.
Aucun commentaire:
Enregistrer un commentaire