백업 및 재난 복구
백업 및 재난 복구
1) 정의와 목표
백업-후속 복구를위한 일관된 데이터/구성 사본 (우발적 삭제, 버그, 암호 해독기, 재난).
DR (Disaster Recovery) - 주요 사고 (화재, 지역 손실, 대규모 타협) 후 SLO 작업에 인프라/서비스를 복원하는 프로세스.
RPO (Recovery Point Objective) -시간의 최대 허용 데이터 손실 (예: 15 분).
RTO (복구 시간 목표) - 서비스 복구 시간 목표 (예: 30 분).
핵심 원칙: 복제 PHP 4: PHP 4 복제는 모든 사본에서 오류와 암호화를 빠르게 발생시킵니다. 백업은 격리되고 검증되고 잠재적으로 변경 불가능한 사본입니다.
2) 데이터 분류 및 중요 수준
자산을 클래스로 나눕니다
Tier-0 (핵심): 거래 데이터베이스, 결제, 대차 대조표 회계, 비밀/PKI.
1 단계 (중요): 서비스 구성 요소, 대기열, CI/CD 아티팩트, 컨테이너 레지스터.
2 단계 (중요): 분석, 보고서, 2 차 색인, 로그 아카이브.
3 단계 (보조): 캐시, 시간 데이터 (재구성으로 복원 할 수 있음).
각 클래스에 대해 RPO/RTO, 보존 기간, 불변성 요구 사항 및 위치를 정의하십시오.
3) 유지 전략: 규칙 3-2-1-1-0
데이터 사본 3 개 (prod + 2 백업).
2 가지 미디어/스토리지 유형.
오프 사이트 사본 1 개 (다른 지역/클라우드).
1 불변성/에어 갭 (WORM/Object Lock/Tape).
복구 검사에서 0 오류 (일반 테스트).
4) 백업 유형
전체-전체 copy. 느리고 비싸지 만 모든 전략의 기초.
증분-마지막 백업과의 차이점. 볼륨이 최적입니다.
차이-마지막 전체와의 차이. 더 빠른 복구, 더 많은 공간.
스냅 샷-볼륨/디스크 (EBS/ZFS/LVM) 의 스냅 샷. 앱 일관된 스냅 샷 (quiesce) 이 필요합니다.
PITR (Point-in-Time Recovery) -정확한 시간/LSN으로 롤백하기위한 기본 백업 + 로그 (WAL/binlog).
개체/파일/비 유적-특정 데이터 유형 (VM 이미지, S3 개체, DB 덤프).
5) 백업의 일관성
충돌 일관성: 갑작스런 종료 후-무국적자/저널링 된 FS에 적합합니다.
앱 일관성: 응용 프로그램은 "동결" 작업 (fsfreeze/pre-post 스크립트) → 무결성을 보장합니다.
데이터베이스 일관성: 백업 도구의 API (pgBackRest, XtraBackup), 핫 백업 모드, 동결 체크 포인트.
6) 암호화, 키 및 액세스
모든 사본에 대한 휴식 및 전송 중 암호화.
KMS/HSM의 키, 정책 별 회전 (90/180 일), 환경 별 키 별도.
업무 분리: 누가 백업을 해독/읽을 수있는 백업을 생성/제거합니까?
대상 복사본과 동일한 트러스트 도메인에 암호 해독 키를 유지하지 마십시오.
7) 수정 불가능한 사본 및 랜섬웨어 보호
보존 및 법적 보류가있는 Object Lock/WORM (준수/거버넌스).
에어 갭: 격리/오프라인 스토리지 (피드, 오프라인 클라우드/계정).
"지연된 활성화" 삭제 정책, MFA-Delete, 백업 버킷에 대한 별도의 계정, 공개 액세스 금지.
마운트 전에 악성 코드/타협 지표에 대한 검증.
8) 주파수, 일정 및 유지
GFS (Grandfather-Father-Son): 일일 증분, 주간 풀/디프, 긴 스토리지로 매월 가득 차 있습니다.
RPO는 증분 빈도와 WAL/빈 로그 보관 (예: 5-15 분마다) 을 나타냅니다.
스토리지: 중요-12-36 개월 동안 매월 35-90 일 이상 (법적 요구 사항).
계절별 피크는 별도의 제어 지점입니다 (프로모션/릴리스 전).
9) DR 모델 및 시나리오
액티브 액티브: 두 지역 모두 트래픽을 제공합니다. 최소 RTO, 데이터 붕괴에는 엄격한 충돌 정책이 필요합니다.
액티브 패시브 (핫/워밍): 핫-펼쳐지고 동기화 된 (RTO 분), 따뜻한-부분적으로 준비된 (RTO 시간).
추위: 상점 사본 및 Terraform/Ansible/images, 주문형 인상 (RTO day +).
DRaaS: 다른 영역에서 VM/네트워크/주소의 공급자 오케스트레이션.
10) Feilover 오케스트레이션 및 복구 우선 순위
스타트 업 우선 순위: 네트워크/VPN/DNA → 비밀/KMS → 데이터베이스/클러스터 → 대기열/캐시 → 응용 프로그램 → 둘레/CDNA → 분석.
자동화: DR 환경을위한 스크립트/런북 작업, Terraform/Ansible/Helm/ArgoCD 프로필.
데이터: DB PITR → redexis/replica → warm cash → 스키마 호환성 플래그가있는 서비스 시작.
DNA/GSLB: 사전에 TTL 다운 그레이드하고 검증을 통해 시나리오를 전환하십시오.
11) 백업 확인 테스트
일정에 대한 테스트 복원: 백업 N% 샘플링, 샌드 박스 배포, 자동 스키마/불변 검사.
전체 DR 드릴 (게임 데이): 지역/AZ 비활성화, 실시간 트래픽 (또는 트래픽 섀도우) 에서 RTO/RPO 확인.
무결성 테스트: 해시 디렉토리, 체크섬, 모든 레이어 읽기 (전체 + 체인).
문서 보고서: 시간, 단계, 이상, 목표의 간격 크기, 수정.
12) 핵심 기술 연습
데이터베이스
PostgreSQL: 기본 백업 + WAL 아카이브 (PITR), pgBackRest/Barman 도구; 복제 슬롯, 'lsn' 모니터링.
MySQL/MariaDB: Percona Xtraback/Enterprise Backup, 빈 로그 보관.
MongoDB: 논리적 사본을위한 'mongodump' + 큰 세트를위한 스냅 샷; PITR에 대한 옵션.
Redis: 중요한 RDB/AOF (Redis가 캐시 인 경우) 뿐만 아니라 사고에 대한 소스 + 스냅 샷에서 논리적으로 재구성되는 경우가 더 많습니다.
Kafka/Pulsar: 메타 데이터 백업 (ZK/Kraft/BookKeeper), 디스크 스냅 샷, 주제/로그 미러링.
쿠 베르네 테스
리소스/볼륨에 대한 etcd 스냅 샷 + Velero (CSI 스냅 샷).
백업 비밀/PKI 개별 (Vault 스냅 샷).
별도의 이미지 레지스터: 불변의 태그.
VM 및 파일 시스템
ZFS: 'zfs 스냅 샷' + 'zfs는 | zstd | send-recv' 증분, '스크럽' 확인.
사전/사후 스크립트 (앱 일관성) 가있는 LVM/EBS 스냅 샷.
객체 상점-버전 + 객체 잠금.
13) 백업의 카탈로그 및 버전 제어
디렉토리 (메타 데이터 카탈로그 작성): KMS 키, 소유자, 보존 기간이 해시되는 위치.
'env = prod' stage ',' system = db 'k8s' vm ',' tier = 0 | 1 | 2 ',' 보존 = 35d | 1y '.
골드 체크 포인트: 마이그레이션 전/DDL/대규모 릴리스.
14) 관찰 가능성 및 지표
직업 성공률:% 성공/실패, 이유.
백업/복원 시간, 창 너비.
RPO 실제: 로그 아카이브 로그 (WAL/binog) p95.
무결성: 테스트 된 체인의 비율, 해시 조정 오류.
비용: 클래스 별 저장 용량, 중복 제거/압축 비율.
DR 준비: 운동의 빈도와 결과 (통과/실패).
15) 액세스 및 준수 정책
백업 스토리지를위한 별도의 계정/프로젝트; NaC 원칙에 따른 액세스 (생산 계정에서 삭제/암호화를 허용하지 않음).
액세스/변경 로그 (감사 추적), 대량 삭제/retshn 변경에 대한 경고.
준수: GDPR (아카이브 대 삭제권), PCI DSS (암호화, 키, 세분화), 로컬 레귤레이터.
16) 반 패턴
"복제본이있어 백업 할 필요가 없습니다".
불변성/에어 갭 없음: 하나의 오류/멀웨어가 모든 것을 지우다.
prod와 동일한 계정/지역에서 백업합니다.
복구를 확인하지 마십시오 (백업 "확인 전에 죽었습니다").
사고로 카탈로그 및 버전 제어 → 혼돈이 없습니다.
모든 환경에 대한 공유 암호화 키.
데이터베이스에 대한 앱 일관된 모드가없는 스냅 샷.
백업 창은 피크와 교차합니다 (p99 및 SLO에 영향을 미침).
17) 구현 점검표 (0-60 일)
0-10 일
시스템/데이터 목록, 중요 클래스.
클래스별로 RPO/RTO 대상을 설정하십시오.
Tier-0/1, WAL/binlog 아카이브에 대해 전체 + 증분 사용하십시오.
포스트 백업: 별도의 지역/계정 + 를 사용하면 KMS 암호화가 가능합니
11-30 일
중요한 복사본에 불변성 (Object Lock/WORM) 을 설정합니다.
카탈로그, 태그, 보고를 입력하십시오. 실패 및 지연 잡지에 대한 경고.
첫 번째 DR 드릴: 격리 된 환경에서 백업과 별도의 서비스를 복원합니다.
31-60 일
자동화 런북: Terraform/Ansible/Helm 프로필 DR.
정기적 인 복원 테스트 (주/월) + 분기 별 전체 DR 시나리오.
비용 중복/압축/저장 수명주기를 최적화하십시오.
18) 성숙도 지표
복원 테스트: Tier-0 (선택) 의 경우 주당 1/1 이상, 월 1/월-전체 시나리오.
불변의 적용 범위는 Tier-0/1 = 100% 입니다.
RPO 실제 p95 체크 대상 (예: λ15 분).
DR- 연습시 실제 RTO-acture는 대상 (예: λ30 분) 입니다.
디렉토리 완전성 = 100% (각 백업은 설명 및 확인).
사고 복원-탐지에서 복구 시작까지의 시간.
19) 예 (스 니펫)
PostgreSQL - PITR 정책 (아이디어):bash base backup once a day pgbackrest --stanza = prod --type = full backup archive WAL every 5 minutes pgbackrest --stanza = prod archive-push restore to time pgbackrest --stanza = prod restore --type = time --target =" 2025-11-03 14:00:00 + 02"
MySQL - 증분 루프:
bash xtrabackup --backup --target-dir=/backup/full-2025-11-01 xtrabackup --backup --incremental-basedir=/backup/full-2025-11-01 --target-dir=/backup/inc-2025-11-02 xtrabackup --prepare --apply-log-only --target-dir=/backup/full-2025-11-01 xtrabackup --prepare --target-dir=/backup/full-2025-11-01 --incremental-dir=/backup/inc-2025-11-02
Kubernetes-Velero (매니페스트 아이디어):
yaml apiVersion: velero. io/v1 kind: Backup metadata: { name: prod-daily }
spec:
includedNamespaces: ["prod-"]
ttl: 720h storageLocation: s3-immutable
S3 객체 잠금 (샘플 수명주기 정책):
json
{
"Rules": [{
"ID": "prod-immutable",
"Status": "Enabled",
"NoncurrentVersionExpiration": { "NoncurrentDays": 365 }
}]
}
20) 커뮤니케이션 및 운영 역할
사건 사령관, Comms Lead, Ops Lead, DB Lead, Security.
이해 관계자/규제 기관/사용자를위한 메시지 템플릿.
사후 조치: 몇 분을 잃은 곳, 자동화를 개선 할 수있는 곳.
21) 결론
안정적인 백업 및 DR 루프는 "복사 만들기" 가 아니라주기입니다. 분류 → 목표 RPO/RTO → 다단계 및 불변의 사본 → 자동 런북 '및 → 정기적 인 복원 및 연습. 3-2-1-1-0에 이르기까지 백업과 별도의 복제, 키를 암호화 및 분리하고 문서화하고 확인하십시오. 그런 다음 "검은 백조" 조차도 예측 가능한 다운 타임과 최소한의 데이터 손실로 관리 가능한 프로세스로 전환됩니다.