Skip to content

test: PostgreSQL 시점 복구 및 데이터 정합성 검증 #32

Description

@move-hoon

계층

운영 검증 — Backblaze B2 백업으로 PostgreSQL을 원하는 시각에 되살릴 수 있는지 확인하는 작업입니다.

배경 및 목적

백업 객체가 있다는 사실은 복구 가능성을 보장하지 않습니다. base backup이 손상됐거나 필요한 WAL 구간이 빠지면 복구가 중간에서 멈춥니다.

운영 Cluster를 건드리지 않고 다른 이름과 별도 PVC를 쓰는 복구 Cluster를 만듭니다. 복구 전 넣어 둔 기준 데이터로 결과를 확인합니다.

현재 상태

PITR Runbook은 있지만 실제 Backblaze B2 복구와 데이터 checksum 결과는 없습니다.

작업 흐름

기준 데이터 기록 → 목표 시각 선택 → 별도 Cluster 생성 → base backup + WAL 재생 → SQL·checksum 비교 → RTO/RPO 기록

구현 방향

  1. 복구 전 고유한 기준 레코드와 테이블별 row count, checksum을 기록합니다.
  2. WAL archive가 목표 시각 이후까지 이어지는지 확인합니다.
  3. 운영과 다른 Cluster 이름, namespace 또는 PVC를 준비합니다.
  4. Backblaze B2 restore 전용 읽기 credential로 base backup과 WAL을 복원합니다.
  5. 복구 완료 뒤 애플리케이션 schema, 기준 레코드와 checksum을 비교합니다.
  6. 복구 시작부터 읽기·쓰기 가능 시점까지 시간을 측정합니다.
  7. 시험 Cluster와 임시 credential을 안전하게 정리합니다.

완료 조건

  • 운영 Cluster를 변경하지 않고 PITR이 성공합니다.
  • 선택한 목표 시각의 기준 데이터가 맞습니다.
  • 테이블 row count와 checksum 차이가 설명되거나 0입니다.
  • 실제 RPO, RTO와 수동 개입이 기록됩니다.
  • 복구용 credential과 임시 PVC 정리가 확인됩니다.

하지 않는 일

  • 운영 DB를 덮어쓰지 않습니다.
  • 단순 logical dump 성공을 PITR 성공으로 대신하지 않습니다.

참고 자료

위험 확인

  • 관리망(management_network) 또는 방화벽(firewall) 순서에 영향을 줍니다.
  • ESO/SecretStore 경로를 변경합니다.
  • 시크릿·자격증명이 포함되지 않았음을 확인했습니다.

Metadata

Metadata

Assignees

Labels

task인프라·플랫폼 작업 항목

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions