리눅스 Snippet - Mariadb Xtrabackup을 이용한 백업 및 복구

  • 풀 백업 및 풀 복원 기준입니다.

1. Xtrabackup 백업

  • 2.4.12 기준 백업 명령어
$ xtrabackup --backup --target-dir=<저장디렉토리 위치>

2. Xtrabackup 복원

  • MariaDB 또는 Mysql 서비스 정지

  • 먼저 prepare가 필요하다.
  • prepare 작업은 운용중인 데이터베이스 백업과정에서 발생하는 data파일과 log파일의 차이를 보정해준다.
$ xtrabackup --prepare --target-dir=<백업파일 위치>
  • prepare 완료 후 실제 복원
$ xtrabackup --copy-back --target-dir=<백업파일 위치>
  • 복원한 파일의 소유자 변경
  • Mariadb 기본 데이터 파일 위치는 /var/lib/mysql이나 Mariadb 설정에 따라 다르다.
$ chown mysql:mysql -R <복원한 데이터파일 위치>
  • CentOS 7의 경우 SELinux 관련 설정이 필요하다.
$ getenforce
$ semanage fcontext -a -t mysqld_db_t "변경디렉토리(/.*)?"
$ restorecon -Rv 변경디렉토리
$ chcon -R -u system_u -r object_r -t mysqld_db_t 변경디렉토리
$ ls -lh -Zd 변경디렉토리
  • /usr/lib/systemd/system/mariadb.service 파일에서 ProtectSystem, ProtectHome 의 값을 false로 변경한다.

  • 서비스 시작

$ systemctl start mariadb