XtraBackup(MariaBackup)에서 Stream 백업시 로깅하기

2021. 7. 16. 09:59IT/S . e . v . e . r . I . n . f . r . a

InnoBackupex의 stream옵션 백업

쉘 스크립트에서 innobackupex를 이용해 백업을 할 때 stream 옵션을 사용할 경우
백업을 표준 출력으로 출력하므로 화면에 출력되는 메세지를 로깅에 사용할 수 없습니다.

몇가지 방법이 있습니다만 첫번째로 script 커맨드를 사용하는 방법입니다.
아래 스크립트에 사용된 커맨드인 pigz는 예전에 작성한 "멀티코어를 이용한 tar 압축"
포스트를 참조 바랍니다.

script -c "innobackupex --defaults-file=/etc/my.cnf \
  --no-lock \
  --user=[데이터베이스 어드민] \
  --password=[데이터베이스 어드민 패스워드] \
  --perallel=2 \
  --stream=tar [백업할 디렉토리] | pigz -p 2 -f > [백업할 디렉토리]/$(date +%Y%m%d).tar.gz" \
  /var/log/[로그를 저장할 디렉토리]/test.log

이 경우 로그 파일을 열어보면 라인의 끝에 ^M 이 붙어 있는 것을 볼 수 있을겁니다.
이것을 없애려고 해보았습니다만 파일이 생성된 이후에 없애는 방법 밖에는 없더군요

표준 에러 재지정

그래서 다른 방법으로 로깅을 하도록 바꾸어 주었는데
백업용으로 쓰이고 있는 표준출력이 아닌 표준에러 재지정을 통해 메세지를 로깅하는 것입니다.

innobackupex --defaults-file=/etc/my.cnf \
  --no-lock \
  --user=[데이터베이스 어드민] \
  --password=[데이터베이스 어드민 패스워드] \
  --perallel=2 \
  --stream=tar [백업할 디렉토리] \
  2> /var/log/[로그를 저장할 디렉토리]/test.log | pigz -p 2 -f > [백업할 디렉토리]/$(date +%Y%m%d).tar.gz

위와 같이 로깅을 하게 되면 라인 뒤에 ^M이 붙지 않은 깨끗한 로그를 확인 할 수 있습니다.

MariaDB의 백업

예전에는 MySQL과 MariaDB 모두 XtraBackup을 통해 백업을 진행할 수 있었으나
현재 MariaDB는 XtraBackup과 거의 모든 사용방법이 동일한 mariadbbackup이라는 툴을 사용해야 합니다.
커맨드와 옵션도 조금 변화가 있는데요 전체적인 형식은 다르지 않습니다.
마리아DB는 아래 스크립트를 참고해주시면 됩니다.

mariabackup --defaults-file=/etc/my.cnf \
  --backup \
  --no-lock \
  --user=[데이터베이스 어드민] \
  --password=[데이터베이스 어드민 패스워드] \
  --perallel=2 \
  --stream=xbstream \
  2>> /var/log/[로그를 저장할 디렉토리]/test.log | pigz -p 2 -f > [백업할 디렉토리]/$(date +%Y%m%d).tgz