0. Summary
1. 目的服務(wù)器創(chuàng)建一張表账胧,表結(jié)構(gòu)和源服務(wù)器結(jié)構(gòu)一樣
2. 目的服務(wù)器discard tablespace
3. 源服務(wù)器鎖表
4. 拷貝ibd和cfg文件到目的服務(wù)器
5. 目的服務(wù)器導(dǎo)入表空間文件
6. 其他
1. 目的服務(wù)器創(chuàng)建一張表,表結(jié)構(gòu)和源服務(wù)器結(jié)構(gòu)一樣
#### 源 ####
(root@localhost) [dbt3]> select count(*) from t1;
+----------+
| count(*) |
+----------+
| 150000 |
+----------+
1 row in set (0.02 sec)
(root@localhost) [dbt3]> show create table t1\G
*************************** 1. row ***************************
Table: t1
Create Table: CREATE TABLE `t1` (
`c_custkey` int(11) NOT NULL,
`c_name` varchar(25) DEFAULT NULL,
`c_address` varchar(40) DEFAULT NULL,
`c_nationkey` int(11) DEFAULT NULL,
`c_phone` char(15) DEFAULT NULL,
`c_acctbal` double DEFAULT NULL,
`c_mktsegment` char(10) DEFAULT NULL,
`c_comment` varchar(117) DEFAULT NULL,
PRIMARY KEY (`c_custkey`),
KEY `i_c_nationkey` (`c_nationkey`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
#### 目 ####
(root@localhost) [mytest]> create database dbt3;
Query OK, 1 row affected (0.01 sec)
(root@localhost) [mytest]> use dbt3;
Database changed
(root@localhost) [dbt3]> CREATE TABLE `t1` (
-> `c_custkey` int(11) NOT NULL,
-> `c_name` varchar(25) DEFAULT NULL,
-> `c_address` varchar(40) DEFAULT NULL,
-> `c_nationkey` int(11) DEFAULT NULL,
-> `c_phone` char(15) DEFAULT NULL,
-> `c_acctbal` double DEFAULT NULL,
-> `c_mktsegment` char(10) DEFAULT NULL,
-> `c_comment` varchar(117) DEFAULT NULL,
-> PRIMARY KEY (`c_custkey`),
-> KEY `i_c_nationkey` (`c_nationkey`)
-> ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Query OK, 0 rows affected (0.02 sec)
2. 目的服務(wù)器discard tablespace
[root@test-2 dbt3]# ls
db.opt t1.frm t1.ibd
(root@localhost) [dbt3]> alter table t1 discard tablespace;
Query OK, 0 rows affected (0.03 sec)
[root@test-2 dbt3]# ls
db.opt t1.frm
執(zhí)行discared tablespace的作用是刪除了ibd文件,只保留了表結(jié)構(gòu)定義文件察净。
3. 源服務(wù)器鎖表
(root@localhost) [dbt3]> flush tables t1 for export;
Query OK, 0 rows affected (0.01 sec)
另一個(gè)session執(zhí)行:
(root@localhost) [dbt3]> select count(*) from t1;
+----------+
| count(*) |
+----------+
| 150000 |
+----------+
1 row in set (0.03 sec)
鎖住的意思是加共享的鎖。
(root@localhost) [dbt3]> delete from t1 limit 1;
...hang...
4. 拷貝ibd和cfg文件到目的服務(wù)器
拷貝文件先到別的地方叙淌,盡快的釋放讀鎖
[root@test-1 dbt3]# cp t1.cfg t1.ibd /mdata/
(root@localhost) [dbt3]> unlock tables;
Query OK, 0 rows affected (0.00 sec)
釋放掉之后delete返回結(jié)果
(root@localhost) [dbt3]> delete from t1 limit 1;
Query OK, 1 row affected (2 min 43.80 sec)
接下來(lái)拷貝cfg和ibd到目的服務(wù)器的數(shù)據(jù)目錄下互亮。
[root@test-2 dbt3]# ls -ltr
total 40980
-rw-r-----. 1 mysql mysql 67 Feb 7 09:42 db.opt
-rw-r-----. 1 mysql mysql 8850 Feb 7 09:44 t1.frm
-rw-r--r--. 1 root root 41943040 Feb 7 10:47 t1.ibd
-rw-r--r--. 1 root root 893 Feb 7 10:47 t1.cfg
[root@test-2 dbt3]# chown -R mysql:mysql t1.ibd t1.cfg
cfg是校驗(yàn)文件,其實(shí)沒(méi)有也是可以的坪蚁,不對(duì)元數(shù)據(jù)進(jìn)行校驗(yàn)奔穿。如果frm和ibd不一致的話,運(yùn)行的時(shí)候就會(huì)crash.
5. 目的服務(wù)器導(dǎo)入表空間文件
(root@localhost) [dbt3]> alter table t1 import tablespace;
Query OK, 0 rows affected (0.18 sec)
(root@localhost) [dbt3]> select count(*) from t1;
+----------+
| count(*) |
+----------+
| 150000 |
+----------+
1 row in set (0.59 sec)
6. 其他
該特性在5.6引入敏晤,5.7支持分區(qū)表的更細(xì)粒度贱田。