Diagnostic et réparation des bases MySQL
Le serveur Olfeo remonte une erreur de type : "Table './olfeo_stats5/nom_de_la_table' is marked as crashed and should be repaired"
Symptôme
Le serveur Olfeo remonte une erreur de type :
"Table './olfeo_stats5/nom_de_la_table' is marked as crashed and should be repaired"
Contexte
Olfeo utilise deux bases, olfeo_db5 (la configuration) et olfeo_stats5 (les données statistiques), qui se trouvent dans /var/lib/mysql/.
Il existe deux méthodes pour réparer une table :
- Se connecter à la base puis à exécuter la commande REPAIR TABLE nom_de_la_table
- Exécuter la commande myisamchk sur les tables MyISAM (extensions .MYI et .MYD).
Étapes
Taper les commandes suivantes dans le chroot si le serveur n'est pas une Olfeo box. Voici la commande à exécuter pour se connecter au chroot :
root@olfeo:~# chroot /opt/olfeo5/chroot/
Vérification des bases SQL
Il est primordial d'arrêter le service mysql avant d'utiliser la commande myisamchk :
/etc/init.d/mysql stop
Vérifier ensuite l’intégrité des deux bases en tapant les commandes suivantes :
myisamchk -c /var/lib/mysql/olfeo_stats5/*.MYI
L’option -c (check) déclenche la vérification.
Pour vérifier une table :
myisamchk -c /var/lib/mysql/olfeo_stats5/nom_de_la_table.MYI
Exemple avec la table timespent_agg :
Il faut lancer une réparation si la commande myisamchk -c retourne une ou plusieurs erreurs, telles que:
Réparation des tables SQL
Voici la commande à exécuter pour réparer une table SQL :
- Exemple : réparation des tables config et timespent_agg.
myisamchk -r /var/lib/mysql/olfeo_db5/config.MYI
myisamchk -r /var/lib/mysql/olfeo_stats5/timespent_agg.MYI - Exemple : réparation de toutes les tables.
myisamchk -r /var/lib/mysql/olfeo_db5/*.MYI
myisamchk -r /var/lib/mysql/olfeo_stats5/*.MYI
L’option de réparation -r (recover) étant la moins agressive, il se peut que les commandes de réparation suggèrent une réparation plus approfondie en utilisant l’option -o (safe-recover) :
Il est possible que le serveur demande de forcer la réparation avec l'option -f(--force) si le safe-recover ne suffit pas.
Une fois la réparation des tables effectuées, redémarrer le service MySQL :
Validation
Une fois la réparation et le redémarrage de la base effectués, vérifier l'état des services en ligne de commande en exécutant le script olfeo-status.sh :
/olfeo-status.sh
Vérifier ensuite l'accès à l'interface d'administration et le filtrage d'URL (analyse des statistiques en temps réel).