Все ленты — последние статьи

Восстановление разрушенных таблиц MySQL

Восстановление разрушенных таблиц MySQL

Бывает, что файлы данных MySQL разрушаются и требуют восстановления. Проще всего проверить целостность таблицы путем выполнения команды
CHECK TABLE messages;

Это выражение проверит наличие ошибок в таблице messages. Если выходные данные выглядят подобно приведенным ниже, значит, таблица в порядке, и действия по ее восстановлению выполнять не нужно.

 

В некоторых случаях в столбце Msg_text появляются сообщения об ошибках. В этом случае надо выполнить команду REPAIR TABLE, и MySQL предпримет попытку устранить проблему.

Утилита myisamchk, поставляемая с MySQL, позволяет проверять и восстанавливать таблицы MyISAM, обеспечивая при этом более высокую степень гибкости по сравнению с командами SQL. Если при запуске myisamchk не указаны опции, данная программа лишь проверяет таблицу на наличие ошибок. Ряд опций командной строки позволяют получить дополнительную информацию или указать утилите на то, что необходимо начать процесс восстановления данных.

Файлы с таблицами MyISAM, проверяемые утилитой myisamchk, находятся в каталоге, предназначенном для хранения данных, и имеют расширение .MYI. Если данные размещены в каталоге /var/lib/mysql, вы можете проверить все таблицы в базе forum с помощью команды:
myisamchk /var/lib/mysql/forum/*.MYI

Как правило, для быстрой проверки используется опция -fast. Она указывает на то, что проверке подлежат лишь те таблицы, которые были закрыты не корректно.

Опция –medium-check задает более детальную проверку таблиц, при которой могут быть найдены разнообразные ошибки. Самая тщательная проверка осуществляется при указании опции –extend-check, но она выполняется очень медленно. Данная опция используется только в том случае, если –medium-check не позволяет выявить проблему.

После того, как вы выяснили, что таблица разрушена, можно приступить к ее восстановлению. Для этой цели служит опция –recover. Перед тем как пытаться восстановить таблицу с помощью myisamchk, вам надо остановить mysqld. Если сервер выполнит запись в таблицу в то время, когда осуществляются действия по ее восстановлению, результаты могут быть непредсказуемыми.

В некоторых случаях программа myisamchk сообщает о том, что в данном режиме она не может устранить проблему, и вам необходимо задать опцию –safe-recover. При указании этой опции осуществляются дополнительные операции по восстановлению данных, но работа существенно замедляется.