InnoDB 스토리지 엔진 - 투명 테이블 공간 전송
0. Summary
1. ,
2. discard tablespace
3.
4. ibd cfg
5.
6.
1. 목적 서버는 테이블 구조를 원본 서버 구조와 같이 만든다.
####소스 ###
(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. 목적 서버 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
discaredtablespace를 실행하는 역할은 ibd 파일을 삭제하고 테이블 구조 정의 파일만 보존하는 것입니다.
3. 소스 서버 잠금 테이블
(root@localhost) [dbt3]> flush tables t1 for export;
Query OK, 0 rows affected (0.01 sec)
다른 세션 실행:
(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 파일을 목적 서버로 복사
파일을 복사하여 다른 곳으로 가서 가능한 한 빨리 잠금을 해제하다
[root@test-1 dbt3]# cp t1.cfg t1.ibd /mdata/
(root@localhost) [dbt3]> unlock tables;
Query OK, 0 rows affected (0.00 sec)
풀고 delete 결과를 되돌려줍니다.
(root@localhost) [dbt3]> delete from t1 limit 1;
Query OK, 1 row affected (2 min 43.80 sec)
다음은 cfg와 ibd를 목적 서버의 데이터 디렉터리로 복사합니다.
[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는 검사 파일입니다. 사실 없어도 됩니다. 메타데이터를 검사하지 않습니다.frm와 ibd가 일치하지 않으면 실행할 때crash가 발생합니다.
5. 목적 서버 테이블 공간 파일 가져오기
(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은 구역표의 더욱 세밀한 입도를 지원한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.