MySQL5.7迁移表空间――普通表

匿名 (未验证) 提交于 2019-12-02 22:06:11
Mysql 传输表空间--将InnoDB表复制到另一个实例(一)

---在工作中经常遇到将一个InnoDB表从一个实例,移动或者复制到另一个实例,其实有很多的方法,在5.6之前常用的是通过物理或者逻辑备份来实现。

实验环境:(都是mysql5.7)


--:在源库(192.168.2.200)创建一个测试表


--:在源库(192.168.2.200)上运行FLUSH TABLES … FOR EXPORT 锁定表并生成.cfg元数据文件

--(注意:这一步是把表锁住了,不能insert update)

Query OK, 0 rows affected (0.00 sec)


[root@localhost data]# cd zhangdb

[root@localhost zhangdb]# ls

[root@localhost zhangdb]# ll

total 116

-rw-r----- 1 mysql mysql 98304 May 25 15:37 emp.ibd


--:在目标数据库(192.168.2.100)创建源表结构,并丢弃现有的表空间,如下

MySQL [(none)]> use test

Database changed

MySQL [test]> CREATE TABLE `emp` (

Query OK, 0 rows affected (0.41 sec)


---丢弃现有表空间


注意:

※约束条件、字符集等等也必须一致,建议使用show create table t1; 来获取创建表的SQL,否则在新服务器上导入表空间的时候会提示1808错误。


--:将.ibd文件和.cfg元数据文件从源实例复制到目标实例

[root@localhost zhangdb]# scp emp.ibd emp.cfg root@192.168.2.100:/mysql/data/test/ ---传输到目标数据库的test schema目录


--在源数据库(192.168.2.200)解锁emp表

mysql> unlock table;

Query OK, 0 rows affected (0.01 sec)


--在目标数据库中(192.168.2.100)导入emp表空间,然后查看表是否正确


注意:


原文:http://blog.51cto.com/fengfeng688/2149038

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!