透明表空间传输能够使用物理复制的方式快速迁移一张表,通常用于数据表存在问题时,通过异机恢复后再以该方式将表快速恢复到生产环境中。
源表信息如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
root@test 15:56: select * from c;
+---+------+
| a | b |
+---+------+
| 1 | lu |
| 2 | heng |
| 3 | xing |
+---+------+
3 rows in set (0.00 sec)
root@test 15:57: desc c;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| a | int | NO | PRI | NULL | auto_increment |
| b | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
|
目标端创建表结构
1
2
|
root@test 16:02: create table c(a int auto_increment primary key,b varchar(20));
Query OK, 0 rows affected (0.02 sec)
|
目标端discard tablespace(会删除表的ibd文件)
1
2
|
root@test 16:02: alter table c discard tablespace;
Query OK, 0 rows affected (0.03 sec)
|
源库将表锁定
1
2
|
root@test 15:58: flush tables c for export;
Query OK, 0 rows affected (0.01 sec)
|
拷贝表的ibd和cfg文件到目标端datadir下
1
2
|
[root@t-luhx01-v-szzb test]# scp c.* @10.0.139.162:/service/mysql/data/test/
[root@t-luhx02-v-szzb test]# chown -R mysql.mysql c.cfg c.ibd
|
源端表解锁
1
2
|
root@test 16:05: unlock tables;
Query OK, 0 rows affected (0.00 sec)
|
目标端导入表空间文件
1
2
3
4
5
6
7
8
9
10
11
|
root@test 16:04: alter table c import tablespace;
Query OK, 0 rows affected (0.11 sec)
root@test 16:10: select * from c;
+---+------+
| a | b |
+---+------+
| 1 | lu |
| 2 | heng |
| 3 | xing |
+---+------+
|