mysql 迁移表空间_【MySQL Database】数据库表迁移:传输表空间

通过复制InnoDB表的ibd文件,实现将InnoDB表从源库迁移到目标库,类似Oracle TTS。

传输表空间的限制:

1,mysql 版本 5.6.6 及其以上,源和目标版本建议都是GA版并且大版本一样

2,表引擎为innodb并且开启独立表空间(innodb_file_per_table=1)

3,处于导出状态的表只允许读也就是”read_only“状态

4,DISCARD TABLESPACE不支持分区表[5.6.17才支持] 并且当表上具有外键关系的时候需要将foreign_key_check设置为0

5,源和目标实例的page size必须大小一致

6,ALTER TABLE ... IMPORT TABLESPACE不强制进行外键约束检查,所以需要将主表和子表都导出,然后在目标实例导入

源库

[root@wallet01 ~]# su - mysql

[mysql@wallet01 ~]$ mysqldump -uroot -pabcd.1234 -d soe customer >customer.sql

[mysql@wallet01 ~]$ scp customer.sql 192.168.1.202:/home/mysql

[mysql@wallet01 ~]$ mysql -uroot -pabcd.1234

mysql> use soe

Database changed

mysql> select count(*) from customer;

+----------+

| count(*) |

+----------+

| 1500000 |

+----------+

1 row in set (0.33 sec)

目标库

[root@wallet02 ~]# su - mysql

[mysql@wallet02 ~]$ mysql -uroot -pabcd.1234

mysql> create database soe;

Query OK, 1 row affected (0.05 sec)

mysql> use soe

Database changed

mysql> source customer.sql

Query OK, 0 rows affected (0.01 sec)

mysql> alter table customer discard tablespace;

Query OK, 0 rows affected (0.03 sec)

源库

mysql> flush table customer for export;

Query OK, 0 rows affected (0.00 sec)

[mysql@wallet01 ~]$ cd /usr/local/mysql/data/soe

[mysql@wallet01 soe]$ scp customer.cfg 192.168.1.202:/usr/local/mysql/data/soe

[mysql@wallet01 soe]$ scp customer.ibd 192.168.1.202:/usr/local/mysql/data/soe

mysql> unlock tables;

Query OK, 0 rows affected (0.03 sec)

目标库

mysql> alter table customer import tablespace;

Query OK, 0 rows affected (11.52 sec)

mysql> select count(*) from customer;

+----------+

| count(*) |

+----------+

| 1500000 |

+----------+

1 row in set (0.37 sec)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值