XtraBackup
- GPL 라이선스 기반의 백업 오픈소스
- Inno DB,XtraDB 엔진을 사용하는 데이터만 백업이 가능
- Mysqldump는 백업 대상의 데이터베이스의 데이터를 모두 읽어서 문서 형태로 나타내는 논리적 백업으로 많은 시간이 걸리지만,
XtraBackupd은 백업 대상데이터베이스의 데이터 파일을 복사, 백업중 변경 된 데이터 블록은 별도로 백업하는 물리적인 백업 방식
- 서비스트 트랙잭션을 중단 시키지 않고도 데이터 백업을 할 수 있는 핫 백업 소프트 웨어
=> 디렉토리 자체를 복사 하기 때문에 백업 및 복구에 mysqldump 에 비하여 빠르며, innoDB엔진을 적용 한 테이블에 대하여
Lock 을 걸지 않고 백업이 가능하다.
XtraBackup install
설치 OS: Centos 7.0 64bit
아래와 같이 Redhat 계열에서는 Percona yum Repository 등록후 yum 으로 설치 가능하며,
각 OS 버전에 맞춰서 공식 홈페이지에서 다운로드 및 설치가 가능 하다.
## Percona yum Repository 등록 및 설치 진행
[root@node201 ~]# yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
[root@node201 ~]# yum install percona-xtrabackup.x86_64
## 설치된 패키지를 확인 한다.
## Percona yum Repository 등록 및 설치 진행
[root@node201 ~]# yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
[root@node201 ~]# yum install percona-xtrabackup.x86_64
## 설치된 패키지를 확인 한다.
[root@node201 ~]# rpm -qa | grep xtra percona-xtrabackup-2.3.4-1.el7.x86_64 |
## 설치 되면 XtraBackup,innobackupex 등 바이너리 파일이 생성 된다.
XtraBackup은
The xtrabackup binary is a compiled C program that is linked with the InnoDB libraries and the standard MySQL client libraries
로 나와 있으며, C언어로 컴파일 되어 있는 mysql 의 표준 클라이언트 라이브러리로 링크 되어 있다.
가장 큰 장점이자 단점은 백업엔진은 xtraDB,innoDB만 가능 하다.
innobackupex은 man page에서
The innobackupex tool is a Perl script that acts as a wrapper for the xtrabackup C program.
로 나와 있다. 즉 XtraBackup을 포함 하고 있는 perl 스크립트로 XtraBackup의 확장된 스크립트이다. XtraBackup 에 확장 기능을 포함하며,
가장 큰 차이는 XtraBackup는 MyISAM 엔진과 같이 트렌젝션을 지원 하지 않는 엔진의 테이블도 백업이 가능하다.
(perl 스크립트로 인하여 소스 컴파일 설치시 perl 이 의존성으로 설치 되어야 정상적으로 설치 된다.)
## 그외 백업되는 데이터를 암호화,복호화 하는 xbcypt, 백업 결과파일을 묶을 수 있는 xbstream 등이 같이 바이너리 형태로 설치 된다.
※ innobackupex 는 MyISAM 등과 같은 non-inno-DB 엔진백업이 가능 한데 이럴 경우 hot backup 이 불가능 하다,
그렇지 때문에 innodb,xtraD후B 백업후 non-inno-DB 백업시 non-inno-DB에 대한 백업 보장을 위헤 FLUSH TABLES WITH READ LOCK 을 통하여, LOCKING된다.
만약 FLUSH TABLES WITH READ LOCK을 skip 하기 위해서는 --no-lock 옵션을 추가 하여 skip할 수 있다. 이때는 non-inno-DB 엔진의 테이블에 대하여
일관성을 보장 하지 않는다.
innobackupex 전체백업
#innobackupex 명령어를 이용하여 전체 백업을 진행 한다.
#기본적으로 아래와 같이 mysqldump 와 비슷한 형태로 유저와 해당 계정의 비밀번호, 백업 경로를 지정한다.
[root@node201 ~]# innobackupex --defaults-file=/etc/my.cnf --user=root --password='12345' ./backup/
160514 23:54:03 innobackupex: Starting the backup operation
IMPORTANT: Please check that the backup run completes successfully.
At the end of a successful backup run innobackupex
prints "completed OK!".
Can't locate Digest/MD5.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at - line 693.
BEGIN failed--compilation aborted at - line 693.
160514 23:54:03 Connecting to MySQL server host: localhost, user: root, password: set, port: 0, socket: /var/lib/mysql/mysql.sock
Using server version 5.6.30-log
innobackupex version 2.3.4 based on MySQL server 5.6.24 Linux (x86_64) (revision id: e80c779)
xtrabackup: uses posix_fadvise().
xtrabackup: cd to /var/lib/mysql
xtrabackup: open files limit requested 0, set to 1024
... 생략
160514 23:54:05 Backup created in directory '/root/backup//2016-05-14_23-54-03'
MySQL binlog position: filename 'mysql-bin.000004', position '344374'
160514 23:54:05 [00] Writing backup-my.cnf
160514 23:54:05 [00] ...done
160514 23:54:05 [00] Writing xtrabackup_info
160514 23:54:05 [00] ...done
xtrabackup: Transaction log of lsn (2120520) to (2120520) was copied.
160514 23:54:06 completed OK!
# 해당 백업 경로를 확인 하면 백업한 날짜의 디렉토리가 생성 된것을 확인 할 수 있다.
[root@node201 ~]# ls -al ~/backup/
합계 12
drwx------ 3 root root 4096 5월 14 23:54 .
dr-xr-x---. 8 root root 4096 5월 14 23:54 ..
drwx------ 5 root root 4096 5월 14 23:54 2016-05-14_23-54-03
# 해당 디렉토리를 확인 하면 아래와 같은 백업된 파일들을 확인 할 수 있다.
[root@node201 ~]# ls -al ~/backup/2016-05-14_23-54-03/
합계 12328
drwx------ 5 root root 4096 5월 14 23:54 .
drwx------ 3 root root 4096 5월 14 23:54 ..
-rw-r----- 1 root root 387 5월 14 23:54 backup-my.cnf
drwx------ 2 root root 4096 5월 14 23:54 dummy
-rw-r----- 1 root root 12582912 5월 14 23:54 ibdata1
drwx------ 2 root root 4096 5월 14 23:54 mysql
drwx------ 2 root root 4096 5월 14 23:54 performance_schema
-rw-r----- 1 root root 24 5월 14 23:54 xtrabackup_binlog_info
-rw-r----- 1 root root 113 5월 14 23:54 xtrabackup_checkpoints
-rw-r----- 1 root root 496 5월 14 23:54 xtrabackup_info
-rw-r----- 1 root root 2560 5월 14 23:54 xtrabackup_logfile
xtrabackup 전체백업
#xtrabackup도 백업 방법은 유사 하나 해당 target-dir 옵션을 별도로 지정 해줘야 한다.
[root@node201 innobackup]# xtrabackup --defaults-file=/etc/my.cnf --target-dir=./innobackup/ --user=root --password='12345' --backup
# innobackupex 와 다르게 해당 백업 디렉토리를 확인 하면 날짜로 된 디렉토리가 아닌 해당 디렉토리로 아래와 같이 백업 파일이 저장 된다.
[root@node201 innobackup]# ls -al
합계 12328
drwxr-xr-x 5 root root 4096 5월 15 00:39 .
dr-xr-x---. 9 root root 4096 5월 15 00:39 ..
-rw-r----- 1 root root 387 5월 15 00:39 backup-my.cnf
drwx------ 2 root root 4096 5월 15 00:39 dummy
-rw-r----- 1 root root 12582912 5월 15 00:39 ibdata1
drwx------ 2 root root 4096 5월 15 00:39 mysql
drwx------ 2 root root 4096 5월 15 00:39 performance_schema
-rw-r----- 1 root root 24 5월 15 00:39 xtrabackup_binlog_info
-rw-r----- 1 root root 113 5월 15 00:39 xtrabackup_checkpoints
-rw-r----- 1 root root 520 5월 15 00:39 xtrabackup_info
-rw-r----- 1 root root 2560 5월 15 00:39 xtrabackup_logfile
반응형
'database > mysql' 카테고리의 다른 글
pt-table-checksum,sync 를 통한 mysql replication sync 체크 및 조절 (1) | 2016.06.05 |
---|---|
Mysql 5.7 replication (Master-Slave) on Centos7 (0) | 2016.06.04 |
centos7 mysql 5.6 install (0) | 2016.06.04 |
mysqldump 를 통한 mysql 백업,복구 (0) | 2016.05.23 |
FreeTDS 를 이용한 php mssql (WhatsUp 데이터 가져오기) (0) | 2016.02.10 |