>  기사  >  데이터 베이스  >  물리적 방법을 통해 MySQL에서 단일 테이블을 복원하는 방법을 교육합니다.

물리적 방법을 통해 MySQL에서 단일 테이블을 복원하는 방법을 교육합니다.

藏色散人
藏色散人앞으로
2023-01-22 08:30:021780검색

이 기사에서는 MySQL에 대한 관련 지식을 제공하며 물리적 방법을 사용하여 MySQL에서 단일 테이블을 빠르게 복원하는 방법을 소개하고 단계별로 설명합니다. 함께 살펴보시고, 모두에게 도움이 되었으면 좋겠습니다.

물리적 방법을 통해 MySQL에서 단일 테이블을 복원하는 방법을 교육합니다.

Usage

1. 먼저 테스트 테이블 test1을 생성하고 여러 데이터 조각을 삽입합니다.

mysql> create table test1 (id int auto_increment primary key,name varchar(20));
Query OK, 0 rows affected (0.05 sec)

mysql> insert into test1 (name) values ('张三'),('李四'),('王二');
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from test1;
+----+--------+
| id | name   |
+----+--------+
|  1 | 张三   |
|  2 | 李四   |
|  3 | 王二   |
+----+--------+
3 rows in set (0.00 sec)

2 대상 테이블 test2를 생성합니다.

mysql> create table test2 like test1;
Query OK, 0 rows affected (0.10 sec)
查看数据目录里面的ibd文件(test2.ibd、test1.ibd):
-rw-r-----. 1 * * 114688 Nov  2 16:20 test1.ibd
-rw-r-----. 1 * * 114688 Nov  2 16:23 test2.ibd

3 테이블 변경을 통해 test2의 IDB를 삭제합니다. method File(test1의 데이터 복사의 다음 단계를 준비하기 위해):

mysql> alter table test2 discard tablespace;   
Query OK, 0 rows affected (0.02 sec)

查看ibd文件情况,发现test2的ibd文件已经被删除

-rw-r----- 1 * * 114688 Nov  2 16:20 test1.ibd

4. 다음 명령을 실행하여 test1의 cfg 파일을 생성합니다.

mysql> flush table test1 for export; 
Query OK, 0 rows affected (0.00 sec)

生成了一个test1.cfg的cfg文件

-rw-r----- 1 * *    655 Nov  2 16:25 test1.cfg
-rw-r----- 1 * * 114688 Nov  2 16:20 test1.ibd

5. 소스 테이블 test1을 대상 테이블 test2로 수정하고 파일 권한을 수정합니다.

cp test1.cfg test2.cfg
cp test1.ibd test2.ibd
chown -R mysql.mysql test2.*

6. 복사가 완료된 후 select 명령을 실행하고 다음 오류를 찾습니다.

mysql> select * from test2;
ERROR 1100 (HY000): Table 'test2' was not locked with LOCK TABLES

7. 잠금 해제 테이블을 실행하고 test1을 해제합니다. cfg 파일을 가져온 다음 ibd 파일을 가져옵니다.

mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)

并用alter table的方法为目标表test2导入这个ibd文件:

mysql> alter table test2 import tablespace; 
Query OK, 0 rows affected (0.03 sec)
1 row in set (0.00 sec)

8. select를 다시 실행하여 데이터가 가져온 것을 확인합니다.

mysql> select * from test2;
+----+--------+
| id | name   |
+----+--------+
|  1 | 张三   |
|  2 | 李四   |
|  3 | 王二   |
+----+--------+
3 rows in set (0.00 sec)

물리적 복사 방법 소개

위 단일 테이블 물리적 복사의 핵심 방법은 cp 명령에 있습니다. 물리적 복사를 통하기 때문에 복사된 테이블이 매우 크면 pass 물리적 복사가 select 문에 삽입하는 등의 논리적 SQL 작성보다 훨씬 빠릅니다.

简单总结一下上述物理复制过程:
  • 1. 동일한 테이블 구조로 빈 대상 테이블을 생성하려면 구문과 같은 테이블을 생성하세요
  • 2. 대상 테이블에서 alter table destroy를 실행하고 ibd 파일을 삭제합니다.
  • 3. 소스 테이블을 사용하여 .cfg 파일을 생성하고 테이블을 잠급니다
  • 4. cp 명령을 사용하여 소스 테이블의 cfg 파일과 ibd 파일을 대상 테이블에 복사합니다
  • 5. 테이블 잠금을 해제하면 cfg 파일이 해제되고 잠금이 해제됩니다. source table
  • 6. alter table import 명령은 대상 테이블 데이터 파일의 ibd를 가져옵니다.

내보내기 구문 소개를 위한 테이블 변경:

  • 1 이 명령은 데이터가 binlog에 기록될 수 있도록 메모리에 있는 이 테이블에 대한 데이터를 새로 고치는 것입니다.
  • 2. 테이블 또는 다시 로드 권한
  • 3. 이 작업은 현재 테이블의 공유 MDL 잠금을 유지하여 다른 세션이 테이블 구조를 수정하는 것을 방지합니다. FOR EXPORT 작업이 완료되면 이전에 획득한 MDL 잠금이 해제되지 않으며 필요합니다. 4. InnoDB 테이블과 동일한 데이터베이스 디렉터리에 table_name.cfg라는 파일이 생성됩니다. 5. 테이블 복사를 처리한 후 UNLOCK 테이블을 사용하여 소스 테이블의 MDL 잠금을 해제해야 합니다. 연결을 끊습니다.
  • 참고:
  • alter table for import는 테이블을 잠그기 때문에 슬레이브 데이터베이스에서 복제 관계를 중지한 후 테이블 복제 작업을 수행하는 데 이 방법이 더 적합합니다. 현재 소스 테이블에 비즈니스 작업이 있는 경우 신중한 고려가 필요합니다.

추천 학습: "

MySQL 비디오 튜토리얼

"

위 내용은 물리적 방법을 통해 MySQL에서 단일 테이블을 복원하는 방법을 교육합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제