假设需求:需要把库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中