Skip to content

feat: S3 기반 MySQL 백업 및 모니터링 파이프라인 구성 #66

Description

@Hexeong

목표

Prod DB의 전체 dump와 binlog를 S3에 보관하여 목표 RPO 5분을 만족하는 백업 파이프라인을 구성합니다.

권한 관리 원칙

  • 백업에 필요한 IAM Role, IAM Policy, IAM User와 권한 연결은 AWS에서 수동으로 구성합니다.
  • Terraform 코드에는 IAM 권한 정의와 연결 정보를 선언하지 않습니다.
  • Terraform에서는 수동으로 생성된 Instance Profile이나 역할의 이름 등 필요한 식별자만 변수로 전달해 참조합니다.
  • 구체적인 권한 내용은 저장소 이슈와 코드에 노출하지 않고 별도 운영 문서에서 관리합니다.

작업 내용

  • 백업 전용 S3 버킷 또는 prefix를 Terraform으로 구성합니다.
  • S3 접근에 필요한 최소 권한 IAM Role·Policy와 EC2 권한 연결을 AWS에서 수동으로 구성합니다.
  • S3 암호화, Versioning, Object Lock 적용 여부와 2주 보관 Lifecycle을 구성합니다.
  • MySQL binlog 설정과 전체 dump 기준점(position 또는 GTID) 기록 방식을 구성합니다.
  • 일 1회 mysqldump, 압축, 체크섬, manifest 생성 및 S3 업로드 스크립트를 작성합니다.
  • binlog 생성부터 S3 업로드 완료까지 5분 이내가 되도록 아카이빙 스크립트와 systemd service/timer를 구성합니다.
  • 실패 재시도와 중복 실행에 대한 멱등성을 보장합니다.
  • mysqldump 실패, binlog 누락, 마지막 업로드 지연 시 Discord Webhook 알림을 전송합니다.
  • EC2 자체 장애처럼 내부 알림을 보낼 수 없는 경우를 감지할 외부 freshness 모니터링을 구성합니다.

완료 조건

  • 전체 dump와 binlog가 자동으로 S3에 저장됩니다.
  • dump와 binlog의 복구 기준점 및 체크섬을 확인할 수 있습니다.
  • 마지막 성공 binlog 업로드가 5분을 넘기거나 파일이 누락되면 알림이 발생합니다.
  • 백업 파일 보관 및 삭제가 S3 Lifecycle에 의해 관리됩니다.
  • IAM 역할·정책·사용자 권한이 Terraform 코드에 포함되지 않고 수동으로 관리됩니다.

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