본문 바로가기
IT정보

데이터베이스 백업 전략 알아보기

by 오늘의 테크 2025. 8. 18.

백업 기본 개념

백업의 중요성

데이터 손실 원인

  • 하드웨어 장애 (디스크 crash, 서버 장애)
  • 소프트웨어 오류 (OS crash, DB corruption)
  • 인적 오류 (잘못된 쿼리, 실수 삭제)
  • 자연재해 (화재, 홍수, 지진)
  • 사이버 공격 (랜섬웨어, 해킹)

백업 목표 지표

RTO (Recovery Time Objective): 복구 목표 시간

  • 얼마나 빨리 서비스를 복구할 것인가
  • 예: 1시간 이내 복구

RPO (Recovery Point Objective): 복구 목표 시점

  • 얼마나 많은 데이터 손실을 허용할 것인가
  • 예: 최대 15분 전 데이터까지 복구

SLA (Service Level Agreement): 서비스 수준 협약

  • 가용성 목표 (99.9%, 99.99%)
  • 복구 시간 보장

백업 유형

전체 백업 (Full Backup)

특징: 모든 데이터와 구조를 완전히 백업

  • 장점: 단순하고 완전한 복구 가능
  • 단점: 시간과 저장 공간 많이 소요
  • 사용 시기: 주간/월간 정기 백업

증분 백업 (Incremental Backup)

특징: 마지막 백업 이후 변경된 데이터만 백업

  • 장점: 빠르고 저장 공간 절약
  • 단점: 복구 시 여러 백업 파일 필요
  • 사용 시기: 일일 백업

차등 백업 (Differential Backup)

특징: 마지막 전체 백업 이후 변경된 모든 데이터 백업

  • 장점: 증분보다 복구 빠름
  • 단점: 시간 지날수록 백업 크기 증가
  • 사용 시기: 주간 중간 백업

로그 백업 (Transaction Log Backup)

특징: 트랜잭션 로그만 백업

  • 장점: 특정 시점 복구 가능 (PITR)
  • 단점: 로그 관리 복잡
  • 사용 시기: 15분~1시간 간격

DBMS별 백업 방법

MySQL/MariaDB

mysqldump (논리적 백업)

# 전체 데이터베이스 백업
mysqldump -u root -p --all-databases > full_backup.sql

# 특정 데이터베이스 백업
mysqldump -u root -p database_name > db_backup.sql

# 압축과 함께 백업
mysqldump -u root -p database_name | gzip > db_backup.sql.gz

물리적 백업 (Percona XtraBackup)

  • 핫 백업 (서비스 중단 없이)
  • 증분 백업 지원
  • InnoDB, MyISAM 모두 지원

바이너리 로그 백업

  • PITR (Point-in-Time Recovery) 지원
  • 마스터-슬레이브 복제에 활용

PostgreSQL

pg_dump (논리적 백업)

# 데이터베이스 백업
pg_dump -U username database_name > backup.sql

# 압축 형식으로 백업
pg_dump -U username -Fc database_name > backup.dump

# 병렬 백업 (빠른 속도)
pg_dump -U username -j 4 -Fd database_name -f backup_dir/

pg_basebackup (물리적 백업)

  • 전체 클러스터 백업
  • 스트리밍 복제 활용
  • 핫 백업 지원

WAL 아카이빙

  • 연속 아카이빙으로 PITR 구현
  • WAL 파일 자동 백업

Oracle

RMAN (Recovery Manager)

  • 물리적 백업 전용 도구
  • 압축, 암호화 지원
  • 증분 백업 최적화

Data Pump (논리적 백업)

  • expdp/impdp 유틸리티
  • 병렬 처리 지원
  • 대용량 데이터 처리 최적화

SQL Server

SQL Server Management Studio

  • 전체/차등/트랜잭션 로그 백업
  • 압축 및 암호화 지원
  • 백업 검증 기능

T-SQL 명령어

-- 전체 백업
BACKUP DATABASE [MyDB] TO DISK = 'C:\backup\MyDB.bak'

-- 트랜잭션 로그 백업
BACKUP LOG [MyDB] TO DISK = 'C:\backup\MyDB_log.trn'

백업 스케줄링

3-2-1 백업 규칙

최소 3개 복사본: 원본 + 백업 2개 2개 다른 매체: 로컬 + 클라우드 1개 오프사이트: 물리적으로 다른 위치

백업 주기 예시

미션 크리티컬 시스템

  • 전체 백업: 주간
  • 차등 백업: 일일
  • 로그 백업: 15분 간격
  • 즉시 복제: 실시간 동기화

일반 비즈니스 시스템

  • 전체 백업: 주간
  • 증분 백업: 일일
  • 로그 백업: 1시간 간격

개발/테스트 환경

  • 전체 백업: 주간
  • 차등 백업: 격일
  • 로그 백업: 일일

클라우드 백업

AWS 백업 서비스

RDS 자동 백업

  • 최대 35일 보존
  • PITR 지원
  • 다중 AZ 백업

AWS Backup

  • 중앙집중식 백업 관리
  • 교차 계정/리전 백업
  • 백업 정책 자동화

Azure 백업

SQL Database 자동 백업

  • 7-35일 자동 보존
  • 장기 보존 정책 (LTR)
  • 지역 중복 백업

Google Cloud 백업

Cloud SQL 자동 백업

  • PITR 7일 보존
  • 수동 백업 생성
  • 교차 리전 복제

백업 보안

암호화

저장 시 암호화 (Encryption at Rest)

  • 백업 파일 암호화
  • 키 관리 시스템 (KMS) 활용
  • AES-256 표준 사용

전송 시 암호화 (Encryption in Transit)

  • TLS/SSL 프로토콜 사용
  • VPN 터널 활용
  • 안전한 전송 채널

접근 제어

역할 기반 접근 제어 (RBAC)

  • 백업 관리자 권한 분리
  • 최소 권한 원칙 적용
  • 정기적 권한 검토

감사 로그

  • 백업/복구 작업 기록
  • 접근 이력 추적
  • 보안 이벤트 모니터링

백업 테스트와 검증

정기적 복구 테스트

월간 복구 테스트

  • 다른 환경에서 복구 실행
  • 데이터 무결성 검증
  • 복구 시간 측정

백업 검증

  • 백업 파일 무결성 체크
  • 체크섬 검증
  • 복구 가능성 확인

재해 복구 연습

DR (Disaster Recovery) 훈련

  • 시나리오 기반 훈련
  • 전체 팀 참여
  • 절차서 업데이트

백업 저장소 관리

저장소 계층화

Hot Storage: 즉시 접근 가능한 백업 Warm Storage: 중간 빈도 접근 백업 Cold Storage: 장기 보관용 백업 Archive Storage: 규정 준수용 장기 보관

보존 정책

단기 보존: 1-30일 (빠른 복구용) 중기 보존: 1-12개월 (월간/분기별) 장기 보존: 1-7년 (규정 준수)

자동 삭제 정책

# 30일 이상 된 백업 자동 삭제
find /backup/path -name "*.sql" -mtime +30 -delete

# S3 lifecycle 정책으로 자동 계층화
# 30일 후 IA, 90일 후 Glacier로 이동

백업 자동화

스크립트 자동화

백업 스크립트 예시

#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/backup/mysql"
DB_NAME="production_db"

# 백업 실행
mysqldump -u backup_user -p$PASSWORD $DB_NAME | gzip > $BACKUP_DIR/backup_$DATE.sql.gz

# 7일 이상 된 백업 삭제
find $BACKUP_DIR -name "*.sql.gz" -mtime +7 -delete

# 백업 결과 알림
if [ $? -eq 0 ]; then
    echo "Backup successful: $DATE" | mail -s "DB Backup Success" admin@company.com
else
    echo "Backup failed: $DATE" | mail -s "DB Backup FAILED" admin@company.com
fi

크론 작업 설정

# 매일 새벽 2시 전체 백업
0 2 * * * /scripts/full_backup.sh

# 매시간 로그 백업
0 * * * * /scripts/log_backup.sh

# 매주 일요일 아카이브
0 3 * * 0 /scripts/archive_backup.sh

모니터링과 알림

백업 상태 모니터링

성공/실패 추적

  • 백업 완료 시간 기록
  • 백업 파일 크기 모니터링
  • 오류 로그 분석

대시보드 구성

  • 백업 스케줄 현황
  • 저장소 사용량
  • 복구 테스트 결과

알림 시스템

실패 알림: 즉시 SMS/이메일 발송 용량 경고: 저장소 80% 사용 시 알림 정기 리포트: 주간 백업 상태 보고서

비용 최적화

스토리지 비용 절감

압축: 백업 파일 크기 50-80% 감소 중복 제거: 동일 데이터 블록 제거 계층형 스토리지: 접근 빈도별 비용 최적화

네트워크 비용 절감

증분 백업: 전송량 최소화 압축 전송: 네트워크 대역폭 절약 로컬 복제: 클라우드 전송 빈도 감소

규정 준수

데이터 보존 규정

금융업: 5-7년 보존 의무 의료업: 환자 기록 장기 보존 공공기관: 법정 보존 기간 준수

개인정보 보호

GDPR: 개인정보 백업 시 암호화 필수 개인정보보호법: 안전한 보관 조치 삭제권: 개인정보 삭제 요청 시 백업도 삭제

장애 복구 절차

복구 우선순위

  1. Critical: 핵심 업무 DB (1시간 이내)
  2. High: 주요 애플리케이션 (4시간 이내)
  3. Medium: 일반 업무 시스템 (24시간 이내)
  4. Low: 개발/테스트 환경 (48시간 이내)

복구 검증

데이터 무결성 확인

  • 테이블 행 수 검증
  • 체크섬 비교
  • 애플리케이션 연동 테스트

성능 확인

  • 쿼리 응답 시간 측정
  • 인덱스 상태 확인
  • 통계 정보 업데이트

백업 전략 수립 가이드

1단계: 요구사항 분석

  • 비즈니스 임계도 평가
  • RTO/RPO 목표 설정
  • 규정 준수 요구사항 확인

2단계: 백업 설계

  • 백업 유형 및 주기 결정
  • 저장소 계층 설계
  • 보안 요구사항 적용

3단계: 구현 및 테스트

  • 백업 시스템 구축
  • 자동화 스크립트 개발
  • 복구 테스트 실행

4단계: 운영 및 개선

  • 모니터링 시스템 운영
  • 정기적 복구 훈련
  • 백업 전략 지속 개선

효과적인 데이터베이스 백업 전략은 비즈니스 연속성을 보장하는 핵심 요소입니다.