mysql Innodb引擎独立表空间下通过复制.ibd文件快速迁移数据文件

假设需求:需要把库test1中的的数据迁移到test2中,并且test2中数据量特别大

硬性条件:1.mysql 使用 Innodb引擎,且开启独立表空间,2.两个库的mysql版本一致(不同版本下未做测试)

1.导出test1库的表结构创建语句,在test2库中执行

2.使test2库表空间卸载,

SELECT CONCAT('ALTER TABLE ', TABLE_NAME, ' discard tablespace;') FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'test2' and TABLE_TYPE like '%TABLE%' 

把这条语句查询结果导出为sql文件,然后在test2中执行这个sql文件,执行完毕则使test2库所有表空间已卸载

3.停止mysql服务

4.进入mysql的数据文件夹,windows下目录类似“C:\ProgramData\MySQL\MySQL Server 5.6\data”,进入"test1"文件夹中复制所有.ibd文件到“test2”中

5.开启mysql服务,并使test2库表空间装载

SELECT CONCAT('ALTER TABLE ', TABLE_NAME, ' import tablespace;') FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'test2' and TABLE_TYPE like '%TABLE%' 

类似地把上面执行结果导出为sql文件,在执行,至此数据库test1中所有的数据已迁移到test2中

你可能感兴趣的:(mysql Innodb引擎独立表空间下通过复制.ibd文件快速迁移数据文件)