플랫폼 개발팀 기술 블로그

MariaDB : Xtrabackup 편 본문

Article

MariaDB : Xtrabackup 편

DevStream 2019. 1. 25. 13:00

Data Backup


DB 데이터를 다루다 보면 데이터의 양이 많아지거나 필요에 의해 백업을 해야 하는 상황이 발생하게 된다.

우선 MariaDB, MySql에서는 백업 솔루션으로Mysqldump 기본으로 제공하고 있고 다양한 dump 옵션을 제공하고 있어 많이 사용되고 있다.


         


백업이라는것은 앞으로 생길수도 있는 어떠한 상황을 대비하기 위한 하나의 과정이다.

데이터를 보관한다는것을 기본 전제로 깔고 들어가고 여기에 안전하게, 신속하게 등 여러가지 옵션이 붙을 수 있다.




Xtrabackup


Xtrabackup은 MySql과 MariaDB에서 사용 할 수 있는 무료 백업 솔루션이다.

일반적인 환경이라면 기본 제공되는 Mysqldump로도 충분히 백업/복구 기능을 수행 할 수 있지만 백업 해야하는 데이터의 용량이 수십에서 수백 기가바이트급이면 이야기가 많이 달라진다. 때문에 대용량 백업 및 복원에 높은 퍼포먼스를 낼 수 있고 무료인 Xtrabackup이 많이 사용되고 있다.



Mysqldump와의 차이는 Mysqldump가 논리적 백업이라면 Xtrabackup은 물리적 백업이라고 볼 수 있다.

마치 건물 도면과 모든 재료를 하나하나 떼어내서 그대로 복원 할 수 있게 보관하는것과 건물을 통째로 복사해서 똑같이 만들어둔 것을 보관하는 느낌적인 느낌이라고 할 수 있다.




Xtrabackup 설치


이번 Xtrabackup편 에서는 Xtrabackup를 설치하고 백업 및 복구를 실습 해보는 시간을 가질 것이다.

CentOS 7.5.1804, MariaDB 10.1.37 환경에서 진행 되었다.


우선 Xtrabackup은 MariaDB에서 기본 제공되는 패키지가 아니므로 다운로드 받도록 하자

백업 시 압축 기능을 사용하려면 QPress 패키지도 같이 받도록 한다.


# yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm # yum install yum install percona-xtrabackup-24 # yum install qpress




Xtrabackup 전체 백업


압축 명령을 실행하여 MariaDB의 전체 데이터를 압축한다.


# innobackupex --defaults-file=/etc/my.cnf \ --no-lock \ --user=root \ --password='password' /root/backup/xtrabackup/


MariaDB의 전체 데이터를 압축한다.


# cd /root/backup/xtrabackup/2019-01-25_14-41-10/ # ls -l -rw-r-----. 1 root root 409 1월 25 14:41 backup-my.cnf.qp -rw-r-----. 1 root root 183071 1월 25 14:41 ibdata1.qp drwxr-x---. 2 root root 4096 1월 25 14:41 mysql drwxr-x---. 2 root root 4096 1월 25 14:41 performance_schema drwxr-x---. 2 root root 4096 1월 25 14:41 test -rw-r-----. 1 root root 113 1월 25 14:41 xtrabackup_checkpoints -rw-r-----. 1 root root 510 1월 25 14:41 xtrabackup_info.qp -rw-r-----. 1 root root 530 1월 25 14:41 xtrabackup_logfile.qp




Xtrabackup 복원준


복원을 위해 QPress파일의 압축을 풀어준다.


# innobackupex --decompress /root/backup/xtrabackup/2019-01-25_14-41-10/


복원 전 데이터 일관성을 위하여 트랜젝션 로그파일을 적용하고 mariadb 서비스를 종료한다.


# innobackupex --defaults-file=/etc/my.cnf --apply-log /root/backup/xtrabackup/2019-01-25_14-41-10/ # systemctl stop mariadb # cp -r /var/lib/mysql/ /root/backup/mariadb/20181214/ # rm -rf /var/lib/mysql/*




Xtrabackup 데이터 복원


복원명령을 실행하여 데이터 복원을 진행 후 mariadb 서비스를 시작한다.


# innobackupex --defaults-file=/etc/my.cnf --datadir=/var/lib/mysql/ --copy-back /root/backup/xtrabackup/2019-01-25_14-41-10/ # chown -R mysql:mysql /var/lib/mysql/* # systemctl start mariadb


복원명령을 실행 후 파일이 제대로 복구 되었는지 확인한다.


# cd /var/lib/mysql/ # ls -l -rw-rw----. 1 mysql mysql 8192 1월 25 14:56 aria_log.00000001 -rw-rw----. 1 mysql mysql 52 1월 25 14:56 aria_log_control -rw-r-----. 1 mysql mysql 50331648 1월 25 14:56 ib_logfile0 -rw-r-----. 1 mysql mysql 50331648 1월 25 14:56 ib_logfile1 -rw-r-----. 1 mysql mysql 12582912 1월 25 14:56 ibdata1 -rw-r-----. 1 mysql mysql 12582912 1월 25 14:56 ibtmp1 -rw-rw----. 1 mysql mysql 5 1월 25 14:56 localhost.pid -rw-rw----. 1 mysql mysql 0 1월 25 14:56 multi-master.info drwxr-x---. 2 mysql mysql 4096 1월 25 14:56 mysql srwxrwxrwx. 1 mysql mysql 0 1월 25 14:56 mysql.sock drwxr-x---. 2 mysql mysql 4096 1월 25 14:56 performance_schema -rw-rw----. 1 mysql mysql 24576 1월 25 14:56 tc.log drwxr-x---. 2 mysql mysql 4096 1월 25 14:56 test -rw-r-----. 1 mysql mysql 532 1월 25 14:56 xtrabackup_info -rw-r-----. 1 mysql mysql 1 1월 25 14:56 xtrabackup_master_key_id



MariaDB : Xtrabackup 편

끝.


Comments