mercredi 8 mai 2013

Vérifier et réparer une base de données MysQL

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


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.txt
Ici 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>.MYI
Et voilou!! là vous avez tout ce qu'il vous faut pour réparer vos bases de données.

Aucun commentaire:

Enregistrer un commentaire