xtrabackup으로 생성한 압축 백업은 복구 과정에서 별도로 압축을 풀 필요가 없습니다. xtrabackup이 --prepare 옵션을 통해 백업을 준비할 때 자동으로 압축을 해제하고 데이터 일관성을 맞춥니다. 아래는 전체 백업과 증분 백업을 순서대로 복구하는 구체적인 절차입니다.
- MySQL 서비스 중지
데이터 손상을 방지하기 위해 복구 전에 반드시 MySQL을 중지합니다.
service mysql stop
# 또는
systemctl stop mysqld
- 전체 백업 준비
xtrabackup --prepare 명령어로 전체 백업의 트랜잭션 로그를 적용하여 일관된 상태로 만듭니다.
xtrabackup --prepare --target-dir=/data/backup/full_20240317
- 증분 백업 순차 적용
각 증분 백업은 --apply-log-only 옵션을 사용하여 전체 백업에 순서대로 병합합니다. 첫 번째 증분 백업을 적용합니다.
xtrabackup --prepare --apply-log-only --target-dir=/data/backup/full_20240317 --incremental-dir=/data/backup/inc1_20240318
두 번째 증분 백업이 존재하는 경우, 동일한 방식으로 추가 적용합니다.
xtrabackup --prepare --apply-log-only --target-dir=/data/backup/full_20240317 --incremental-dir=/data/backup/inc2_20240319
- 마지막 증분 백업 로그 적용
마지막 증분 백업 이후에는 --apply-log-only 없이 --prepare를 실행하여 전체 백업 체인을 완전히 마무리합니다.
xtrabackup --prepare --target-dir=/data/backup/full_20240317
- 데이터 디렉터리로 복사
준비된 백업 파일을 MySQL 데이터 디렉터리로 복사합니다. 복사 전 대상 디렉터리가 비어 있는지 확인하거나 기존 데이터를 백업해 두십시오.
cp -a /data/backup/full_20240317/* /var/lib/mysql/
- 파일 소유권 및 권한 설정
MySQL 사용자가 데이터 파일을 읽고 쓸 수 있도록 소유권을 변경합니다.
chown -R mysql:mysql /var/lib/mysql
- MySQL 설정 파일 확인
/etc/mysql/my.cnf 또는 해당 설정 파일에서 datadir, socket 경로가 올바른지 확인하고 필요시 수정합니다. - MySQL 서비스 시작
MySQL을 시작하고 로그에서 오류 여부를 점검합니다.
service mysql start
# 또는
systemctl start mysqld
- 데이터 무결성 검증
MySQL에 접속하여 간단한 SELECT 쿼리를 실행하고 데이터가 정상적으로 복구되었는지 확인합니다.
복구 중 문제가 발생하면 xtrabackup의 로그 파일(/data/backup/bak.log, /data/backup/inc_bak_.log)을 참조하여 원인을 분석하십시오. 실제 운영 환경에 적용하기 전에 테스트 환경에서 전체 과정을 검증하는 것을 권장합니다.