이 글은 XtraBackup을 간단하게 소개한 글이고 자세한 사용법은 MySQL 원격 증분 백업 – Percona XtraBackup 이라는 글에서 다루고 있다.
mysql 백업시 보통은 mysqldump를 사용합니다. 하지만 데이터가 커질수록 mysqldump로 백업한 데이터는 복구에 걸리는 시간이 길어집니다.
mysql 서버를 중단시키지 않고 InnoDB 엔진도 핫백업이 가능한 도구로 XtraBackup이라는 오픈소스 프로그램이 있습니다. 소개를 보면 mysql 상용 백업 프로그램인 InnoDB Hot Backup 보다 더 많은 기능을 제공합니다.
XtraBackup은 기본적으로 InnoDB와 XtraDB의 백업을 지원하지만 같이 설치되는 innobackupex 스크립트를 통해서 MyISAM 방식도 백업이 가능합니다. 그리고 직접 해본 결과 ARCHIVE 방식의 DB도 백업되는 것을 확인했습니다.
개인적인 의견인데 이제 MySQL에서 꼭 MyISAM을 써야될 이유가 퇴색했기에 MyISAM을 돌리기 위해서 할당할 자원을 InnoDB에 최적화 시키는게 좋습니다.
XtraBackup은 증분백업도 지원하는데 InnoDB와 XtraDB만 지원합니다. 이런점 때문이라도 MyISAM 보다는 InnoDB를 쓰는게 좋습니다.
이 글에서는 제가 직접 테스트한 전체백업만 소개하겠습니다. 자세한 사용법은 Percona Xtrabackup – Documentation을 참고하시거나 구글링을 통해서 정보를 얻으실 수 있습니다.
XtraBackup의 설치는 데비안, 레드햇 계열 모두 저장소를 제공하고 있으므로 저장소만 추가하면 apt-get, yum으로 쉽게 설치하실 수 있습니다. 각 리눅스 패키지별 저장소 추가 및 설치도 구글링에 맡기겠습니다. ^^
[설치하기]
Automatic Installation
Execute the following command as a root user, replacing x86_64 with i386 if you are not running a 64-bit operating system:
$ rpm -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm
You should see some output such as the following:
Retrieving http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm
Preparing... ########################################### [100%]
1:percona-release ########################################### [100%]
The RPMs for the automatic installation are available at http://www.percona.com/downloads/percona-release/ and include source code.
Manual Installation
To install the repository manually, place the following into a new file named /etc/yum.repos.d/Percona.repo :
[percona] name = CentOS $releasever - Percona baseurl=http://repo.percona.com/centos/$releasever/os/$basearch/ enabled = 1 gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-percona gpgcheck = 1 |
Testing The Repository
Make sure packages are downloaded from the repository, by executing the following command as root:
yum list | grep percona |
percona-release.x86_64 0.0-1 installed
...
Percona-Server-client-51.x86_64 5.1.47-rel11.1.51.rhel5 percona
Percona-Server-devel-51.x86_64 5.1.47-rel11.1.51.rhel5 percona
Percona-Server-server-51.x86_64 5.1.47-rel11.1.51.rhel5 percona
Percona-Server-shared-51.x86_64 5.1.47-rel11.1.51.rhel5 percona
Percona-Server-test-51.x86_64 5.1.47-rel11.1.51.rhel5 percona
...
xtrabackup.x86_64 1.2-22.rhel5 percona
Install with yum
이제 yum을 이용해서 설치해 보겠습니다.
$yum install percona-xtrabackup
설치가 끝났으면 이제 백업을 해 보겠습니다.
[백업하기]
백업은 굉장히 쉽습니다. 아래의 명령으로 풀백업이 가능합니다.
$/usr/bin/innobackupex --user OOOO --password XXXX /백업경로
지정한 백업경로에 /백업경로/년-월-일_시-분-초/ 디렉토리가 생성되며 백업이 됩니다. 자동으로 디렉토리명이 백업시간으로 정해지니까 무척 편리합니다.
다만, 5G정도 백업 받는데 1~2분 정도 소요되며, 사이트 접속이 되지 않을 수 있습니다.
로그파일도 필요하니 함께 백업을 해 두면 좋습니다.
$/usr/bin/innobackupex --user OOOO --password XXXX --apply-log /백업경로/년-월-일_시-분-초
로그파일은 후다닥~~ 작업이 완료됩니다.
[복구하기]
복구도 어렵지 않습니다.
먼저 mysql 서버를 중지시킵니다.
mysql이 데이터를 기록하는 디렉토리를 옮겨놓습니다.(mysql 설정 파일 my.cnf의 datadir 참고)
$ mv /var/lib/mysql /var/lib/mysql-old
다시 빈 디렉토리를 만듭니다.
$ mkdir /var/lib/mysql
아래의 명령어로 복구를 시작합니다.
$ innobackupex –copy-back /백업경로/년-월-일_시-분-초/
저는 6GB의 파일을 복구하는데 5~6분 걸렸습니다.
이걸 mysqldump로 백업한 sql로 복구했다면 수시간이 걸립니다.
복구된 mysql 디렉토리의 권한을 변경합니다. 권한이 맞지 않으면 MySQL Demon이 실행되지 않습니다.
$ chown -R mysql. /var/lib/mysql
마지막으로 mysql을 재시작 합니다.
참고자료: http://www.tekovic.com/mysql-hot-backup-with-xtrabackup-on-centos
'APM' 카테고리의 다른 글
MySQL 원격 증분 백업 – Percona XtraBackup (0) | 2014.07.18 |
---|---|
Mysql InnoDB – 테이블 당 테이블스페이스 사용하기 (0) | 2014.07.18 |
MySQL(InnoDB) Clean shutdown (0) | 2014.07.11 |
GROUP BY의 Filesort 작업 제거 (0) | 2014.07.08 |
[MySQL] 내부 변수 max_allowed_packet (0) | 2014.07.03 |
댓글