复制mysql innodb 表数据到新的数据库
http://www.forasp.cn/ 2022/12/24 12:08:58 点击:不统计
%77w%77%2E%66%6F%72%61%73%70%2E%63%6E
假设有两个MySQL实例,一个运行在olddatabase(源端)下,另一个运行在newdatabase(目标端)下,现在演示一下,如何通过这种方式将olddatabase下的表复制到newdatabase下:
1. olddatabase上创建一张表,并插入数据
mysql> use test1;
mysql> create table movet(c1 INT) ENGINE=InnoDB;
mysql> insert into movet values(2),(3),(5),(7),(11);
2. newdatabase上也创建相同的表
mysql> USE test1;
mysql> CREATE TABLE movet(c1 INT) ENGINE=InnoDB;
3. newdatabase上, discard 掉现有的表空间
mysql> ALTER TABLE movet DISCARD TABLESPACE;
4. olddatabase上,运行FLUSH TABLES ... FOR EXPORT命令:
mysql> FLUSH TABLES movet FOR EXPORT;
在数据库目录下,可以看到多出一个cfg文件:
root@olddatabase:/var/lib/mysql/test1# ls movet.*
movet.cfg movet.ibd
5. 将 .ibd 文件和 .cfg metadata 文件从olddatabase上拷贝到newdatabase上:
root@olddatabase:/var/lib/mysql/test1# scp movet.{cfg,ibd} newdatabase:/var/lib/mysql/test1
6. olddatabase上,使用UNLOCAL TABLES释放FLUSH TABLES ... FOR EXPORT命令获取的锁
mysql> UNLOCK TABLES;
7. newdatabase上,导入从olddatabase上复制过来的表空间:
mysql> alter table movet import tablespace;
Query OK, 0 rows affected (0.45 sec)
原文链接:https://blog.csdn.net/qingsong3333/article/details/77171040
http://www.forasp.cn/
·上一篇:mysql 查看命令错误 >> ·下一篇:替换mysql 中数据换行符号 >>