xtrabackup 설치

MariaDB와 MySQL의 xtraDB, InnoDB 엔진 기반의 백업 및 복구를 위한 무료 솔루션 입니다.

기본 제공되는 Mysqldump 의 경우는 SQL 기반의 백업 방식이기에  데이터가 커질수록 다소 시간이 오래 걸리는 단점이 있으며, 이를 보안하기기 위한 다체로운 솔루션 들이 있으나, 대부분 라이선스 비용이 비싸므로, 무료로 제공되며, 많이 사용 되는 xtrabackup의 간단한 사용법 및 내용 정리 입니다.

- 유의 사항

1) xtrabackup 의 경우 데이터 파일을 복사하는 방식으로 동작하기에 데이터 파일 사이즈보다 많은 양의 디스크 공간을 차지 합니다.

2) Disk I/O 저하가 발생되므로 DB가 용량이 크고 같은 디스크 내에 백업하기 보다는 별도의 디스크를 사용하여 백업 하는 방안을 추천 합니다.

3) Datadir 에는 데이터베이스용 dir 외의 디렉터리는 백업이 정상적으로 이루어 지지 않습니다.

     예를 들어 innodb homedir와 logdir을 datadir 하위에 별도 디렉터리로 지정할 시에는 해당 디렉터리는 백업이 되나 안의 내용은 백업이 되지 않고 복원 시에도 정상적으로 되지

     않습니다. 일종의 버그로 확인 되고 있습니다.



본 FAQ에서는 많이 사용 되는 옵션과 백업 및 복원에 대해서만 우선 적으로 다루고 있으며, 추후

자세한 옵션 및 사용 법에 대해서 업데이트 예정 입니다.



테스트 환경

OS : CentOS 6.3 (32bit)



RPM 설치 방법

다운로드 URL : http://www.percona.com/downloads/XtraBackup/

사용하는 운영체제에 맞도록 버전과 sofrware 를 선택합니다.



Yum 설치 방법



OS 환경에 맞는 Yum repository 파일을 다운 받아 적용 합니다.

64bit : rpm -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm

32bit : rpm -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-1.i386.rpm



이후 아래와 같이 설치를 진행 합니다.

[root@ home]# yum install xtrabackup



* RPM으로 설치하는 경우 perl-DBD-MySQL 의존성 에러가 발생 할 수 있습니다.

이때는 yum으로 Perl-DBD-MySQL 패키지를 설치하여 줍니다.

(xtrabackup 이 perl로 구동되는 방식이기에 perl 에서 mysql 접근 가능한 모듈 설치가 필요한 부분입니다.)





1) Full Backup



백업의 경우 백업을 할 디렉터리를 지정 후 해당 디렉터리 하위로 백업 진행 날짜/시간 형식으로 백업 됩니다.



우선 백업데이터가 저장될 디렉터리를 만들어 줍니다.



[root@ home]# mkdir mysqlxtra

[root@ home]# innobackupex  --defaults-file=/etc/my.cnf --user root --password '디비암호' /home/mysqlxtra



옵션 설명

--user : DB 접속 유저를 지정 합니다.

--password : DB 접속 유저의 암호를 기입 합니다. (특수문자 등이 포함된 경우 구문에러가 날 수 있으므로

' '로 묶어 기입합니다.)

--no-timestamp : 백업 디렉터리 경로를 직접 기입 할 경우 사용합니다. (본 옵션을 지정하지 않을 시는 날짜/시간 형식의 디렉터리에 백업 됨)

--apply-log : 복원 작업 시 백업 작업을 진행 로그를 적용하기 위해 사용되는 옵션

--defaults-file : my.cnf 파일을 지정 합니다.



위와 같이 명령어 실행 뒤 아래와 같이 작업이 완료 되면 정상적으로 백업이 완료 된 것 입니다.



150507 01:51:10  innobackupex: completed OK!



2) 증분 백업

증분 백업 전 full 백업을 진행 합니다.



증분 백업은 –incremental 옵션으로 할 수 있습니다.

어느 시점부터 백업을 시작할지 LSN(log sequence number)을 지정해야 하며, LSN 전달 방법은 아래와 같은 방법이 있습니다.



LSN(log sequence number) 값을 직접 지정하는 방법

–incremental-lsn=LSN



xtrabackup_checkpoints 파일이 있는 디렉토리를 지정하는 방법

–incremental-basedir=DIR



두 방법 모두 백업 디렉토리 하위의 xtrabackup_checkpoints 파일의 to_lsn 값을 이용하는 것 입니다.

[root@ 2015-05-07_01-51-03]# cat xtrabackup_checkpoints

backup_type = full-backuped

from_lsn = 0

to_lsn = 1595669

last_lsn = 1595669

compact = 0



[root@ 2015-05-07_01-51-03]# innobackupex --incremental-basedir=/home/mysqlxtra/2015-05-07_01-51-03  --user root --password '디비암호' /home/mysqlxtra



증분 백업 시 기존 백업에 합쳐지는 것이 아닌 날짜/시간 디렉터리에 별도로 생성 되므로 복원 시에는이들 데이터를 모두 합쳐야 합니다.



3) 복원

복원 시에는 데이터가 모두 복사되므로 기존의 my.cnf 파일은 복사하여 두고 기존 datadir은 다른 명칭으로 변경 합니다.

[root@ 2015-05-07_01-51-03]# cp /etc/my.cnf /etc/my.cnf_ori

[root@ 2015-05-07_01-51-03]# mv /usr/local/mysql/var /usr/local/mysql/var_origi



my.cnf 파일 상의 datadir 경로와 동일하게 디렉터리 생성 및 권한 변경을 진행 합니다.



[root@ mysql]# mkdir /usr/local/mysql/var

[root@ mysql]# chown -R mysql.mysql /usr/local/mysql/var



백업 진행 된 로그를 적용합니다.

[root@ mysql]# innobackupex --apply-log /home/mysqlxtra/2015-05-07_01-51-03



복원을 진행 합니다.

[root@ mysql]# innobackupex --copy-back /home/mysqlxtra/2015-05-07_01-51-03

* 복원이 진행 될 디렉터리 내에는 어떠한 파일도 있어서는 안됩니다.



데이터 정상 유무를 확인 합니다.



4) 증분 복원

증분 백업을 복원 시에는 --apply-log 옵션과 --redo-only 옵션을 사용하여 증분 백업 디렉터리 순서대로 기존 full backup에 적용 합니다.



[root@ mysql]# innobackupex --apply-log --redo-only  /home/mysqlxtra/2015-05-07_01-51-03

[root@ mysql]# innobackupex --apply-log --redo-only /home/mysqlxtra/2015-05-07_01-51-03 --incremental-dir=/home/mysqlxtra/2015-05-07_01-58                       



복원 방법은 동일 합니다.



[root@ mysql]# innobackupex --apply-log /home/mysqlxtra/2015-05-07_01-51-03

[root@ mysql]# innobackupex --copy-back /home/mysqlxtra/2015-05-07_01-51-03



여기까지 기본적인 xtrabackup 의 사용법을 알아 보았으며, 보다 자세한 사항의 경우 추후 업데이트

예정 입니다.



공식 홈페이지 http://www.percona.com/software/percona-xtrabackup

 댓글

댓글 목록 (0개)