본문 바로가기
Dev/MySQL

2. XtraBackup 백업과 복구, 그리고 옵션

by 흰바다제비 2022. 6. 29.
728x90

2022.06.26 - [개발/MySQL] - 1. XtraBackup 개요와 설치

 

1. XtraBackup 개요와 설치

XtraBackup은 Percona가 무료로 제공하는 오픈소스 백업 솔루션이다. 데이터 파일을 통째로 특정 디렉토리에 복사하는 물리적인 방식으로 백업한다. mysqldump와 비교하여 백업 / 복구 속도가 빠르다.

dev-kwon.tistory.com

 

목차

 

  • 일반 백업
  • 증분 백업
  • 압축 백업
  • 백업/복구 옵션

 


일반 백업

  • 백업
innobackupex --user=root --password="rootpw" /backup/full_backup
  • 복구
innobackupex --apply-log /backup/full_backup
innobackupex --copy-back /backup/full_backup
systemctl stop mysqld
mv /data/mysql/test_db /data/mysql/test_db_old
innobackupex --copy-back /backup/full_backup
chown mysql:mysql /data/mysql/test_db
systemctl start mysqld

+) 다른 서버에 복구시, 경로가 기존 서버와 다를 경우 테스트DB의 경로에 잘 복구되도록 my.cnf 파일의 위치를 지정해야한다. (defaults-file 옵션이 가장 처음에 오게 작성)

innobackupex --defaults-file=/etc/mysql/my.cnf --copy-back /backup/full_backup


증분 백업

  • 백업
innobackupex --user=root --password="rootpw" --incremental --incremental-lsn=LSN# /backup/incremental_1
혹은
innobackupex --user=root --password="rootpw" --incremental --incremental-basedir=FULLBACKUP_DIR /backup/incremental_1

+) --incremental-lsn 옵션 사용시

xtrabackup_checkpoints 파일에서 LSN 값을 가져온다.
/전체백업/xtrabackup_checkpoints
새로운 증분 백업을 하려면 가장 최근 증분 백업한 디렉토리 하위의 파일을 보면 된다.
/증분백업_1/xtrabackup_checkpoints

 

  • 복구

풀 백업 로그 반영

innobackupex --apply-log --redo-only /backup/full_backup

증분 백업 로그 반영

innobackupex --apply-log --redo-only /backup/full_backup --incremental-dir=/backup/incremental_1
innobackupex --apply-log --redo-only /backup/full_backup --incremental-dir=/backup/incremental_2
innobackupex --apply-log --redo-only /backup/full_backup --incremental-dir=/backup/incremental_3

풀 백업 로그 반영

innobackupex --apply-log /backup/full_backup

풀 백업 복구

innobackupex --copy-back /backup/full_backup

압축 백업

압축 백업시 qpress 설치 필요

  • 백업
innobackupex --user=root --password="rootpw" --compress /backup
  • 복구
innobackupex --decompress /backup/full_backup
innobackupex --apply-log /backup/full_backup
innobackupex --copy-back /backup/full_backup

 


XtraBackup 옵션

--datadir : mysql의 기존 데이터 파일이 존재하는 폴더 경로
--no-lock : 백업 수행시 lock을 걸지 않고 수행
--user : DB 접속 유저 지정
--password : DB 접속 유저의 암호 기입
--no-timestamp : 백업 디렉토리 경로를 기입 (본 옵션 미지정시 날짜/시간 형식의 디렉토리에 백업됨)
--defaults-file : my.cnf 파일의 경로 지정
--incremental-lsn : 증분 백업 수행시 사용. 사용자가 직접 LSN 값 명시
--incremental-basedir : 증분 백업 수행시 사용. 이전에 백업받던 폴더의 위치를 지정하면, 마지막 백업 완료 시점의 LSN 이후부터 증분 백업 수행
--include : 백업 대상 객체 지정
--databases : 백업 대상 데이터베이스 지정
--compress : qpress 설치시 사용 가능. 압축 백업 지원
--compress-threads : --compress 옵션으로 압축 백업시 thread 개수 지정

 

  • 복원 옵션
    --apply-log : 백업이 완료된 후 원하는 로그 파일까지 적용을 하여 변경 내역이 반영되도록 하는 옵션.
    --copy-back : 백업본 파일 경로 지정, 기존에 사용하던 데이터 경로는 rename/remove 하여 비워둬야 한다.
    --redo-only : 백업 과정에서 완료되지 않은 트랜잭션을 롤백하지 않고, redo 만 하도록 설정
    --decompress : --compress 옵션으로 백업한 것을 압축 해제할 때 사용

 

+) --apply-log

로그 반영 : 백업된 리두로그를 다시 실행하면서 백업 중에 발생된 트랜잭션에 대한 일관성을 맞춘다.
다시 실행하는 일이 끝나고 나서도 커밋되지 않은 트랜잭션이 있으면 롤백

> apply-log 옵션은 백업 실행 중에 발생한 시간의 경과에 따른 백업 데이터의 정합성을 보정해주는 역할을 한다.
꼭 백업 직후에 실행할 필요는 없으며, 백업 복구 전에만 1회 실행하면 된다.

728x90

'Dev > MySQL' 카테고리의 다른 글

4. XtraBackup 상황별 스크립트  (0) 2022.07.03
3. XtraBackup Master-Slave 원격 백업  (0) 2022.07.02
1. XtraBackup 개요와 설치  (0) 2022.06.26
[MySQL] OR -> UNION  (0) 2022.06.21
[Oracle / MySQL] NULL 개념, 처리  (0) 2022.06.11

댓글