Les tables MyISAM sont très faciles à planter. Il y a des informations d'en-tête dans chaque table qui gardent une trace du nombre de descripteurs de fichiers ouverts d'une table MyISAM.
Si mysqld plante, toute table MyISAM qui avait des descripteurs de fichiers ouverts n'a jamais eu l'opportunité de décrémenter le nombre de descripteurs de fichiers à chaque fermeture de descripteur de fichier. Ainsi, si un nouveau descripteur de fichier ouvre une table MyISAM (fichier .MYD) et que mysqld découvre une discordance entre le nombre de descripteurs de fichiers qu'une table MyISAM croit être ouverts et le nombre de descripteurs de fichiers que la table MyISAM a réellement ouverts, la table est déclaré planté.
Il existe quatre (4) méthodes pour gérer cela :
MÉTHODE #1 :Configurer la réparation automatique de MyISAM
Voir mon message https://dba.stackexchange.com/a/15079/877 sur la façon de le configurer lors d'un redémarrage de MySQL (15 mars 2012)
MÉTHODE #2 :Utiliser InnoDB au lieu de MyISAM
InnoDB intègre une récupération sur incident dans l'initialisation du moteur de stockage. MyISAM ne le fait pas
MÉTHODE #3 :Utiliser Aria au lieu de MyISAM
Aria est le remplaçant de MariaDB pour MyISAM. Il propose des mécanismes de récupération en cas de panne pour des tables individuelles.
MÉTHODE #4 :Ne pas tuer -9 sur mysqld
Si mysqld plante, délibérément ou involontairement, les informations d'en-tête de toutes les tables MyISAM ouvertes les mettront dans un état de plantage. Évitez d'avoir à tuer manuellement mysqld.