最新需要做服务器迁移,但是mysql有几个表的文件太大了,使用mysqldump导出时,遥遥无期。灵机一动看到了mysql对应的表ibd文件,直接迁移这个是否可行呢,先说结论,可行!说干就干!
一、 先使用mysqldump把除大表外的所有小表导出为sql
mysqldump -u root -p schema_name --ignore-table=schema_name.big_table1 --ignore-table=schema_name.big_table2 --ignore-table=schema_name.big_table3 > back_filtered.sql
导出时过滤掉选择的大表,只把小表导出,会很快。
二、 在新数据库创建相同表结构
##查看旧表数据结构,拿着建表语句创建新表
SHOW CREATE TABLE table_name;
三、 对新表进行删除表空间操作
##删除表空间,也就是表的ibd文件
ALTER TABLE table_name DISCARD TABLESPACE;
##重载表空间,把旧表的ibd文件加载进去
ALTER TABLE table_name IMPORT TABLESPACE;
四、 复制旧表空间文件ibd和frm文件,重置表空间
把就数据的表文件ibd和frm放到新表对应的位置,也可直接wget下载,如宝塔可直接分享旧表文件为一个链接
wget -O http://youlinks