Linux DB

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

번호 제목 글쓴이 날짜 조회 수
45 innodb 설치 및 옵션 호스트웨이 2014.04.14 23351
44 MySQL에서 Query Cache 사용하기 호스트웨이 2012.12.20 7085
43 mysql-5.5.x 에서 character-set 변경 호스트웨이 2012.12.07 7199
42 phpmyadmin에서 'mcrypt 확장모듈을 불러올 수 없습니다' 에러 시 file 호스트웨이 2012.11.29 6656
41 [MySQL] 무한정 늘어나는 log-bin 파일 줄이기 호스트웨이 2012.11.23 7050
40 [MySQL] 쿼리 한 번으로 데이터베이스 용량 알아내기 file 호스트웨이 2012.11.16 7151
39 mysql 4.0 에서 4.1 다운그레이드 호스트웨이 2012.11.01 6615
38 Client does not support authentication protocol requested by server 메시지 발생 시 호스트웨이 2012.10.18 7603
37 MySQL 설치 시 checking "LinuxThreads"… "Not found" 에러 발생 시 호스트웨이 2012.09.21 11308
36 Mysql에서 log-slow-queries 로그 남기기 호스트웨이 2012.09.21 6808
35 Mysql - mysqldump시 LOCK TABLES 오류 호스트웨이 2012.09.07 25029
34 리눅스에서 MYSQL 데이터 디렉토리 변경 호스트웨이 2012.08.31 20791
33 Mysql slow-query를 이용한 로그 분석 호스트웨이 2012.08.10 27655
32 Mysql - 원격 접속 지연 발생시 호스트웨이 2012.08.03 14013
31 mysql 로그 삭제하기 호스트웨이 2012.07.20 11488
30 MySQL 원격 접속이 이뤄지지 않는다면? 호스트웨이 2012.07.13 10736
29 Mysql banchmark tool – sysbanch 설치하기 호스트웨이 2012.07.06 11543
28 MySQL 테이블 구조만 백업받아두기 호스트웨이 2012.06.29 26825
27 안전한 MySQL 접속하기 file 호스트웨이 2012.06.22 13055
26 chive – phpMyAdmin 보다 좋은 ! 호스트웨이 2012.05.18 10621