Replies: 4 comments 3 replies
-
|
저는 2번째 방식이 좋은 것 같습니다! EBS 스냅샷에서 발생하는 crash-consistent 는 스냅샷 직전에 디스크 상태를 flush 하고 lock 걸어서 스냅샷을 때리는 방법으로 정합성 챙기는 것도 괜찮아 보입니다! |
Beta Was this translation helpful? Give feedback.
-
|
추가로 논의되면 좋을 부분이 mysqldump 작업을 cronJob을 어디서(api server? db ec2?) 진행할지도 고민입니다! 이 부분에 대해서도 의견 주시면 감사드리겠습니다! |
Beta Was this translation helpful? Give feedback.
-
|
Prod DB의 기본 백업 방식으로는 3번 일간 mysqldump + binlog → S3방식을 적용하는 것이 적절하다고 판단됩니당. 일간 dump만 사용하거나 EBS 스냅샷을 추가하는 방식은 구현이 단순하지만 잘못된 DELETE, UPDATE 또는 스키마 변경이 발생했을 때 최대 24시간의 데이터가 유실될 수 있습니다. EBS 스냅샷은 볼륨 전체 장애를 빠르게 복구하는 데는 도움이 되지만 장애 직전 시점으로 복구하는 기능은 제공하지 않습니다. 반면 dump와 binlog를 함께 보관하면 별도 백업 서버를 상시 운영하지 않고도 장애나 운영 실수 직전까지 복구할 수 있습니다. 현재 데이터 규모에서는 S3 저장 비용도 크지 않으므로 추가 운영 복잡도를 감수할 가치가 있다고 생각합니당. 제가 생각하는 권장 운영 기준은 다음과 같습니다.
다만 binlog 아카이빙과 복구 절차를 즉시 안정적으로 구현하기 어렵다면 우선 2번 일간 dump + EBS 스냅샷 방식부터 적용해 무백업 상태를 해소한 뒤 일정 기한을 정해 3번 방식으로 전환하는 단계적 접근도 가능할 것 같습니당 |
Beta Was this translation helpful? Give feedback.
-
|
의견을 종합해봤을 때, 2번과 3번으로 좁혀지는 것 같습니다! 그래서 2번과 3번의 핵심을 비교해봤는데 다음과 같이 정리할 수 있었습니다!
해당 상황에서 저는 S3 dump + binlog 방식이 옳게 느껴지긴 합니다. 그 이유는 아래와 같습니다!
|
Beta Was this translation helpful? Give feedback.

Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
논의 배경
Prod 환경의 데이터베이스를 RDS에서 EC2 기반 MySQL 8.4.8로 전환했습니다. 현재 MySQL은 단일 EC2에서 Docker 컨테이너로 실행되며, 데이터는 인스턴스의 루트 볼륨과 분리된 12GiB gp3 EBS에 저장하고 있습니다. EBS에는 Terraform의
prevent_destroy가 적용되어 있지만, 이는 Terraform을 통한 삭제만 방지할 뿐 데이터 손상이나 운영 실수에 대한 복구 수단은 아닙니다.RDS를 사용할 때 제공되던 자동 백업과 특정 시점 복구 기능도 더 이상 사용할 수 없으므로, EC2 환경에 맞는 백업 정책을 별도로 마련해야 합니다. 다만 백업을 위해 별도 서버를 상시 운영하기보다는 S3 및 EBS 스냅샷 저장 비용 정도로 관리할 수 있는 방안을 우선 검토하고자 합니다.
문제
현재 Prod DB에는 정기적으로 생성되는 백업이 없습니다. 이 상태에서는 EBS 장애나 파일 시스템 손상뿐 아니라 잘못된 배포, 스키마 변경, 실수로 실행한
DELETE또는UPDATE쿼리로 데이터가 변경되었을 때 정상 상태로 되돌리기 어렵습니다. 별도 EBS를 사용하고 있어 EC2 인스턴스 장애에는 어느 정도 대응할 수 있지만, EBS 내부 데이터 자체가 손상되거나 삭제되면 복구할 수 없습니다.따라서 비용을 낮게 유지하면서도 허용 가능한 데이터 유실 범위, 복구에 걸리는 시간, 운영 및 복구 절차의 복잡도를 함께 고려해 백업 방식을 선택해야 합니다.
해결 방안 후보 세 가지
1. 일간 mysqldump → S3
2. 일간 mysqldump → S3 + EBS 스냅샷
3. 일간 mysqldump + binlog → S3
Beta Was this translation helpful? Give feedback.
All reactions