14.6.1.4 移动或复制 InnoDBtable

本节介绍了将部分或全部InnoDBtable 移动或复制到其他服务器或实例的技术。例如,您可以将整个 MySQL 实例移至更大,速度更快的服务器上。您可以将整个 MySQL 实例克隆到新的副本服务器上;您可以将单个 table 复制到另一个实例以开发和测试应用程序,或复制到数据仓库服务器以生成报告。

在 Windows 上,InnoDB始终在内部以小写形式存储数据库和 table 名。要将二进制格式的数据库从 Unix 移至 Windows 或从 Windows 移至 Unix,请使用小写名称创建所有数据库和 table。一种方便的方法是在创建任何数据库或 table 之前,将以下行添加到my.cnfmy.ini文件的[mysqld]部分中:

[mysqld]
lower_case_table_names=1

移动或复制InnoDBtable 格的技术包括:

Importing Tables

可以使用* Transportable Tablespace *功能从另一个 MySQL 服务器实例或备份中导入每 table 文件 table 空间中的 table。参见第 14.6.1.3 节“导入 InnoDBtable”

MySQL 企业备份

MySQL Enterprise Backup 产品使您可以在不影响操作的情况下备份正在运行的 MySQL 数据库,同时生成一致的数据库快照。当 MySQL 企业备份复制 table 时,读取和写入可以 continue。此外,MySQL Enterprise Backup 可以创建压缩备份文件,并备份 table 的子集。结合 MySQL 二进制日志,您可以执行时间点恢复。 MySQL Enterprise Backup 是 MySQL Enterprise 订阅的一部分。

有关 MySQL 企业备份的更多详细信息,请参见第 29.2 节“ MySQL 企业备份概述”

复制数据文件(冷备份方法)

您只需复制第 14.19.1 节“ InnoDB 备份”的“冷备份”下列出的所有相关文件,即可移动InnoDB数据库。

InnoDB数据和日志文件在具有相同浮点数格式的所有平台上都是二进制兼容的。如果浮点格式不同,但是在 table 中未使用FLOATDOUBLE数据类型,则过程相同:只需复制相关文件。

移动或复制每 table.ibd文件时,数据库目录名称在源系统和目标系统上必须相同。存储在InnoDB共享 table 空间中的 table 定义包括数据库名称。table 空间文件中存储的事务 ID 和日志序列号在数据库之间也有所不同。

要将.ibd文件和关联的 table 从一个数据库移动到另一个数据库,请使用RENAME TABLE语句:

RENAME TABLE db1.tbl_name TO db2.tbl_name;

如果您拥有.ibd文件的“干净”备份,则可以将其还原到其原始来源的 MySQL 安装中,如下所示:

ALTER TABLE tbl_name DISCARD TABLESPACE;
ALTER TABLE tbl_name IMPORT TABLESPACE;

Note

更改 table...导入 table 空间功能不对导入的数据施加外键约束。

在这种情况下,“干净的” .ibd文件备份是可以满足以下要求的文件:

您可以使用以下方法制作干净的备份.ibd文件:

制作.ibd文件的完整副本的另一种方法是使用 MySQL Enterprise Backup 产品:

从逻辑备份还原

您可以使用诸如mysqldump之类的 Util 执行逻辑备份,该 Util 将生成一组 SQL 语句,可以执行这些语句以重现原始数据库对象定义和 table 数据,以将其传输到另一个 SQL Server。使用此方法,格式是否不同或 table 是否包含浮点数据都没有关系。

为了提高此方法的性能,请在导入数据时禁用autocommit。仅在导入整个 table 或 table 的一部分后才执行提交。

首页