发布网友
共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表的复制或迁移。