Résoudre les crash mysql

J’ai récemment eu quelques souci sur une base mysql sous Linux, le disque étant plein, il y a eu quelques tables qui ont crashé.

Le résultat est un site web qui ne marche pas.

Premier réflexe : essayer de redémarrer Mysql

Seconde chose à faire quelquesoit le résultat de la première étape : regarder les logs mysql ! En génral c’est sauvé dans /var/log/

 

J’ai eu donc deux tables qui ont crashé avec le message suivant dans les logs :

Mysql : is marked as crashed and should be repaired

170127  8:58:26 [ERROR] /usr/libexec/mysqld: Table ‘./mydatabase/user_sessions’ is marked as crashed and should be repaired

Pourquoi? plus loin en arrière, j’ai le message très parlant :

170126 21:10:08 [Warning] Retry in 60 secs. Message reprinted in 600 secs
170126 21:20:08 [Warning] Disk is full writing ‘./mydatabase/archives_factures.MYD’ (Errcode: 28). Waiting for someone to free space… (Expect up to 60 secs delay for server to continue after freeing disk space)

 

C’est bien un problème d’espace disque qui est à l’origine de la panne !

Pour s’en convaincre, on peut utiliser les comande Linux df et du pour diagnostiquer l’espace restant.

 

Réparer les tables Mysql crashées

Vous pouvez le faire en ligne de commande ou sous phpmyadmin, mais je vous conseille de le faire en ligne de commande dans le shell, parce que c’est plus performant et plus sûr.

Une fois connecté sous Mysql, la commande à faire est :

$ repair table table_defectueuse

Voilà c’est à peu près ce qu’i faut faire.

Mais il arrive que certaines tables soient plus endommagée que çà, et que la commande ci-dessus ne suffisent pas, on a le message :

Can’t find file: ‘table_defectueuse’ (errno: 2)

Pour connaitre la signification de l’erreur, faire la commande shell suivante :

$ perror 2

$ OS error code   2:  No such file or directory

 

 

 

 

Retour en haut