首页 > 数据库 > MySQL > 5.7 mysql的可传输表空间
要导入的库中,
丢弃表空间
alter table test discard tablespace;
源库上备份,这个操作加了个读锁。
cfg记录原表的信息,我们将cfg和ibd文件拷贝到之前做discard的库里。然后释放源库的表,
unlock tables;
然后在要导入的库中将cp过来的表空间导入。(当然了,我的这两个表不是同一个,这也是脑残的行为,哇哈哈)
当然导入的时候error.log里面有有信息记录。
还有5.7可以导出分区表中的某个分区
mysql> show create table employees1;
----
-------
----------------------------------------------------------------
CREATE TABLE `employees1` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
PRIMARY KEY (`emp_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
/*!50100 PARTITION BY HASH (emp_no)
PARTITIONS 4 */ |
---------------------------------------------------------------------------
同样,flush table employees1 for export;产生cfg文件
同样拷贝过去分区。
在导入的库执行
alter table employees discard partition p0 tablespace
;
... ...
alter table employees import
partition p0 tablespace;
----分割线----看不懂上面的看下面
--目标库丢弃ibd文件 mysql> alter table testaa discard tablespace; Query OK, 0 rows affected (0.01 sec) --传输分区的话如下 mysql> alter table testaa discard partition p1 tablespace; --再看的话,ibd文件没了,只有frm文件了 testaa.frm mysql> show tables; +----------------+ | Tables_in_test | +----------------+ | testaa | | user | | userjson | | xianxianrecord | +----------------+ 4 rows in set (0.00 sec) mysql> select * from testaa; ERROR 1814 (HY000): Tablespace has been discarded for table 'testaa' --源库中源表 mysql> flush table xianxianrecord for export; Query OK, 0 rows affected (0.01 sec) --可以看到多了一个cfg文件,将cfg和ibd拷贝到目标服务器的同库同名。 13:53 xianxianrecord.cfg 11:11 xianxianrecord.frm 11:12 xianxianrecord.ibd --拷贝到目标库后释放锁 mysql> unlock tables; Query OK, 0 rows affected (0.00 sec) --目标库执行加载表空间操作 mysql> alter table a import tablespace; mysql> alter table a import partition p1 tablespace;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29990276/viewspace-2056945/ ,如需转载,请注明出处,否则将追究法律责任。