참고 자료
일반적인 백업 및 복원
전체 데이터를 /data/backup/20230620
에 백업하는 예제로 현재 mariadb
내 저장되어 있는 전체 데이터를 복사하는 예제이다.
$ mariadb-backup \ --backup \ --target-dir=/data/backup/20230620/
/data/backup/20230620
에 백업된 데이터로 /data/mariadb_data
로 복구
$ mariadb-backup \ --copy-back \ --target-dir=/data/backup/20230620/ \ --datadir=/data/mariadb_data
복제(replication)환경에서의 백업
복제(replication)환경에서 백업을 할때는 백업 시점의 slave 정보를 포함해야 한다.
백업
$ mariadb-backup \ --backup \ --target-dir=/data/backup/20230620/ \ --slave-info \ --safe-slave-backup
옵션 설명
--slave-info
: 백업을 실행하는 서버가 replication slave
인 경우 이 옵션을 선택하면 master
의 호스트, binary log 파일
및 slave SQL Thread
의 위치를 CHANGE MASTER
구문으로 xtrabackup_slave_info
파일에 기록한다.
--safe-slave-backup
: 백업을 위한 slave SQL Thread
를 중지합니다. 복제를 사용하는 서버에서 mariadb-backup
을 실행할 때 때때로 백업을 차단하는 lock
이 발생할 수 있으나, 이 옵션을 사용하면 slave SQL Thread
를 중지하고 SHOW STATUS
문의 Slave_open_temp_tables
가 0
이 될 때까지 기다립니다. 열려 있는 임시 테이블이 없는 경우 백업이 실행되고, 그렇지 않으면 열려 있는 테이블이 없을 때까지 SQL Thread
가 시작 및 중지 됩니다.
복원
위에 설명한 복원방법으로 복원을 실시 하고 완료 후 xtrabackup_slave_info
파일에 기록된 CHANGE MASTER
구문을 실행하여 복제를 실시합니다.
압축을 사용하여 백업
이 예제는 암호화를 하지 않고 백업을 gzip
으로 압축
$ mariadb-backup \ --backup \ --slave-info \ --safe-slave-backup \ --stream=xbstream | gzip > /data/backup/full_backup.gz
옵션 설명
--stream=xbstream
: 이 옵션을 사용하면 백업된 결과를 stdout
으로 streaming
할 수 있어 널리 사용되는 암호화 및 압축도구를 쉽게 통합 할수 있다.
복원
gzip으로 압축이 되어 있기 때문에 압축을 해제 하고 복구 한다.
$ gunzip -c full_backup.gz | mbstream -x
백업시 압축 성능 향상을 위한 방법
pigz 압축툴을 이용하여 백업과 동시에 데이터를 병렬로 압축
참고 문서
백업
--stream
옵션을 이용하여 백업 데이터를 stdout
으로 보내고 pigz
가 4개의 쓰레드를 사용하여 압축
$ mariadb-backup \ --backup \ --slave-info \ --safe-slave-backup \ --stream=xbstream 2>backup.log | pigz -p 4 > ${backup_dir}/backup.gz
복구(압축 해제)
pigz로 백업된 파일을 복구하기 위해 아래와 같이 압축을 해제한다. 나머지 복구방법은 위의 내용을 참고 한다.
$ pigz -dc -p 4 backup.gz | mbstream -x
-d
: 압축된 입력을 압축해제
-c
: 처리된 모든 출력을 stdout 으로
-p
: n개의 프로세스를 허용
mbstream -x
: 표준 입력의 xbstream
포멧 데이터를 파일로 추출
백업 속도 비교
백업 도구 및 옵션에 따른 Full 백업시 속도 비교
백업 도구 | 압축 여부 | 소요시간 | 실 데이터 사이즈 | 백업 데이터 사이즈 | 비고 |
---|---|---|---|---|---|
mysqldump | O | 약 28분 | 약 79GB | 7.9GB | |
mariadb-backup | X | 약 28분 | 약 79GB | 79GB | |
mariadb-backup | O | 약 50분 | 약 79GB | 17GB | |
mariadb-backup | O | 약 48분 | 약 79GB | 17GB | —parallel=4 옵션 추가 |
mariadb-backup | O | 약 17분 | 약 79GB | 17GB | pigz를 이용한 압축 |
pigz -p 4 옵션 사용 |
복구 속도 비교
복구에 필요한 부가 작업(download, 압축 해제)에 대한 시간은 제외. 순수 복원에 걸리는 시간만 측정
백업 포멧 | 실 데이터 사이즈 | 소요시간 |
---|---|---|
dump | 79GB | 3시간 30분 |
mariadb-backup | 79GB | 21분 |
17GB pigz 압축 파일 압축 해제 소요시간 : 약 11분