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.