14.6.2 Moving or Copying InnoDB Tables to Another Machine 移动或者copy InnoDB 表到另外的机器

时间:2021-03-08 07:35:23
14.6.2 Moving or Copying InnoDB Tables to Another Machine   移动或者copy InnoDB 表到另外的机器


这个章节描述技术关于移动或者copying 一些或者全部的InnoDB 表到不同的服务器。


比如,你可以移动整个MySQL 实例到一个更大,更快的服务器,


你需要克隆整个MySQL 实例到一个新的复制slave server,

你可以拷贝单个表到另外的server 来开发和测试应用,或者到数据库仓库看来产生报告。



Techniques for moving or copying InnoDB tables include:

Transportable Tablespaces

MySQL Enterprise Backup

Copying Data Files (Cold Backup Method)

Export and Import (mysqldump)



使用小写名称对于跨平台的移动或者复制:



在Windows上,InnoDB总是存储数据库和表名字内部小写格式。

移动databases 以一个2进制格式从Unix到Windows 或者从Windows到Unix,


创建所有的数据库和表使用小写名字。


一个方便的方式来完成是增加下面行到[mysqld]章节


[mysqld]
lower_case_table_names=1


Transportable Tablespaces



MySQL 5.6.6中介绍, 传输表空间功能使用FLUSH TABLES FOR EXPORT 来准备InnoDB 表

用于copy 从一个服务器到另外一个。


为了使用这个功能, InnoDB 表必须在innodb_file_per_table 为ON的情况下创建,

这样每个InnoDB 表有它自己的表空间


MySQL Enterprise Backup

MySQL 企业备份产品允许你备份一个运行的MySQL 数据库,


包括InnoDB和MyISAM 表,以最小的中断来操作产生一个一致性的数据库快照。

当MySQL Enterprise Backup 是copyInnoDB 表, 读取和写入到InnoDB和MyISAM表可以继续。


在拷贝MyISAM 和其他非InnoDB表,读(不是写) 到那些表是允许的。


额外的,MySQL Enterprise Backup 可以创建压缩的备份文件,

backup InnoDB的子集。集合MySQL binary log,


你可以执行按时间点恢复。

Copying Data Files (Cold Backup Method) 复制数据文件(冷备份方法)


你可以移动一个InnoDB 数据库实现通过复制所有相关的文件


就像MyISAM 数据文件, InnoDB 数据和log files 是2进制兼容在多有的平台

有相同的浮点数格式。


可移植考虑对于.ibd文件:

当你移动或者copy .ibd文件,数据库目录名字必须相同在源和目的系统。

表定义存储在InnoDB 共享的表空间包含数据库名字,


事务IDs 和log sequence numbers 存储在表空间文件在不同数据库也不同


移动一个.ibd 文件和相关的表从一个数据库到另外一个,使用一个RENAME 语句


RENAME TABLE db1.tbl_name TO db2.tbl_name;



如果你有一个干净的的.ibd文件的备份,你可以恢复它到MySQL 安装 如下:

1.表没有被删除或者truncate 资产你复制.ibd 文件,

因为这样做会改变table id 存储在表空间里。


2. 执行ALTER TABLE 语句来删除当前的.ibd文件

ALTER TABLE tbl_name DISCARD TABLESPACE;


3. 复制备份.ibd 文件到适当的数据库目录


4.执行ALTER TABLE 语句告诉InnoDB 使用新的.ibd文件