天天看点

mysql使用传输表空间对大表或分区表进行快速复制

在有些情况下,需要对单个或多个大表、分区表进行复制、数据迁移等操作,使用mysqldump可能比较慢,这种情况下可以使用mysql的传输表空间进行,以下是操作过程

1.在源服务器上查看需要复制的创表结构

mysql使用传输表空间对大表或分区表进行快速复制

2.在目的服务器上创建对应表

mysql使用传输表空间对大表或分区表进行快速复制

可以看到对应的数据目录下已经创建了表结构定义文件与表空间文件

mysql使用传输表空间对大表或分区表进行快速复制

3.通过discard删除表空间文件

alter table t_search discard tablespace;

mysql使用传输表空间对大表或分区表进行快速复制

确认表空间文件被删除

4.在源数据库中通过export命令导出表空间文件(同时加了读锁)

flush tables t_search for export;

mysql使用传输表空间对大表或分区表进行快速复制
mysql使用传输表空间对大表或分区表进行快速复制

可以看到export到多出了一个cfg文件,里面保存了一些元数据信息

5.将源服务器上导出的cfg文件与ibd文件拷贝至目的服务器数据库数据目录下对应的数据库目录test下面

mysql使用传输表空间对大表或分区表进行快速复制

更改cfg文件与ibd文件的属主,chown -R mysql.mysql .

6.在源目的数据库中解锁t_search

mysql使用传输表空间对大表或分区表进行快速复制

注意必须要在将cfg文件与ibd文件复制后才能解锁,否则cfg文件将被删除

7.在目的数据库import倒入数据完成表空间复制

alter table t_search import tablespace;

mysql使用传输表空间对大表或分区表进行快速复制

8.这种方法也可以用于对分区表的倒入导出

语法为:

alter table t discard partition p0 tablespace;

alter table t import partition p0 tablespace