xtrabackup 이란?
xtrabackup은 percona 에서 무료로 제공하는 DB 핫 백업 툴입니다.
백업 시 암호화, 압축, 증분 백업 등 많은 기능이 포함되어있어
다양한 백업 정책을 만들 수 있으며, 핫 백업으로 mysqldump보다 빠른 백업 및 복구가 가능합니다.
지원되는 DB는 mysql (5.1, 5.5, 5.6, 5.7), xtraDB 가 있습니다.
xtrabackup 설치 방법
CentOS and RHEL
wget http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
rpm -ivH percona-release-0.1-4.noarch.rpm
yum install percona-xtrabackup-24
Debian and Ubuntu
wget https://repo.percona.com/apt/percona-release_0.1-4.$(lsb_release -sc)_all.deb
sudo dpkg -i percona-release_0.1-4.$(lsb_release -sc)_all.deb
sudo apt-get update
sudo apt-get install percona-xtrabackup-24
xtrabackup 사용법
(테스트 환경이 innodb로 xtrabackup의 innobackupex를 이용하였습니다.)
참고 사항) xtrabackup 기본 설정으로 아래와 같이 설정되어있으니
mysql 설정 파일 경로와 user가 다를경우 해당 옵션을 추가해야 정상적으로 백업이 됩니다.
--defaults-file=/etc/my.cnf
--defaults-group=mysql
전체 백업시
innobackupex --user={DB유저} --password={패스워드} {백업경로}
ex) innobackupex --user=root --password=testpassword9* /home/backup/
경로를 지정하여 사용하고 싶으시다면 --no-timestamp 옵션을 추가하시기 바랍니다.
주의!
--no-timestamp 옵션 사용시 백업하는 대상 경로가 이미 생성되어있을 경우 백업이 진행되지 않으니
경로가 중복되지 않도록 설정해 주시기 바랍니다.
복원 방법
1. 복원 준비
innobackupex --apply-log {full백업 경로}
2. 복원
mysqld 정지 후 mysql datadir 하위에 있는 데이터 삭제 (폴더 지우면 복원이 안됩니다.)
innobackupex 명령어로 백업본 복사
복사 완료 후 mysql 유저 권한 부여
mysqld 시작하여 데이터 확인
# service mysqld stop
# rm -rf {mysql datadir}/*
# innobackupex --copy-back {full백업 경로}
# copy 작업 완료 후 폴더 권한 변경
# chown -R mysql:mysql {mysql datadir}
# service mysqld start
증분백업 방법
전체 백업 진행 후 해당 경로 하위에 있는 xtrabackup_checkpoints 파일의 last_lsn 정보를 불러와 해당 시점부터 증분된 정보를 백업( MyISAM 형식의 테이블은 항상 전체 백업이 진행됩니다.)
사용옵션
--incremental
--incremental-basedir=(증분 대상 백업 폴더)
--incremental-lsn=(lsat_lsn 값)
사용예제
1. 전체 백업 진행
innobackupex --user={DB유저} --password={패스워드} {백업경로}
2. 증분 백업
innobackupex --user={DB유저} --password={패스워드} --incremental --incremental-basedir={전체 백업 경로} {백업 경로}
innobackupex --user={DB유저} --password={패스워드} --incremental --incremental-basedir={이전 증분 백업 경로} {백업 경로}
증분백업 복원 방법
1. 복원 준비
아래와 같이 증분 백업 파일을 전체 백업 파일에 추가하는 작업이 진행되어야합니다.
증분 백업을 합칠때 여러개의 증분 백업이 있다면 순차적으로 추가 작업을 진행하시기 바랍니다.
innobackupex --apply-log --redo-only {전체 백업 경로}
innobackupex --apply-log --redo-only {전체 백업 경로} {증분 백업 경로}
innobackupex --apply-log {전체 백업 경로}
2. 복원
전체 백업 복원하는방법과 동일합니다.
# service mysqld stop
# rm -rf {mysql datadir}/*
# innobackupex --copy-back {full백업 경로}
# copy 작업 완료 후 폴더 권한 변경
# chown -R mysql:mysql {mysql datadir}
# service mysqld start
'데이터베이스' 카테고리의 다른 글
[mysql] too many connections 에러 이유와 해결방안 (0) | 2021.11.25 |
---|---|
MySQL 복제를 이용한 실시간 백업 (0) | 2021.11.25 |
MySQL Replication (마스터-슬레이브 동기화) 설정 (0) | 2021.11.25 |
Windows 에서 mysql root password 변경 (0) | 2021.11.25 |
LVM을 이용한 MySQL 스냅샷 백업 (0) | 2021.11.24 |