MyISAM таблиците са много лесни за срив. Във всяка таблица има заглавна информация, която следи колко отворени файлове обработват таблицата MyISAM.
Ако mysqld се срине, всяка таблица MyISAM, която е имала отворени файлови манипулатори към нея, никога не е имала възможност да намали броя на манипулаторите на файла при затваряне на всеки манипулатор на файл. По този начин, ако нов манипулатор на файла отвори таблица MyISAM (.MYD файл) и mysqld открие несъответствие между броя на файловите манипулатори, които MyISAM таблицата смята за отворени, и броя на файловите манипулатори, които таблицата MyISAM всъщност има отворена, таблицата е обявен за сринат.
Има четири(4) метода за справяне с това:
МЕТОД №1:Настройте автоматично възстановяване на MyISAM
Вижте моята публикация https://dba.stackexchange.com/a/15079/877 за това как да настроите това при рестарт на MySQL (15 март 2012 г.)
МЕТОД №2:Използвайте InnoDB вместо MyISAM
InnoDB има възстановяване при срив, вградено в инициализацията на Storage Engine. MyISAM не го прави
МЕТОД №3:Използвайте Aria вместо MyISAM
Aria е заместващата функция на MariaDB за MyISAM. Той включва механизми за възстановяване при срив за отделни таблици.
МЕТОД №4:Не убивайте -9 на mysqld
Ако mysqld се срине, умишлено или неволно, информацията за заглавката за всички отворени MyISAM таблици ще ги доведе до сривано състояние. Избягвайте да убивате ръчно mysqld.