GH GambleHub

백업 및 재난 복구

백업 및 재난 복구

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에 이르기까지 백업과 별도의 복제, 키를 암호화 및 분리하고 문서화하고 확인하십시오. 그런 다음 "검은 백조" 조차도 예측 가능한 다운 타임과 최소한의 데이터 손실로 관리 가능한 프로세스로 전환됩니다.

Contact

문의하기

질문이나 지원이 필요하시면 언제든지 연락하십시오.우리는 항상 도울 준비가 되어 있습니다!

통합 시작

Email — 필수. Telegram 또는 WhatsApp — 선택 사항.

이름 선택 사항
Email 선택 사항
제목 선택 사항
메시지 선택 사항
Telegram 선택 사항
@
Telegram을 입력하시면 Email과 함께 Telegram에서도 답변드립니다.
WhatsApp 선택 사항
형식: +국가 코드 + 번호 (예: +82XXXXXXXXX).

버튼을 클릭하면 데이터 처리에 동의하는 것으로 간주됩니다.