1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

MySQL数据迁移之表空间传输

MySQL数据迁移:表空间传输

我是本际云服务器推荐网的小编小本本,今天为大家介绍一下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