Spec-Zone.ru › MySQL 5.7

2.10.12 Восстановление или ремонт таблиц или индексов

В данном разделе описывается, как восстановить или отремонтировать таблицы или индексы, что может потребоваться из-за:

  • Изменений в том, как MySQL обрабатывает типы данных или наборы символов. Например, ошибка в сортировке могла быть исправлена, что потребовало перестроения таблицы для обновления индексов для столбцов символов, использующих сортировку.

  • Необходимого ремонта или обновления таблиц, сообщенного CHECK TABLE, mysqlcheck или mysql_upgrade.

Способы перестроения таблицы включают:

  • Метод дампа и перезагрузки

  • Метод ALTER TABLE

  • Метод REPAIR TABLE

Метод дампа и перезагрузки

Если вы восстанавливаете таблицы, потому что другая версия 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.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/rebuilding-tables.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API