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

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions