2015년 1월 15일 목요일

MySQL (증분) 백업을 위한 XtraBackup 설치 및 사용

[comment]


가상 머신에서 테스트 실시 (Mac + Parallels(CPU 1, 메모리 1G, CentOS6.6 + MySQL 5.5)

dump 파일 약 1.1G를 DB에 import하는 경우 about 2분 38초 소요, DB를 export하는데 about 2분 소요
Xtrabackup을 이용한 백업 및 복원 각각 약 10~20초 소요
백업시간이나 복원 시간도 매우 우수

업무에 참고 바랍니다.



[설치]


## repository 추가 ##



## install ##

[root@localhost ~]# yum install xtrabackup


## 백업 디렉토리 생성 ##

[root@localhost ~]# mkdir /home/mysqlbackup/



[백업]

## timestamp 사용 ##

[root@localhost ~]# /usr/bin/innobackupex --user 사용자아이디 --password 비밀번호 /home/mysqlbackup


## 백업 확인 ##

[root@localhost ~]# ls -al /home/mysqlbackup/
합계 12
drwxr-xr-x  3 root root 4096 2015-01-14 23:14 .
drwxr-xr-x. 5 root root 4096 2015-01-14 23:12 ..
drwxr-xr-x  6 root root 4096 2015-01-14 23:14 2015-01-14_23-14-48


## 백업 (timestamp를 사용하지 않고 명시적으로 파일명 부여) ##

[root@localhost ~]# /usr/bin/innobackupex --user  사용자아이디  --password 비밀번호  --no-timestamp /home/mysqlbackup/full_backup


## 백업된 log sequence number (LSN) 확인 ##

[root@localhost ~]# cat /home/mysqlbackup/full_backup/xtrabackup_checkpoints
backup_type = full-backuped
from_lsn = 0
to_lsn = 1605114
last_lsn = 1605114
compact = 0


## 증분백업 (1차) ##
[root@localhost ~]# /usr/bin/innobackupex --user 사용자아이디 --password 비밀번호 --incremental --incremental-lsn=1605114 --no-timestamp /home/mysqlbackup/incremental_1606114


## 증분백업 LSN 확인 ##

[root@localhost mysqlbackup]# cat /home/mysqlbackup/incremental_1606114/xtrabackup_checkpoints
backup_type = incremental
from_lsn = 1605114
to_lsn = 1622319
last_lsn = 1622319
compact = 0


## 증분백업 (2차) ##

[root@localhost ~]# /usr/bin/innobackupex --user 사용자아이디  --password 비밀번호  --incremental --incremental-lsn=1622319 --no-timestamp /home/mysqlbackup/incremental_1622319



[복원]


/* 전체 백업한 것을 복원
 * 증분까지 복원하고 싶으면, 전체백업과 증분을 합한후 복원
 * 복원하는 경우 당연히 mysql 중지 및 만약을 위해 my.cnf의 datadir을 변경하여 복원
 */


## mysql중지 ##

[root@localhost ~]# service mysqld stop



## 복원용 디렉토리 생성 ##

[root@localhost ~]# mkdir /var/lib/mysql_restore


## my.cnf  수정 ##

[mysqld]
datadir=/var/lib/mysql_restore


## 전체백업 복원 ##

[root@localhost ~]# /usr/bin/innobackupex --apply-log /home/mysqlbackup/full_backup
[root@localhost ~]# /usr/bin/innobackupex --copy-back /home/mysqlbackup/full_backup


## 전체백업 확인 (복원된 디렉토리의 권한 확인 할것) ##

[root@localhost ~]# service mysqld start


## 증분백업 복원 ##
/* 전체 백업과 증북 합치기위 전체 백업을 --redo-ony 적용 */

[root@localhost ~]# /usr/bin/innobackupex --apply-log --redo-only /home/mysqlbackup/full_backup



## 증분한 순서대로 합치기 ##
# 합치면 전체 백업에 증분 백업이 포함된다. (증분 백업 파일은 필요 없다)

[root@localhost ~]# /usr/bin/innobackupex --apply-log --redo-only /home/mysqlbackup/full_backup -incremental-dir /home/mysqlbackup/incremental_1606114

[root@localhost ~]# /usr/bin/innobackupex --apply-log --redo-only /home/mysqlbackup/full_backup -incremental-dir /home/mysqlbackup/incremental_1622319



## 합친 전체 백업 LSN 확인 ##
[root@localhost mysql_restore]# cat /home/mysqlbackup/full_backup/xtrabackup_checkpoints
backup_type = full-prepared
from_lsn = 0
to_lsn = 1628142
last_lsn = 1628142
compact = 0


## 전체 백업 복원과 동일 ##

댓글 없음:

댓글 쓰기