Mysql 传输表空间--将InnoDB分区表复制到另一个实例(二)

说明:实验环境是mysql5.7.17

这个过程演示了如何从一个运行的MySQL服务器实例复制一个分区的InnoDB表到另一个正在运行的实例。在相同的实例中,使用小调整的相同过程可以用来执行分区InnoDB表的完整恢复。

在源实例上,如果不存在的话,创建一个分区表

在下面的例子中,创建了一个包含三个分区(p0、p1、p2)的表:
Mysql> use test
Database changed
Mysql>  CREATE TABLE t1 (i int) ENGINE = InnoDB PARTITION BY KEY (i) PARTITIONS 3;
Query OK, 0 rows affected (0.02 sec)
在/data/mysql/data/test名录中,每个三个分区都有一个单独的表空间(.ibd)文件。
Mysql> /! ls /data/mysql/data/test
t1.frm    t1.par    t1#P#p0.ibd  t1#P#p1.ibd  t1#P#p2.ibd  t.frm  t.ibd

在目标实例上,创建相同的分区表:

Mysql> use test
Database changed
Mysql> CREATE TABLE t1 (i int) ENGINE = InnoDB PARTITION BY KEY (i) PARTITIONS 3;
Query OK, 0 rows affected (0.06 sec)
在/data/mysql/test名录中,每个分区都有一个单独的表空间(.ibd)文件。
Mysql> /! ls /data/mysql/test
db.opt    t1.frm    t1.par    t1#P#p0.ibd  t1#P#p1.ibd  t1#P#p2.ibd  t.cfg  t.frm  t.ibd

在目标实例上,丢弃分区表的表空间

(在表空间可以在目的地实例上导入之前,附着在接收表上的表空间必须被丢弃。)
mysql> ALTER TABLE t1 DISCARD TABLESPACE;
Query OK, 0 rows affected (0.03 sec)
只剩下t1.frm 文件
mysql> /! ls /data/mysql/data/test/
db.opt    t1.frm

在源实例上运行FLUSH TABLES … FOR EXPORT 锁定表并生成.cfg元数据文件

mysql> USE test;
Database changed
mysql>  FLUSH TABLES t1 FOR EXPORT;
Query OK, 0 rows affected (0.01 sec)

mysql> /! ls /data/mysql/data/test/
db.opt    t1.frm    t1#P#p0.cfg  t1#P#p0.ibd  t1#P#p1.cfg  t1#P#p1.ibd  t1#P#p2.cfg  t1#P#p2.ibd

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

[root@www.cndba.cn test]# scp /data/mysql/data/test/t1*.{ibd,cfg} 192.168.1.33:/data/mysql/data/test/ 
[root@www.cndba.cn test]# chown mysql.mysql t1*
在释放共享锁之前,必须先复制.ibd文件和.cfg文件

在源实例中解锁

使用解锁表来释放FLUSH TABLES ... FOR EXPORT:所获得的锁
mysql>  USE test;
Database changed
mysql> UNLOCK TABLES;
Query OK, 0 rows affected (0.00 sec)

在目的地实例中,导入表空间

mysql>  USE test;
Database changed
mysql> ALTER TABLE t1 IMPORT TABLESPACE;
Query OK, 0 rows affected (0.18 sec)
mysql> select * from t1;
Empty set (0.00 sec)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值