一 简介:mysql5.6+的表空间传输
二 目的:复制数据到另一个表
三 步骤
1 create table b like a ->创建一个空表
2 alter table b discard tablespace -> 禁用空表的表空间,用于删除b的ibd文件
3 alter table a for export ->会生成一个cfg文件,对于全局来说 表是只读状态,要非常注意
4 cp a.cfg b.cfg && cp a.ibd b.ibd ->拷贝cfg和ibd文件进行复制
5 unlock tables -> 拷贝完成进行解锁
6 alter table b import tablespace -> 进行数据字典注册,这里需要注意,因为涉及到数据页的table_id的修改,可能会耗费时间,但是比dump还是快
7 select count(*) from b 进行验证
四 总结
mysql表空间的迁移能快速的迁移大表,但是有自身局限性,适用以下场景
1 冷数据表的复制,由于需要锁表,所以不能迁移热表
2 大表数据的恢复,线上DDL操作失误,需要恢复时,利用备份+binlog进行恢复后,表空间迁移进行导入
原文:https://www.cnblogs.com/danhuangpai/p/10383236.html