본문으로 건너뛰기

MySQL InnoDB 핫백업 및 복구 방법은 무엇인가요?

💡 요약 정리

  • MySQL 서버를 중단하지 않고 InnoDB 데이터를 백업하려면 XtraBackup 도구를 사용합니다.
  • innobackupex 명령어로 데이터 백업 및 복구를 수행합니다.
  • --apply-log, --copy-back 등의 옵션 설정과 경로 지정이 중요합니다.
  • 복구 전 데이터 디렉터리는 반드시 존재해야 하며, 퍼미션도 설정해주어야 합니다.
  • 과정 중 completed OK! 메시지를 확인하여 성공 여부를 판단합니다.

1. 설치 환경

  • CentOS 5.x (64bit)
  • RPM: percona-xtrabackup-2.0.0-417.rhel5
  • MySQL 데이터 디렉토리: /home/mysql/data

2. xtrabackup란?

  • MySQL 서버를 중단시키지 않고 InnoDB 엔진도 핫백업이 가능한 오픈소스 프로그램입니다.
  • MySQL 상용 백업 프로그램인 InnoDB Hot Backup보다 더 많은 기능을 제공합니다.

3. xtrabackup 설치

레포지토리 주소의 rpm을 설치한 후 yum으로 설치합니다.

[root@cafe24]# rpm -Uhv http://www.percona.com/redir/downloads/percona-release/percona-release-0.0-1.x86_64.rpm
Retrieving http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm
Preparing...        ########################################### [100%]
   1:percona-release ########################################### [100%]
[root@cafe24]# yum install xtrabackup

4. 데이터 백업

  • 일반 DB 백업 후 로그 백업을 수행합니다. 경로 지정에 주의해야 합니다.
  • 백업 시 datadir 파라미터가 없다는 에러가 발생할 경우, my.cnf 파일에 datadir=/home/mysql/data 설정이 필요합니다.
[root@cafe24 yum.repos.d]# innobackupex --user root --password xxxxxxxxx /home/DB_BACKUP
InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy
and Percona Inc 2009-2012. All Rights Reserved.
This software is published under
the GNU GENERAL PUBLIC LICENSE Version 2, June 1991.
120524 17:29:42  innobackupex: Starting mysql with options:  --password=xxxxxxxx --user='root' --unbuffered --
120524 17:29:42  innobackupex: Connected to database with mysql child process (pid=22951)
...
120524 17:30:07  innobackupex: completed OK!

백업 후 로그 적용:

[root@cafe24 DB_BACKUP]# innobackupex --user root --password xxxxxxxxx --apply-log /home/DB_BACKUP/2012-05-24_17-29-48
...
120524 17:31:46  innobackupex: completed OK!
[root@cafe24 DB_BACKUP]#

5. 데이터 복구

  1. MySQL 서버 중지
  2. 기존 DB 디렉토리를 백업하거나 이동
  3. 새 데이터 디렉토리 생성
  4. innobackupex를 사용해 복구
  5. MySQL 서버 재시작

복구 디렉토리 없을 경우 발생하는 에러 예시

[root@cafe24 mysql]# innobackupex --copy-back /home/DB_BACKUP/2012-05-24_17-29-48
...
Original data directory does not exist! at /usr/bin/innobackupex line 564.
[root@cafe24 mysql]#

올바른 복구 절차

[root@cafe24 mysql]# mkdir /home/mysql/data
[root@cafe24 mysql]# innobackupex --copy-back /home/DB_BACKUP/2012-05-24_17-29-48
...
innobackupex: completed OK!

6. 권한 설정 및 MySQL 서버 시작

복구 완료 후 아래 명령어로 데이터 디렉토리 권한을 변경하고 MySQL을 시작합니다.

[root@cafe24 mysql]# chown -R mysql.mysql /home/mysql/data
[root@cafe24 mysql]# /etc/rc.d/init.d/mysql start
Starting MySQL....                                   [  OK  ]
[root@cafe24 mysql]#

7. 참고자료