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
'DataBase > Maria DB' 카테고리의 다른 글
[DB] MariaDB MaxScale을 통한 분산처리 (1) | 2023.02.13 |
---|---|
[DB/AWS] MariaDB Mariabackup 복원하기 (0) | 2023.02.09 |
[DB/AWS] MariaDB Mariabackup을 이용한 백업 스케쥴 설정 (0) | 2023.02.09 |
[DB] Database Lock? (0) | 2023.02.08 |
[DB] MariaDB 시스템 튜닝 (0) | 2023.02.08 |