개발/Database

XtraBackup의 innobackupex을 이용한 streaming 백업

호돌맨 2019. 3. 10. 18:20

xtrabackup에서는 stream 방식을 지원한다. 때문에 다른 프로그램의 표준 입력을 통해 direct하는 기능을 활용할 수 있다.

백업 파일을 gz로 압축하기

gzip대신 압축시 multicore를 지원하는 pigz를 사용하면 좋다.

$ yum install pigz
$ innobackupex \
--no-lock \
--compress \
--compress-threads=$THREAD_COUNT \
--user='$ID' \
--password='$PASSWORD' \
--stream=xbstream ./ | pigz -p $CORE > /PATH/TO/SAVE/NAME.tar.gz

스트림 백업을 Remote로 전송하기

  • -x: xbstream binary를 extract한다.

  • -C: Remote서버의 경로를 지정한다.

$ innobackupex \
--no-lock \
--password='$PASSWORD' \
--stream=xbstream ./ | ssh root@xx.xx.xx.xx "xbstream -x -C /REMOTE/PATH"

압축 + 스트림 백업을 Remote로 전송하기

여기에서 압축은 qpress를 사용한다.

$ yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
$ yum intsall qpress

주의: -x 옵션은 xbstream의 binary extract옵션이다. 압축 해제 옵션이 아니다. 때문에 데이터 복구시 파일을 전송 받은 Remote서버에서 decompress작업이 필요하다.

$ innobackupex \
--no-lock \
--compress \
--compress-threads=$THREAD_COUNT \
--user='$ID' \
--password='$PASSWORD' \
--stream=xbstream ./ | ssh root@xx.xx.xx.xx "xbstream -x -C /REMOTE/PATH"
$ innobackupex \
--decompress \
/REMOTE/PATH

궁금한거

innobackupex에서 제공하는 --parallel 옵션의 정확한 역할을 모르겠다. 파일 복사에 대한 병렬 처리를 지원하는 것 같은데 --decompress옵션이 제공된 경우에만 작동하는건가?..