Spec-Zone .ru
спецификации, руководства, описания, API
|
Этот раздел описывает, как проверить на и соглашение с повреждением данных в базах данных 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
в базе данных соответствует этим трем файлам в
каталоге базы данных, показанном в следующей таблице.
Файл | Цель |
---|---|
|
Определение (формат) файл |
|
Файл данных |
|
Индексный файл |
Каждый из этих трех типов файла подвергается повреждению различными способами, но проблемы происходят чаще всего в файлах данных и индексных файлах.
myisamchk работает, создавая копию .MYD
строка файла данных строкой. Это заканчивает этап восстановления, удаляя старое
.MYD
файл и переименование нового файла к исходному имени файла. Если Вы
используете --quick
,
myisamchk не создает временное .MYD
файл, но вместо этого предполагает что .MYD
файл корректен и генерирует только новый индексный файл, не затрагивая .MYD
файл.
Это безопасно, потому что myisamchk автоматически обнаруживает ли .MYD
файл поврежден и прерывает восстановление, если это. Можно также определить
--quick
опция дважды
к myisamchk. В этом случае myisamchk не прерывается на некоторых ошибках (таких как
двойные ключевые ошибки), но вместо этого пытается разрешить их, изменяя .MYD
файл. Обычно использование два --quick
опции полезны, только если у Вас есть слишком небольшое свободное пространство на диске, чтобы выполнить
нормальное восстановление. В этом случае следует, по крайней мере, сделать резервное копирование таблицы прежде,
чем выполнить myisamchk.