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

2.11.4. Восстановление или Восстановление Таблиц или Индексируют

Этот раздел описывает, как восстановить таблицу, после изменений к MySQL такой как, как обрабатываются типы данных или наборы символов. Например, ошибка в сопоставлении, возможно, была исправлена, требуя, чтобы таблица восстановила, чтобы обновить индексирование для символьных столбцов, которые используют сопоставление. (Для примеров см. Раздел 2.11.3, "Проверяя Или Таблицы, или Индексирует, Должен быть Восстановлен".) Вы, возможно, также должны были бы восстановить или обновить таблицу, столь же обозначенную табличной работой проверки, такой как выполняемое CHECK TABLE, mysqlcheck, или mysql_upgrade.

Методы для того, чтобы восстановить таблицу включают дамп и перезагрузку этого, или использование ALTER TABLE или REPAIR TABLE.

Отметить

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

Если Вы используете метод дампа-и-перезагрузки восстановления таблиц только с целью восстановления, индексирует, можно выполнить дамп или прежде или после обновления или понижения. Перезагрузка все еще должна быть сделана позже.

Чтобы восстановить таблицу, выводя и перезагружая это, используйте mysqldump, чтобы создать файл дампа и mysql, чтобы перезагрузить файл:

shell> mysqldump db_name
        t1 > dump.sqlshell> mysql db_name
        < dump.sql

Чтобы восстановить все таблицы в единственной базе данных, определите имя базы данных без любого после имени таблицы:

shell> mysqldump db_name
        > dump.sqlshell> mysql db_name
        < dump.sql

Чтобы восстановить все таблицы во всех базах данных, используйте --all-databases опция:

shell> mysqldump --all-databases > dump.sqlshell> mysql < dump.sql

Восстановить таблицу с ALTER TABLE, используйте "нулевое" изменение; то есть, ALTER TABLE оператор, который "изменяет" таблицу, чтобы использовать механизм хранения, который это уже имеет. Например, если t1 a MyISAM таблица, используйте этот оператор:

mysql> ALTER TABLE t1 ENGINE =
        MyISAM;

Если Вы не уверены который механизм хранения определить в ALTER TABLE оператор, использовать SHOW CREATE TABLE вывести на экран табличное определение.

Если следует восстановить таблицу, потому что табличная работа проверки указывает, что таблица повреждена или нуждается в обновлении, можно использовать REPAIR TABLE если тот оператор поддерживает механизм хранения таблицы. Например, чтобы восстановить a MyISAM таблица, используйте этот оператор:

mysql> REPAIR TABLE t1;

Для механизмов хранения такой как InnoDB это REPAIR TABLE не поддерживает, используют mysqldump, чтобы создать файл дампа и mysql, чтобы перезагрузить файл, как описано ранее.

Для того, специфических особенностей, о который механизмы хранения REPAIR TABLE поддерживает, см. Раздел 13.7.2.5,"REPAIR TABLE Синтаксис".

mysqlcheck - восстановление обеспечивает доступ командной строки к REPAIR TABLE оператор. Это может быть более удобным средством восстановления таблиц, потому что можно использовать --databases или --all-databases опция, чтобы восстановить все таблицы в определенных базах данных или всех базах данных, соответственно:

shell> mysqlcheck --repair --databases db_name ...shell> mysqlcheck
        --repair --all-databases

Для несовместимостей, представленных в MySQL 5.1.24 фиксацией для Ошибки #27877, который исправлял utf8_general_ci и ucs2_general_ci сопоставления, обходное решение реализуется с MySQL 5.1.62, 5.5.21, и 5.6.5. Обновите до одной из тех версий, затем преобразуйте каждую таблицу, на которую влияют, используя один из следующих методов. В каждом случае, обходное решение, изменяющее столбцы, на которые влияют, чтобы использовать utf8_general_mysql500_ci и ucs2_general_mysql500_ci сопоставления, которые сохраняют исходное пред5.1.24 упорядочивание utf8_general_ci и ucs2_general_ci.

После произведения соответствующих изменений, CHECK TABLE должна сообщить никакая ошибка.