3.14 Восстановление или ремонт таблиц или индексов
В этом разделе описывается, как восстановить или отремонтировать таблицы или индексы, что может потребоваться из-за:
Изменений в том, как MySQL обрабатывает типы данных или наборы символов. Например, ошибка в сортировке могла быть исправлена, что потребовало восстановления таблицы для обновления индексов для символьных столбцов, использующих сортировку.
Необходимых ремонтов или обновлений таблиц, сообщенных операцией
CHECK TABLEили командой mysqlcheck.
Способы восстановления таблицы включают:
Метод экспорта и загрузки
Если вы восстанавливаете таблицы, потому что другая версия MySQL не может их обработать после бинарного (на месте) обновления или понижения версии, вам необходимо использовать метод экспорта и загрузки. Сделайте экспорт таблиц до обновления или понижения версии с помощью вашей оригинальной версии MySQL. Затем загрузите таблицы после обновления или понижения версии.
Если вы используете метод экспорта и загрузки для восстановления таблиц только для восстановления индексов, вы можете выполнить экспорт до или после обновления или понижения версии. Загрузка все равно должна быть выполнена после.
Если вам нужно восстановить таблицу InnoDB, потому что операция CHECK TABLE указывает на необходимость обновления таблицы, используйте mysqldump для создания файла дампа и mysql для загрузки файла. Если операция CHECK TABLE указывает на повреждение или приводит к ошибке InnoDB, см. Раздел 17.20.3, «Принудительное восстановление InnoDB» для получения информации об использовании параметра innodb_force_recovery для перезапуска InnoDB. Чтобы понять тип проблемы, с которой может столкнуться операция CHECK TABLE, обратитесь к примечаниям InnoDB в Разделе 15.7.3.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.