MySQL数据迁移:表空间传输
我是本际云服务器推荐网的小编小本本,今天为大家介绍一下MySQL数据迁移之表空间传输。

简介
在MySQL5.6.6版本中引入了一种基于表空间快速迁移的功能,我们可以直接将表空间复制到另一台服务器数据库中,这对于大表来说是一个非常有用的方法。可传输表空间机制比任何其他导出和导入表的方法都快,因为只需要使用传统的Linux命令(cp、scp、rsync)将数据文件复制到目标位置即可。
环境准备
需要准备两台运行MySQL5.7.32版本的数据库服务器:database1和database2,在两个数据库上均采用静态加密,然后将database1数据库中的加密表“test.enc_data_test”复制到database2。
迁移步骤
迁移步骤主要包括:准备源表、复制表空间、解锁表、创建表结构、删除.ibd文件、复制表空间到数据文件目录和导入表空间。
1.准备源表:将表“enc_data_test”在服务器运行时制作表副本,在database1中执行如下命令:
mysql> flush table enc_data_test for export;
2.复制表空间:将表文件(.ibd、.cfg、.cfp)复制到目标服务器database2。
3.解锁表:在database1上解锁表以允许对其操作。
mysql> unlock tables;
4.创建表结构:在database2上创建空表。
mysql> CREATE TABLE `enc_data_test`(`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(16) DEFAULT NULL,`exec_time` datetime DEFAULT CURRENT_TIMESTAMP,PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=165520 DEFAULT CHARSET=utf8 ENCRYPTION=Y;
5.删除.ibd文件:在database2上创建空表后,需要删除.ibd文件。
mysql> alter table enc_data_test discard tablespace;
6.复制表空间到数据文件目录:将表空间文件(从database1)拷贝到数据库文件夹下的data目录下。
[mysql@db02 test]$ cp -r /home/mysql/enc_data_test.ibd ./
7.导入表空间:在目标数据库运行以下命令进行导入:
mysql> alter table enc_data_test import tablespace;
迁移过程与正常的InnoDB表空间导出/导入过程非常相似。但是,在这里需要注意以下两点:必须将.cfp文件复制到目标服务器。迁移表需要加密(ENCRYPTION=Y)。
总结
在实际环境中,对部分大表进行迁移时,可使用传输表空间方法进行迁移,提高效率缩短时间,满足业务需求。
更多精彩干货,请关注本际云服务器推荐网。
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6081.html
