Сбои в работе сервера MySQL как правило могут оставлять за собой хвост проблем, которые начинают выявляться постепенно, выливаясь в конечном итоге в проблемы с таблицами. Характерные признаки при наличии ошибок в таблицах базы данных могут быть абсолютно разные, наиболее популярные из них это:
— Процесс mysqld грузит процессор по полной;
— Значительное торможение при обращении к проблемной таблице, как правило, проявляется на работе сайта, в определенных местах (там, где происходит обращение к таблице);
— Сайт улетает в долгие думы из-за долгого ответа сервера MySQL;
— Торможение при обращении к любой таблице;
— Падение процесса mysqld;
— И пожалуй, самый яркий признак проблемы с таблицами базы данных, это возникновение такой ошибки при старте: ERROR 144 (HY000) at line 1: Table ‘./dataBase/table’ is marked as crashed and last (automatic?) repair failed;
Теперь приступим к решению проблемы. Гарантии 100% восстановления таблиц базы данных после сбоя быть не может, и это нужно понимать и быть готовым к такому раскладу. Однако в есть решения, которые в значительной степени могут исправить ситуацию, а быть может и оправдать возложенные на них надежды, в общем, дело случая.
Для проверки и восстановления таблиц MyISAM в MySQL есть утилита myisamchk, которую можно использовать так же для получения информации о таблицах базы данных и оптимизации. Если говорить об оптимизации, то для большинства случаев можно так же воспользоваться командой OPTIMIZE TABLES, есть нюансы, этот вариант не такой быстрый, и не такой надежный (в случае фатальных ошибок) как myisamchk. Исправление ошибок с помощью myisamchk достаточно безопасно, но сделать резервную копию все-таки стоит, т.к. в таблицу могут быть внесены значительные изменения.
Остановите сервер MySQL перед проверкой таблиц:
/etc/init.d/mysql stop
Для старта проверки и восстановления таблиц MySQL выполняем такую команду:
myisamchk -r -q /var/lib/mysql/dataBase/table
где dataBase – имя базы данных, table – файл данных таблицы
Обратите внимание, что таблицы типа MyISAM содержатся в файлах, которые имеют расширение *.MYI и *.MYD. После ввода команды, в окне консоли будут показаны результаты работы и исправления поврежденных индексов проверяемой таблицы. Пример:
- check record delete-chain - recovering (with sort) MyISAM-table 'dataBase/table' Data records: 0 - Fixing index 1 - Fixing index 2 - Fixing index 4 Data records: 12422111
После окончания проверки, и исправления ошибок, можно пробовать стартовать сервер MySQL.
/etc/init.d/mysql start