Spec-Zone.ru › MySQL 9.2

17.6.1.4 Перемещение или копирование таблиц InnoDB

В этом разделе описываются методы перемещения или копирования некоторых или всех InnoDB таблиц на другой сервер или экземпляр. Например, вы можете перенести весь экземпляр MySQL на более мощный и быстрый сервер; создать клон всего экземпляра MySQL на новый сервер репликации; скопировать отдельные таблицы в другой экземпляр для разработки и тестирования приложения или на сервер хранилища данных для создания отчетов.

В Windows InnoDB всегда хранит имена баз данных и таблиц в нижнем регистре. Для перемещения баз данных в двоичном формате с Unix на Windows или с Windows на Unix создавайте все базы данных и таблицы с именами в нижнем регистре. Удобный способ сделать это — добавить следующую строку в раздел [mysqld] вашего файла my.cnf или my.ini перед созданием баз данных или таблиц:

[mysqld]
lower_case_table_names=1
Примечание

Запрещается запускать сервер с настройкой lower_case_table_names, отличающейся от настройки, используемой при инициализации сервера.

Методы перемещения или копирования InnoDB таблиц включают:

  • Импорт таблиц

  • Резервное копирование MySQL Enterprise

  • Копирование файлов данных (метод холодного резервного копирования)

  • Восстановление из логического резервного копирования

Импорт таблиц

Таблицу, расположенную в табличном пространстве с файлом на таблицу, можно импортировать с другого экземпляра сервера MySQL или из резервной копии с помощью функции Переносимое табличное пространство. См. Раздел 17.6.1.3, «Импорт таблиц InnoDB».

Резервное копирование MySQL Enterprise

Продукт MySQL Enterprise Backup позволяет создавать резервную копию работающей базы данных MySQL с минимальным нарушением работы, создавая согласованную моментальную фотографию базы данных. При копировании таблиц MySQL Enterprise Backup позволяет продолжать чтение и запись. Кроме того, MySQL Enterprise Backup может создавать сжатые файлы резервных копий и резервное копирование подмножества таблиц. В сочетании с бинарным журналом MySQL вы можете выполнить восстановление по состоянию на определенный момент времени. MySQL Enterprise Backup входит в состав подписки MySQL Enterprise.

Дополнительные сведения о MySQL Enterprise Backup см. в Разделе 32.1, «Обзор MySQL Enterprise Backup».

Копирование файлов данных (метод холодного резервного копирования)

Вы можете переместить базу данных InnoDB, просто скопировав все соответствующие файлы, указанные в разделе «Холодные резервные копии» в Разделе 17.18.1, «Резервное копирование InnoDB».

InnoDB файлы данных и журналов совместимы в двоичном формате на всех платформах с одинаковым форматом чисел с плавающей запятой. Если форматы чисел с плавающей запятой отличаются, но вы не использовали типы данных FLOAT или DOUBLE в ваших таблицах, процедура остается той же: просто скопируйте соответствующие файлы.

При перемещении или копировании файлов табличного пространства .ibd, имя каталога базы данных должно быть одинаковым на исходной и целевой системах. Определение таблицы, хранящейся в общем табличном пространстве InnoDB, включает имя базы данных. Идентификаторы транзакций и номера последовательности журналов, хранящиеся в файлах табличного пространства, также различаются между базами данных.

Чтобы переместить файл .ibd и связанную таблицу из одной базы данных в другую, используйте инструкцию RENAME TABLE:

RENAME TABLE db1.tbl_name TO db2.tbl_name;

Если у вас есть резервная копия файла .ibd «“чистый”», вы можете восстановить ее в установку MySQL, откуда она была получена, следующим образом:

  1. Таблица не должна быть удалена или усечена после копирования файла .ibd, так как это изменяет идентификатор таблицы, хранящийся внутри табличного пространства.

  2. Выполните эту инструкцию ALTER TABLE для удаления текущего файла .ibd:

    ALTER TABLE tbl_name DISCARD TABLESPACE;
    
  3. Скопируйте резервную копию файла .ibd в соответствующий каталог базы данных.

  4. Выполните эту инструкцию ALTER TABLE , чтобы указать InnoDB использовать новый файл .ibd для таблицы:

    ALTER TABLE tbl_name IMPORT TABLESPACE;
    
    Примечание

    Функция ALTER TABLE ... IMPORT TABLESPACE не навязывает ограничения внешних ключей на импортированные данные.

В данном контексте, резервная копия файла .ibd «“чистый”» — это резервная копия, удовлетворяющая следующим требованиям:

  • Нет несохраненных изменений транзакциями в файле .ibd.

  • Нет неслитых записей буфера вставки в файле .ibd.

  • Удаление всех помеченных на удаление записей индекса из файла .ibd.

  • mysqld сбросил все измененные страницы файла .ibd из кэша в файл.

Вы можете создать «чистую» резервную копию файла .ibd следующим образом:

  1. Остановить всю активность сервера mysqld и зафиксировать все транзакции.

  2. Подождите, пока SHOW ENGINE INNODB STATUS не покажет, что активных транзакций в базе данных нет, и статус основного потока InnoDB равен Waiting for server activity. Затем вы можете сделать копию файла .ibd.

Другой метод создания чистой копии файла .ibd — использование продукта MySQL Enterprise Backup:

  1. Используйте MySQL Enterprise Backup для резервного копирования установки InnoDB.

  2. Запустите второй сервер mysqld на резервной копии и позвольте ему очистить файлы .ibd в резервной копии.

Восстановление из логического резервного копирования

Вы можете использовать утилиту, такую как mysqldump, для создания логической резервной копии, которая создает набор инструкций SQL, которые могут быть выполнены для воспроизведения исходных определений объектов базы данных и данных таблиц для передачи на другой сервер SQL. С помощью этого метода не имеет значения, отличаются ли форматы или ваши таблицы содержат данные с плавающей запятой.

Для повышения производительности этого метода отключите autocommit при импорте данных. Выполняйте фиксацию только после импорта всей таблицы или сегмента таблицы.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/innodb-migration.html

Spec-Zone.ru

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