본문 바로가기
기초 튼튼탄탄탄/Database

[mysql] XtraBackup으로 mysql 증분(변경분)백업하기

by 잇서니 2020. 2. 5.
반응형

 

 

xtrabackup 툴을 사용하여 mysql DB 증분(변경분) 백업하는 방법을 정리합니다.

 

xtrabackup이란

  • mysql, mariadb 등의 DB 백업에 사용되는 오픈소스이다.
  • mysqldump가 테이블 생성, 데이터 쿼리에 대한 SQL 생성문을 갖는 논리적 백업이라면, XtraBackup은 엔진 데이터를 그대로 복사하는 백업 방식이다.
  • 대용량 백업에는 mysqldump보다 XtraBackup이 더 빠르다.

 

증분백업 (Incremental Backup)이란

  • LSN(log sequence number)개념을 사용한다.
  • 증분백업은 이전 증분백업이나 full backup의 LSN보다 최신(LSN이 더 큰)의 데이터를 복사한다.

 


xtrabackup 설치

# percona repository 다운
yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm

# xtrabackup 패키지 확인
yum list | grep percona-xtrabackup

# xtrabackup 패키지 설치
yum install percona-xtrabackup-24.x86_64 -y

# xtrabackup 패키지 설치 확인
yum list installed | grep percona-xtrabackup

 

xtrabackup 백업용 DB 계정 생성

# 원격 백업용 유저 생성

CREATE USER 'xtrabackup'@'%' IDENTIFIED BY 'xtrabackup@' ;

GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT,SUPER ON *.* TO 'xtrabackup'@'%' ;

FLUSH PRIVILEGES ;

xtrabackup 실행시 권한

xtrabackup 실행유저는

mysql의 DATA_DIR(/var/lib/mysql)에 READ, WRITE, EXECUTE 권한이 필요하다.

백업경로의 READ, WRITE, EXECUTE 권한이 필요하다.


1) full backup

증분백업을 하기 위해서는 반드시 full backup본이 있어야 한다. full backup본을 베이스로 해서 증분백업을 하기 때문이다.

xtrabackup --backup --target-dir=./xtrabackup_0205/base --user=root --password=root

 

2) incremental backup

xtrabackup --backup --target-dir=./xtrabackup_0205/inc1 --incremental-basedir=./xtrabackup_0205/base --user=root --password=root

xtrabackup --backup --target-dir=./xtrabackup_0205/inc2 --incremental-basedir=./xtrabackup_0205/inc1 --user=root --password=root

xtrabackup --backup --target-dir=./xtrabackup_0205/inc3 --incremental-basedir=./xtrabackup_0205/inc2 --user=root --password=root

 

3) apply log

full backup본을 베이스로 하여 증분백업을 적용하는 과정이다. 

xtrabackup --prepare --apply-log-only --target-dir=./xtrabackup_0205/base 

xtrabackup --prepare --apply-log-only --target-dir=./xtrabackup_0205/base --incremental-dir=/root/sunny/xtrabackup_0205/inc1

xtrabackup --prepare --apply-log-only --target-dir=./xtrabackup_0205/base --incremental-dir=/root/sunny/xtrabackup_0205/inc2

 

/root/sunny/xtrabackup_0205/base/xtrabackup_checkpoints 을 확인해보자. 최종적으로 /root/sunny/xtrabackup_0205/inc2/xtrabackup_checkpoints 의 LSN까지 적용된 것을 확인할 수 있다.

 

 

 

 

 

 

 

4) scp

복구를 진행할 DB서버에 백업본을 전송한다. 네트워크 부하를 낮추기 위해 압축한 후 전송하는 것도 고려할만 하다.

scp -r /root/sunny/xtrabackup_0205/base manage1:/root/sunny/xtrabackup_0205/

 

5) restore

복구를 진행할 때는 DB를 중지한다. /var/lib/mysql 경로에 백업파일을 복사하는 과정이다.

service mysqld stop

rm -rf /var/lib/mysql

xtrabackup --copy-back --target-dir=/root/sunny/xtrabackup_0205/base/

chown -R mysql:mysql /var/lib/mysql

service mysqld start

 


추가로 알아볼 것들

  • 백업하는 동안 테이블 lock이 걸리면 어떡하지?
    •  
  • apply log 할 때 매번 full backup본을 읽거나 복사하나? 그렇다면 그 부하를 줄이는 방법은?

 

참고자료

  • percona 공식홈페이지

https://www.percona.com/doc/percona-xtrabackup/2.4/backup_scenarios/incremental_backup.html

 

Incremental Backup

Incremental Backup Both xtrabackup and innobackupex tools supports incremental backups, which means that they can copy only the data that has changed since the last backup. You can perform many incremental backups between each full backup, so you can set u

www.percona.com

 

  • 배달의민족 블로그 (mysqldump vs Xtrabackup)

http://woowabros.github.io/experience/2018/05/28/billingjul.html

 

장애와 관련된 XtraBackup 적용기 - 우아한형제들 기술 블로그

안녕하세요. 우아한형제들에서 빌링시스템을 개발하고 있는 이주현입니다.

woowabros.github.io

 

반응형

댓글