Spec-Zone .ru
спецификации, руководства, описания, API

7.6.1. Используя myisamchk для Восстановления Катастрофического отказа

Этот раздел описывает, как проверить на и соглашение с повреждением данных в базах данных MySQL. Если Ваши таблицы становятся поврежденными часто, следует попытаться найти причину почему. См. Раздел C.5.4.2, "Что к MySQL Do If Продолжает Отказывать".

Для объяснения как MyISAM таблицы могут стать поврежденными, видеть Раздел 14.3.4,"MyISAM Табличные проблемы".

Если Вы выполняете mysqld с внешней отключенной блокировкой (который является значением по умолчанию), невозможно достоверно использовать myisamchk, чтобы проверить таблицу, когда mysqld использует ту же самую таблицу. Если можно быть уверенны, что никто не получит доступ к таблицам через mysqld, в то время как Вы выполняете myisamchk, только необходимо выполнить mysqladmin таблицы сброса прежде, чем Вы начнете проверять таблицы. Если невозможно гарантировать это, следует остановить mysqld, в то время как Вы проверяете таблицы. Если Вы выполняете myisamchk, чтобы проверить таблицы, которые mysqld обновляет одновременно, можно получить предупреждение, что таблица повреждена, даже когда это не.

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

Если Вы используете myisamchk, чтобы восстановить или оптимизировать таблицы, следует всегда гарантировать, что mysqld сервер не использует таблицу (это также применяется, если внешняя блокировка отключается). Если Вы не останавливаете mysqld, следует, по крайней мере, сделать mysqladmin таблицы сброса прежде, чем Вы выполните myisamchk. Ваши таблицы могут стать поврежденными если сервер и myisamchk доступ таблицы одновременно.

Выполняя восстановление катастрофического отказа, важно понять что каждый MyISAM таблица tbl_name в базе данных соответствует этим трем файлам в каталоге базы данных, показанном в следующей таблице.

Файл Цель
tbl_name.frm Определение (формат) файл
tbl_name.MYD Файл данных
tbl_name.MYI Индексный файл

Каждый из этих трех типов файла подвергается повреждению различными способами, но проблемы происходят чаще всего в файлах данных и индексных файлах.

myisamchk работает, создавая копию .MYD строка файла данных строкой. Это заканчивает этап восстановления, удаляя старое .MYD файл и переименование нового файла к исходному имени файла. Если Вы используете --quick, myisamchk не создает временное .MYD файл, но вместо этого предполагает что .MYD файл корректен и генерирует только новый индексный файл, не затрагивая .MYD файл. Это безопасно, потому что myisamchk автоматически обнаруживает ли .MYD файл поврежден и прерывает восстановление, если это. Можно также определить --quick опция дважды к myisamchk. В этом случае myisamchk не прерывается на некоторых ошибках (таких как двойные ключевые ошибки), но вместо этого пытается разрешить их, изменяя .MYD файл. Обычно использование два --quick опции полезны, только если у Вас есть слишком небольшое свободное пространство на диске, чтобы выполнить нормальное восстановление. В этом случае следует, по крайней мере, сделать резервное копирование таблицы прежде, чем выполнить myisamchk.