Skip to content

English {#english}

Purpose: Monthly restore from MariaDB backups stored in R2 and integrity verification. “Untested backup is no backup” (GTape).

Steps (summary): Download latest dump from R2 → restore into a temporary Docker MariaDB container → verify table row counts and optional checksums → tear down. Use scripts/backup/dirt-restore-verify.sh for one-shot automation. Prerequisites: rclone (or aws cli) for R2, Docker. Ref: cloudflare-orchestration-and-gtape-backup-plan §3.4.

flowchart LR
  A[R2 dump] --> B[Download]
  B --> C[Docker MariaDB]
  C --> D[Restore]
  D --> E[Verify]
  E --> F[Teardown]

한국어 {#korean}

Runbook: DiRT (Disaster Recovery Training) — 복구 검증

목적: R2에 보관된 MariaDB 백업으로 월 1회 복원 후 무결성 검증. “테스트되지 않은 백업은 백업이 아니다”(GTape).

Ref: cloudflare-orchestration-and-gtape-backup-plan §3.4.


1. 개요

항목내용
주기매월 1회(또는 분기 1회) 권장.
절차R2에서 최신(또는 지정) 덤프 다운로드 → 별도 Docker MariaDB 컨테이너에 복원 → 테이블 건수·Checksum 등 무결성 검증.
실행 환경스테이징 서버 또는 전용 복구 검증용 호스트. 프로덕션 DB 서버에서 직접 복원하지 않음.

2. 사전 조건

  • rclone(또는 aws cli)으로 R2 접근 가능.
  • Docker 설치됨.
  • scripts/backup/dirt-restore-verify.sh 실행 권한.

3. 수동 실행 절차

3.1 R2에서 덤프 다운로드

Terminal window
rclone copy r2:prego-db-backups/daily/ ./dirt-work/ --include "mysqldump_*.sql.gz"
# 또는 특정 파일: rclone copy r2:prego-db-backups/daily/mysqldump_20250101_0010.sql.gz ./dirt-work/

3.2 임시 MariaDB 컨테이너 기동 및 복원

Terminal window
docker run -d --name dirt-mariadb -e MYSQL_ROOT_PASSWORD=verify mariadb:10.6
# 복원: zcat dirt-work/mysqldump_*.sql.gz | docker exec -i dirt-mariadb mysql -uroot -pverify

3.3 무결성 검증

  • 테이블 건수: SELECT table_name, table_rows FROM information_schema.tables WHERE table_schema NOT IN ('information_schema','performance_schema');
  • Checksum(선택): 핵심 테이블에 대해 CHECKSUM TABLE db.table;
  • 소요 시간·결과를 로그 또는 Runbook에 기록.

3.4 정리

Terminal window
docker stop dirt-mariadb
docker rm dirt-mariadb
rm -rf dirt-work

4. 자동화 스크립트

scripts/backup/dirt-restore-verify.sh를 사용하면 위 단계를 한 번에 실행할 수 있음. 실패 시 exit 1로 알림 연동 가능.


5. 알림·기록

  • 실패 시: 슬랙·이메일·Control Plane 알림 등으로 담당자에게 통보.
  • 성공/실패·소요 시간·검증 요약을 Runbook 또는 모니터링 대시보드에 기록 권장.
Help