MySQL innodb表使用表空间ibd文件复制或迁移表

发布网友

我来回答

1个回答

热心网友

MySQL InnoDB引擎的表通过拷贝物理文件的方式进行单表或指定表的复制,本文将介绍两种方法。

方法一:修改引擎

1. 首先,创建一张innodb引擎的表并插入测试数据。

sql
create table test_tb(id int primary key,c1 varchar(20)) ENGINE=InnoDB DEFAULT CHARSET=utf8;insert into test_tb select 1,'c1';insert into test_tb select 2,'c2';

2. 使用alter命令将引擎修改为myisam。

sql
alter table test_tb engine=myisam;show create table test_tb\G

3. 将物理文件拷贝至目标库。

4. 修改权限。

5. 查看结果。

记录和源库一致。

6. 最后,将源库及目标库的表引擎修改回innodb。

方法二:拷贝.idb物理表空间文件

1. 创建一张innodb的表,为测试大表,创建一张800W记录的表。

sql
CREATE TABLE `test_tb2` ( `id` int(11) DEFAULT NULL, `aa` varchar(20) DEFAULT NULL, `bb` varchar(20) DEFAULT NULL, `cc` varchar(20) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;call sp_test_tb2(8000000);

2. 在目标库创建相同表名。

3. 删除目标表的表空间。

4. 拷贝源库的idb文件。

5. 修改表空间文件权限。

6. 目标表导入表空间数据。

7. 查看导入结果。

总结:通过这两种方法,可以实现MySQL InnoDB表的复制或迁移。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com