xtrabackup을 이용한 MySQL 데이터 복구 방법

xtrabackup으로 생성한 압축 백업은 복구 과정에서 별도로 압축을 풀 필요가 없습니다. xtrabackup이 --prepare 옵션을 통해 백업을 준비할 때 자동으로 압축을 해제하고 데이터 일관성을 맞춥니다. 아래는 전체 백업과 증분 백업을 순서대로 복구하는 구체적인 절차입니다.

  1. MySQL 서비스 중지
    데이터 손상을 방지하기 위해 복구 전에 반드시 MySQL을 중지합니다.
service mysql stop
# 또는
systemctl stop mysqld
  1. 전체 백업 준비
    xtrabackup --prepare 명령어로 전체 백업의 트랜잭션 로그를 적용하여 일관된 상태로 만듭니다.
xtrabackup --prepare --target-dir=/data/backup/full_20240317
  1. 증분 백업 순차 적용
    각 증분 백업은 --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
  1. 마지막 증분 백업 로그 적용
    마지막 증분 백업 이후에는 --apply-log-only 없이 --prepare를 실행하여 전체 백업 체인을 완전히 마무리합니다.
xtrabackup --prepare --target-dir=/data/backup/full_20240317
  1. 데이터 디렉터리로 복사
    준비된 백업 파일을 MySQL 데이터 디렉터리로 복사합니다. 복사 전 대상 디렉터리가 비어 있는지 확인하거나 기존 데이터를 백업해 두십시오.
cp -a /data/backup/full_20240317/* /var/lib/mysql/
  1. 파일 소유권 및 권한 설정
    MySQL 사용자가 데이터 파일을 읽고 쓸 수 있도록 소유권을 변경합니다.
chown -R mysql:mysql /var/lib/mysql
  1. MySQL 설정 파일 확인
    /etc/mysql/my.cnf 또는 해당 설정 파일에서 datadir, socket 경로가 올바른지 확인하고 필요시 수정합니다.
  2. MySQL 서비스 시작
    MySQL을 시작하고 로그에서 오류 여부를 점검합니다.
service mysql start
# 또는
systemctl start mysqld
  1. 데이터 무결성 검증
    MySQL에 접속하여 간단한 SELECT 쿼리를 실행하고 데이터가 정상적으로 복구되었는지 확인합니다.

복구 중 문제가 발생하면 xtrabackup의 로그 파일(/data/backup/bak.log, /data/backup/inc_bak_.log)을 참조하여 원인을 분석하십시오. 실제 운영 환경에 적용하기 전에 테스트 환경에서 전체 과정을 검증하는 것을 권장합니다.

태그: xtrabackup MySQL 데이터복구 증분백업

7월 21일 05:00에 게시됨