2.10.12 Восстановление или ремонт таблиц или индексов
В данном разделе описывается, как восстановить или отремонтировать таблицы или индексы, что может потребоваться из-за:
Изменений в том, как MySQL обрабатывает типы данных или наборы символов. Например, ошибка в сортировке могла быть исправлена, что потребовало перестроения таблицы для обновления индексов для столбцов символов, использующих сортировку.
Необходимого ремонта или обновления таблиц, сообщенного
CHECK TABLE, mysqlcheck или mysql_upgrade.
Способы перестроения таблицы включают:
Метод дампа и перезагрузки
Если вы восстанавливаете таблицы, потому что другая версия MySQL не может обработать их после двоичного (на месте) обновления или понижения, необходимо использовать метод дампа и перезагрузки. Сделайте дамп таблиц перед обновлением или понижением, используя вашу исходную версию MySQL. Затем загрузите таблицы после обновления или понижения.
Если вы используете метод дампа и перезагрузки для перестроения таблиц только с целью перестроения индексов, вы можете выполнить дамп перед или после обновления или понижения. Загрузка по-прежнему должна быть выполнена после.
Если вам необходимо перестроить таблицу InnoDB, потому что операция CHECK TABLE указывает, что требуется обновление таблицы, используйте mysqldump для создания файла дампа и mysql для загрузки файла. Если операция CHECK TABLE указывает на наличие повреждения или приводит к ошибке InnoDB, обратитесь к разделу 14.22.2 «Принудительное восстановление InnoDB» для получения информации об использовании опции innodb_force_recovery для перезапуска InnoDB. Чтобы понять тип проблемы, с которой CHECK TABLE может столкнуться, обратитесь к примечаниям InnoDB в разделе 13.7.2.2 «Оператор CHECK TABLE».
Для перестроения таблицы путем создания дампа и его перезагрузки используйте mysqldump для создания файла дампа и mysql для перезагрузки файла:
mysqldump db_name t1 > dump.sql
mysql db_name < dump.sql
Чтобы перестроить все таблицы в одной базе данных, укажите имя базы данных без последующего имени таблицы:
mysqldump db_name > dump.sql
mysql db_name < dump.sql
Чтобы перестроить все таблицы во всех базах данных, используйте опцию --all-databases:
mysqldump --all-databases > dump.sql
mysql < dump.sql
Метод ALTER TABLE
Для перестроения таблицы с помощью ALTER
TABLE, используйте изменение “null”, то есть оператор ALTER TABLE, который “изменяет” таблицу для использования того же механизма хранения. Например, если t1 - таблица InnoDB, используйте этот оператор:
ALTER TABLE t1 ENGINE = InnoDB;
Если вы не уверены, какой механизм хранения следует указать в операторе ALTER TABLE, используйте SHOW CREATE TABLE для отображения определения таблицы.
Метод REPAIR TABLE
Метод REPAIR TABLE применим только к таблицам MyISAM, ARCHIVE и CSV.
Вы можете использовать REPAIR TABLE, если проверка таблицы указывает на наличие повреждения или необходимость обновления. Например, для ремонта таблицы MyISAM используйте этот оператор:
REPAIR TABLE t1;
mysqlcheck --repair предоставляет доступ к оператору REPAIR TABLE через командную строку. Это может быть более удобным способом ремонта таблиц, поскольку вы можете использовать опцию --databases или --all-databases для ремонта всех таблиц в определенных базах данных или во всех базах данных соответственно:
mysqlcheck --repair --databases db_name ...
mysqlcheck --repair --all-databases
© 2025 Oracle
Licensed under the GPLv2 License.