Skip to content

feat: Prod DB 수동 복구 GitHub Actions 워크플로우 구성 #68

Description

@Hexeong

선행 작업

  • #67에서 합의하고 검증한 복구 매뉴얼을 기준으로 구현합니다.

목표

검증된 복구 절차를 GitHub Actions workflow_dispatch 기반 수동 워크플로우로 구성합니다. GitHub Actions는 입력과 승인, 실행 요청을 담당하고 실제 복구 작업은 대상 DB EC2에서 수행합니다.

권한 관리 원칙

  • GitHub OIDC 복구 역할을 포함한 IAM Role, IAM Policy, IAM User와 권한 연결은 AWS에서 수동으로 구성합니다.
  • Terraform 코드에는 IAM 권한 정의와 연결 정보를 선언하지 않습니다.
  • GitHub Actions에는 수동으로 생성된 IAM Role ARN만 GitHub Secret으로 전달합니다.
  • 구체적인 권한 내용은 저장소 이슈와 코드에 노출하지 않고 별도 운영 문서에서 관리합니다.

작업 내용

  • 복구 유형, dump S3 key, 목표 복구 시각, 대상 인스턴스, 복구 사유를 입력받습니다.
  • Prod 전용 GitHub Environment와 승인 절차를 구성합니다.
  • GitHub OIDC 기반 복구 전용 IAM Role·Policy와 신뢰 관계를 AWS에서 수동으로 구성합니다.
  • 수동으로 생성된 복구 역할의 ARN을 GitHub Secret으로 등록합니다.
  • SSM을 통해 DB EC2에서 복구 스크립트를 실행합니다.
  • dump 체크섬과 binlog 연속성을 사전 검사합니다.
  • dump 복원 후 지정한 시점까지 binlog를 순서대로 재생합니다.
  • 복구 후 주요 테이블과 MySQL 상태를 검증합니다.
  • 실행 결과와 SSM 실행 ID를 GitHub Actions 및 CloudWatch에서 확인할 수 있도록 구성합니다.
  • 기존 EBS 또는 DB 삭제와 서비스 연결 전환은 자동화하지 않거나 별도 승인을 거치도록 제한합니다.

완료 조건

  • 승인된 사용자만 수동 복구 워크플로우를 실행할 수 있습니다.
  • 입력한 백업과 목표 시각을 기준으로 새 MySQL 환경에 복구할 수 있습니다.
  • 실패 단계와 실행 로그를 확인할 수 있습니다.
  • IAM 역할·정책·사용자 권한이 Terraform 코드에 포함되지 않고 수동으로 관리됩니다.
  • #67에서 정의한 검증 기준과 목표 RTO를 만족합니다.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions