DataBase/Maria DB

[DB/AWS] MariaDB Mariabackup을 이용한 백업 스케쥴 설정 2

Trillion Binary 2023. 2. 9. 13:30
SMALL
지난 https://trillion-binary.tistory.com/55 에서는 개념 위주로 설명했다면
이번 게시글에서는 직접 셋팅했던 코드를 중심으로 설명드리겠습니다.
먼저 설정할 DB서버인
AWS EC2 인스턴스에 SSH 접속을 합니다.

mariabackup 프로그램을 설치합니다.

# mariabackup 설치 및 확인
sudo yum install MariaDB-backup
 
# 설치 완료 확인
mariabackup --version
 

AWS CLI 환경설정을 해줍니다.

# AWS S3 저장소 셋팅
 
# aws 설치 확인
aws --version 
 
# aws 초기 설정 (super 계정 권한으로)
sudo aws configure
 
access key id  : [ACCESS_KEY]    # 접근 코드는 담당 부서에 문의
secret access key : [SECRET_KEY] # 접근 코드 유출 금지
region name : ap-northeast-2
output format : json
 
# s3 저장소 연결 확인
sudo aws s3 ls
 
백업할 타겟 디렉토리 폴더 구성 및 생성을 합니다.
# 각 경로에 디렉토리 폴더 생성
 
mkdir -p ~/backup-sh
sudo mkdir -p /ddrive/db-backup/fullbackup
sudo mkdir -p /ddrive/db-backup/increbackup
sudo mkdir -p /ddrive/db-backup/last-checkpoint
sudo mkdir -p /ddrive/db-backup/log/fullbackup
sudo mkdir -p /ddrive/db-backup/log/increbackup
 
# 로그 폴더 쓰기권한 추가 
sudo chmod 757 -R  /ddrive/db-backup/log

 

 

전체 백업 스크립트 작성

# fullbackup 스크립트 생성
vi ~/backup-sh/fullbackup.sh
YEAR=$(date '+%Y')
MONTH=$(date '+%m')
DATE=$(date '+%Y%m%d')
 
echo "MariaDB FullBackup initialized."
 
# 해당 기간 경로 생성
sudo mkdir -p /ddrive/db-backup/fullbackup/${YEAR}/${MONTH}/${DATE}
 
# DB 전체 백업 실행
sudo rm -rf /ddrive/db-backup/fullbackup/${YEAR}/${MONTH}/${DATE}/*
sudo mariabackup --backup --target-dir=/ddrive/db-backup/fullbackup/${YEAR}/${MONTH}/${DATE}/ --user=DEV --password=[PASSWORD]
 
# 백업 파일 READ 권한 부여
sudo chmod +r -R /ddrive/db-backup/fullbackup/${YEAR}/${MONTH}/${DATE}
 
# last-checkpoint로 최신 체크포인트 복사
sudo rm -rf /ddrive/db-backup/last-checkpoint/*
sudo cp -r /ddrive/db-backup/fullbackup/${YEAR}/${MONTH}/${DATE}/* /ddrive/db-backup/last-checkpoint/
 
# AWS S3 저장소 백업파일 업로드 : db-backup-s3
sudo aws s3 cp /ddrive/db-backup/fullbackup/${YEAR}/${MONTH}/${DATE}/ s3://db-backup-s3/test-db/fullbackup/${YEAR}/${MONTH}/${DATE}/ --recursive
 
echo "MariaDB FullBackup Done."
# 스크립트 저장 후 실행권한 부여
chmod 766 ~/backup-sh/fullbackup.sh
 
#실행 테스트
./fullbackup.sh
 

증분 백업 스크립트 작성

# 증분 백업 스크립트 생성
vi ~/backup-sh/increbackup.sh
YEAR=$(date '+%Y')
MONTH=$(date '+%m')
DATE=$(date '+%Y%m%d')
 
echo "MariaDB Incremental Backup initialized."
 
# 해당 연월의 경로 생성
sudo mkdir -p /ddrive/db-backup/increbackup/${YEAR}/${MONTH}/${DATE}
 
# DB 증분 백업 실행
sudo rm -rf /ddrive/db-backup/increbackup/${YEAR}/${MONTH}/${DATE}/*
sudo mariabackup --backup --target-dir=/ddrive/db-backup/increbackup/${YEAR}/${MONTH}/${DATE}/ --incremental-basedir=/ddrive/db-backup/last-checkpoint --user=DEV --password=
[PASSWORD]
 
# 백업 파일 READ 권한 부여
sudo chmod +r -R /ddrive/db-backup/increbackup/${YEAR}/${MONTH}/${DATE}
 
# last-checkpoint로 최신 파일 복사
sudo rm -rf /ddrive/db-backup/last-checkpoint/*
sudo cp -r /ddrive/db-backup/increbackup/${YEAR}/${MONTH}/${DATE}/* /ddrive/db-backup/last-checkpoint/
 
# AWS S3 저장소 백업파일 업로드 : db-backup-s3
sudo aws s3 cp /ddrive/db-backup/increbackup/${YEAR}/${MONTH}/${DATE}/ s3://db-backup-s3/test-db/increbackup/${YEAR}/${MONTH}/${DATE}/ --recursive
 
echo "MariaDB Incremental Backup Done."
# 스크립트 저장 후 실행권한 부여
chmod 766 ~/backup-sh/increbackup.sh

스케쥴러 등록 Crontab

# 스케쥴 등록
crontab -e
 
# MariaDB Full Backup Upload 매주 월요일 새벽 3시 30분  실행
30 3 * * 1 /home/ec2-user/backup-sh/fullbackup.sh >> /ddrive/db-backup/log/fullbackup/`date "+\%Y\%m\%d"`.txt 2>&1
 
# MariaDB Incremental Backup Upload 매주 화~일 새벽 3시 30분 실행
30 3 * * 2-7 /home/ec2-user/backup-sh/increbackup.sh >> /ddrive/db-backup/log/increbackup/`date "+\%Y\%m\%d"`.txt 2>&1
 
#7일 지난 백업파일 삭제 (매주 월요일 새벽 3시 40분 실행)
40 3 * * 1 sudo find /ddrive/db-backup/fullbackup/* -mtime +7 -exec rm -rf {} \;
40 3 * * 1 sudo find /ddrive/db-backup/increbackup/* -mtime +7 -exec rm -rf {} \;
입력 완료 후 :wq 저장
BIG