본문 바로가기
IT/리눅스

마리아디비(MariaDB) 백업 설정

by 라떼야가자 2024. 7. 26.

MariaDB 백업은 mariabackup 명령어를 사용한다. mariabackup으로 풀 백업(전체 백업)과 증분 백업을 할 수 있는데, 풀 백업은 크기가 크기 때문에 일주일에 한 번 정도 실행하고 풀 백업 파일을 기준으로 증분 백업을 매일 실행한다.
이렇게 풀 백업과 증분 백업을 이용하여 하루에 한 번씩 백업을 하고, 실시간으로 binlog를 남기면 장애 발생 시 해당 날짜까지의 데이터는 풀+증분 백업으로 복구한 후 장애 시간까지의 데이터는 binlog를 이용하여 복구하면 된다.
 
여기에서는 mariabackup을 이용한 풀 백업과 증분 백업에 대한 설정 내용을 정리한다.
 
1. 백업 경로 생성

mkdir /data/mariadb/backup
chown mysql:mysql /data/mariadb/backup

 
2. 백업 스크립트 작성
풀 백업 (full backup)
풀 백업을 실행하며 일주일이 지난 파일은 삭제한다. (실제로 8일 또는 9일쯤 될 것이다.)

vi $HOME/full_backup.sh
#!/bin/bash

dir="/data/mariadb/backup/"
target_dir="${dir}full_backup.`date +%Y%m%d`"

/mariadb/bin/mariabackup --defaults-file=/etc/my.cnf --backup --target-dir=${target_dir} \
            --user=root --password=패스워드 --no-lock

find ${target_dir} -type d -mtime +7 -name 'full*' -exec rm -rf {} +;

 
크론에서 실행하기 위해 실행권한을 추가한다.

chmod 755 $HOME/full_backup.sh


증분 백업 (incremental backup)
마지막 풀 백업 기준으로 증분백업을 하고 일주일 이상 지난 파일은 삭제한다.

vi $HOME/incr_backup.sh
#!/bin/bash

dir="/data/mariadb/backup/"
base_dir="`ls -1Artd ${dir}*_backup.*| tail -n 1`"

target_dir="${dir}incr_backup.`date +%Y%m%d`/"
/mariadb/bin/mariabackup --defaults-file=/etc/my.cnf --backup --target-dir=${target_dir} \
            --incremental-basedir=${base_dir} \
            --user=root --password=패스워드 --no-lock

find ${target_dir} -type d -mtime +7 -name 'incr*' -exec rm -rf {} +;

 
크론에서 실행하기 위해 실행권한을 추가한다.

chmod 755 $HOME/incr_backup.sh

 

3. 크론 등록

crontab -e

 
풀 백업: 일주일에 한 번 실행
증분 백업: 하루에 한 번 실행

0 0 * * 6 $HOME/full_backup.sh
0 0 * * * $HOME/incr_backup.sh

 
4. 확인
크론 시간 이후, 스크립트의 $target_dir 내에 파일이 생성되었는지 확인하고, 이상이 있을 경우 /var/log/cron을 확인한다.