mariadb-backup을 이용한 백업 방법

참고 자료

일반적인 백업 및 복원

전체 데이터를 /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_tables0이 될 때까지 기다립니다. 열려 있는 임시 테이블이 없는 경우 백업이 실행되고, 그렇지 않으면 열려 있는 테이블이 없을 때까지 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 백업시 속도 비교

백업 도구압축 여부소요시간실 데이터 사이즈백업 데이터 사이즈비고
mysqldumpO약 28분약 79GB7.9GB
mariadb-backupX약 28분약 79GB79GB
mariadb-backupO약 50분약 79GB17GB
mariadb-backupO약 48분약 79GB17GB—parallel=4 옵션 추가
mariadb-backupO약 17분약 79GB17GBpigz를 이용한 압축
pigz -p 4 옵션 사용

복구 속도 비교

복구에 필요한 부가 작업(download, 압축 해제)에 대한 시간은 제외. 순수 복원에 걸리는 시간만 측정

백업 포멧실 데이터 사이즈소요시간
dump79GB3시간 30분
mariadb-backup79GB21분

17GB pigz 압축 파일 압축 해제 소요시간 : 약 11분

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다