xtrabackup 으로 풀백업을 받고 copy/move back 으로 복구를 하려면
기존 데이터파일들을 삭제 해야 한다.
혹시나 필요할 경우를 대비해서 삭제하지 않고 mv 로 보관해 둘수도 있는데
그런 경우 나중에 데이터파일 하나를 가져와서 복구를 할수도 있다.
데이터파일을 cp 로 가져와서 복구하는 테스트를 해보자.
1. 테스트 시나리오
0) xtrabackup prepare 까지 완료
1) xtrabackup copy back 전 mv 로 백업
2) copy-back
3) 빈테이블 생성 후 discard
=> create table imp_test;
alter table imp_test discard tablespace;
4) mv 로 복구 & import tablespace
=> alter table imp_test import tablespace;
그냥 데이터파일을 가져올경우 DB 에서 인식을 못해서 discard & import 과정을 거쳐줘야 한다.
import 명령을 실행하면 아래 과정이 일어난다.
2. import 명령시 내부 프로세스
1) 메타데이터 잠금 (Metadata Lock, MDL)
테이블의 구조(정의)를 확정 짓고, 다른 세션이 해당 테이블을 수정하거나 읽지 못하게 잠금
2) 파일 유효성 검사 및 정합성 체크
.ibd 파일을 데이터 디렉터리로 복사한 후 IMPORT를 지시하면, InnoDB 엔진은 아래 작업을 수행
Schema Mismatch 체크: .cfg 파일(메타데이터)을 읽어 현재 생성된 테이블 정의와 실제 .ibd 파일 내의 정보 대조
Tablespace ID 갱신: 복구파일의 내부 Tablespace ID를 현재 서버의 데이터 딕셔너리에 등록된 ID와 일치하게 파일 헤더 수정
Dirty Pages 플러시: 가져오려는 테이블 공간과 관련된 기존 캐시 데이터를 정리
3) 페이지 레벨의 LSN(Log Sequence Number) 조정
가장 시간이 많이 걸리고 부하가 큰 작업
가져온 .ibd 파일 내의 모든 데이터 페이지에는 이전 서버에서 쓰던 LSN 정보가 담겨 있다.
MySQL은 이 페이지들을 하나하나 읽으며 현재 서버의 시스템 LSN에 맞게 재작성하는 과정을 거침
메타데이터만 변경하는 과정이 아니고 모든 트랜잭션이 멈추고, (작업대상 테이블의) 모든 page 를 검사한다.
전체 디비를 사용할수 없으니 작업전 신중해야 한다.
'생계 > MySQL' 카테고리의 다른 글
| mysql xtrabackup 설치 사용법 (0) | 2025.12.08 |
|---|---|
| mysql cli 자동완성 취소 (0) | 2025.11.28 |
| percona toolkit pt-online-schema-change 설치 및 사용하기 (0) | 2025.11.23 |
| mysql collate 종류와 변경 방법 (0) | 2025.11.13 |
| mysql 데이터 이관 방법들 (0) | 2025.11.06 |

