|
Spec-Zone .ru
спецификации, руководства, описания, API
|
Есть много причин, почему Вы могли бы скопировать InnoDB таблица к различному
серверу базы данных:
Выполнять отчеты, не помещая дополнительную загрузку в производственный сервер.
Устанавливать идентичные данные для таблицы на новом сервере.
Восстановить поддержанную версию таблицы после проблемы или ошибки.
Как более быстрый способ переместить данные чем импорт результатов mysqldump команды. Данные сразу доступны, вместо того, чтобы иметь необходимость быть повторно вставленными и индексирование восстановленного.
Используйте FLUSH
TABLES оператор с FOR EXPORT пункт. Это помещает соответствие .ibd файлы в непротиворечивое состояние так, чтобы они могли быть скопированы в
другой сервер. Вы копируете a .cfg файл наряду с .ibd
файл; этот дополнительный файл используется ALTER
TABLE ... IMPORT TABLESPACE вносить любые необходимые корректировки в пределах файла табличной
области во время процесса импорта. См. Раздел 13.7.6.3,"FLUSH Синтаксис" для семантики SQL.
На исходном сервере составьте таблицу, если Вы уже не существуете:
mysql> use test;mysql> CREATE TABLE t(c1 INT) engine=InnoDB;
На целевом сервере составьте таблицу, если Вы уже не существуете:
mysql> use test;mysql> CREATE TABLE t(c1 INT) engine=InnoDB;
На целевом сервере отбросьте существующую табличную область:
mysql> use test;mysql> ALTER TABLE t DISCARD TABLESPACE;
Отметьте: файл табличной области не должен обязательно быть создан на сервере, в который импортируется файл табличной области. В MySQL 5.6 или позже, импортируя файл табличной области из другого сервера работает, если у обоих серверов есть GA (Общедоступность), состояние и их версии в пределах того же самого ряда. Иначе, файл, должно быть, был создан на сервере, в который он импортируется.
На исходном сервере заморозьте таблицу и создайте .cfg файл метаданных, работая FLUSH TABLES ... FOR EXPORT:
mysql> use test;mysql> FLUSH TABLES t FOR EXPORT;
Файл метаданных (t.cfg) создается в InnoDB каталог данных.
Отметьте: FLUSH TABLES ... FOR
EXPORT применяется к InnoDB таблицы. Это доступно с
MySQL 5.6.6. Оператор гарантирует, что изменения к именованным таблицам были сброшены к диску
так, чтобы двоичные табличные копии могли быть сделаны, в то время как сервер работает. Когда FLUSH TABLES ... FOR EXPORT выполняется, InnoDB производит a .cfg в том же
самом каталоге базы данных как таблица. .cfg файл содержит
метаданные, должен был импортировать файл табличной области.
Скопируйте .cfg файл метаданных и .ibd файл от исходного сервера до целевого сервера. Например:
shell> scp /innodb_data_dir/test/t.{ibd,cfg} destination-server:/innodb_data_dir/test
На исходном сервере использовать UNLOCK TABLES выпускать блокировки, полученные FLUSH TABLES ... FOR EXPORT:
mysql> use test;mysql> UNLOCK TABLES;
На целевом сервере импортируйте табличную область:
mysql> use test;mysql> ALTER TABLE t IMPORT TABLESPACE;