백업 기본 개념
백업의 중요성
데이터 손실 원인
- 하드웨어 장애 (디스크 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: 개인정보 백업 시 암호화 필수 개인정보보호법: 안전한 보관 조치 삭제권: 개인정보 삭제 요청 시 백업도 삭제
장애 복구 절차
복구 우선순위
- Critical: 핵심 업무 DB (1시간 이내)
- High: 주요 애플리케이션 (4시간 이내)
- Medium: 일반 업무 시스템 (24시간 이내)
- Low: 개발/테스트 환경 (48시간 이내)
복구 검증
데이터 무결성 확인
- 테이블 행 수 검증
- 체크섬 비교
- 애플리케이션 연동 테스트
성능 확인
- 쿼리 응답 시간 측정
- 인덱스 상태 확인
- 통계 정보 업데이트
백업 전략 수립 가이드
1단계: 요구사항 분석
- 비즈니스 임계도 평가
- RTO/RPO 목표 설정
- 규정 준수 요구사항 확인
2단계: 백업 설계
- 백업 유형 및 주기 결정
- 저장소 계층 설계
- 보안 요구사항 적용
3단계: 구현 및 테스트
- 백업 시스템 구축
- 자동화 스크립트 개발
- 복구 테스트 실행
4단계: 운영 및 개선
- 모니터링 시스템 운영
- 정기적 복구 훈련
- 백업 전략 지속 개선
효과적인 데이터베이스 백업 전략은 비즈니스 연속성을 보장하는 핵심 요소입니다.
'IT정보' 카테고리의 다른 글
클라우드 비용 최적화 가이드 (5) | 2025.08.19 |
---|---|
웹 접근성 준수 방법 확인하기 (3) | 2025.08.18 |
프론트엔드 프레임워크 비교하기 (6) | 2025.08.18 |
웹 성능 최적화 기법 가이드 (3) | 2025.08.18 |
CI/CD 파이프라인 구축 가이드 (1) | 2025.08.18 |