데브포일 홈
DEV MODE - 실서버 영향 없음 📦 배포 관리
백업 & 재해복구 전략
+250 XP
LEVEL 58 QUEST

백업 & 재해복구 전략

MariaDB 자동 백업, 파일 시스템 백업, 크론잡 설정, 백업 검증, 복구 절차까지 완전한 재해복구 체계를 구축합니다.

MariaDB 자동 백업 스크립트 (mysqldump)

mysqldump 기반 DB 백업

mysqldump는 MariaDB/MySQL의 표준 백업 도구입니다. 전체 데이터베이스를 SQL 파일로 내보내며, 압축과 날짜별 관리를 자동화합니다. 운영 DB에서는 --single-transaction 옵션으로 락 없이 백업합니다.

#!/bin/bash # db_backup.sh - MariaDB 자동 백업 스크립트 DB_NAME="saas_production" DB_USER="backup_user" DB_PASS="secure_password_here" BACKUP_DIR="/var/backups/mysql" DATE=$(date +%Y%m%d_%H%M%S) RETAIN_DAYS=30 # 백업 디렉토리 생성 mkdir -p "$BACKUP_DIR" # mysqldump 실행 (InnoDB: 트랜잭션 기반 일관된 백업) mysqldump \ --user="$DB_USER" \ --password="$DB_PASS" \ --single-transaction \ --routines \ --triggers \ --events \ --quick \ --lock-tables=false \ "$DB_NAME" | gzip > "$BACKUP_DIR/${DB_NAME}_${DATE}.sql.gz" # 백업 결과 확인 if [ $? -eq 0 ]; then FILESIZE=$(du -h "$BACKUP_DIR/${DB_NAME}_${DATE}.sql.gz" | cut -f1) echo "[$(date)] 백업 성공: ${DB_NAME}_${DATE}.sql.gz ($FILESIZE)" else echo "[$(date)] 백업 실패!" >&2 # 실패 시 알림 (PHP 알림 스크립트 호출) php /var/www/html/cron/send_alert.php "DB 백업 실패" "$DB_NAME" exit 1 fi # 오래된 백업 정리 (30일 이상) find "$BACKUP_DIR" -name "*.sql.gz" -mtime +"$RETAIN_DAYS" -delete echo "[$(date)] ${RETAIN_DAYS}일 이상 된 백업 파일 정리 완료"

--single-transaction 핵심

InnoDB 테이블에서 이 옵션을 사용하면 백업 중에도 서비스가 정상 동작합니다. 테이블 락 없이 일관된 스냅샷을 생성합니다. MyISAM 테이블에서는 동작하지 않으니 주의하세요.

파일 시스템 백업 (rsync)

rsync 기반 증분 백업

rsync는 변경된 파일만 전송하는 증분 백업 도구입니다. 전체 복사 대비 시간과 대역폭을 크게 절약합니다. 업로드 파일, 설정 파일 등 코드 외 데이터를 안전하게 백업합니다.

#!/bin/bash # file_backup.sh - 파일 시스템 증분 백업 SOURCE_DIR="/var/www/html/saas" BACKUP_DIR="/var/backups/files" DATE=$(date +%Y%m%d) LATEST_LINK="$BACKUP_DIR/latest" mkdir -p "$BACKUP_DIR/$DATE" # rsync 증분 백업 (하드링크 활용) rsync -avz \ --delete \ --link-dest="$LATEST_LINK" \ --exclude='vendor/' \ --exclude='node_modules/' \ --exclude='.git/' \ --exclude='cache/*' \ --exclude='*.log' \ "$SOURCE_DIR/" \ "$BACKUP_DIR/$DATE/" # 최신 백업 심볼릭 링크 갱신 rm -f "$LATEST_LINK" ln -s "$BACKUP_DIR/$DATE" "$LATEST_LINK" echo "[$(date)] 파일 백업 완료: $BACKUP_DIR/$DATE"
-a (archive) 권한, 소유자, 타임스탬프, 심볼릭 링크 등 모든 메타데이터를 보존하며 재귀적으로 복사합니다.
--link-dest 이전 백업과 비교하여 변경되지 않은 파일은 하드링크로 연결합니다. 디스크 공간을 크게 절약합니다.
--delete 원본에서 삭제된 파일을 백업에서도 삭제하여 정확한 미러를 유지합니다.
🔒
여기까지는 미리보기입니다
백업 & 재해복구 전략
무료 가입하면 이어서 볼 수 있고, 강의를 완료할 때마다 XP와 레벨이 쌓입니다.
Google로 3초 만에 시작 →🧵 Threads로 시작무료 공개 강의 둘러보기 (Lv.1~3)