배경
Issue #50 에서 prod DB 대체용 MySQL EC2가 생성되었지만, 현재 MySQL 데이터 디렉터리(/var/lib/mysql)는 root volume 위에 위치합니다. 이후 prod RDS 데이터를 이관하기 전에 MySQL data volume을 root volume과 분리할 필요가 있습니다.
필요성
- AMI 업데이트 또는 EC2 재생성 시 OS/root volume과 MySQL 데이터를 분리해 데이터 유실 위험을 줄입니다.
- Docker/MySQL bootstrap, OS 패치, AMI 교체 작업과 실제 DB 데이터의 생명주기를 분리할 수 있습니다.
- 현재 prod RDS는 20GiB gp3를 사용 중이고 최근 실사용량은 약 1.9GiB 수준입니다. DB EC2는 root 8GiB + data 12GiB로 구성하면 총 EBS 20GiB로 기존 RDS allocated storage와 총량을 맞추면서도 data directory를 분리할 수 있습니다.
- 이후 #51의 RDS -> DB EC2 데이터 마이그레이션을 root volume에 데이터를 넣기 전에 안전한 구조에서 진행할 수 있습니다.
- #48의 백업 전략을 설계할 때 data volume 단위 snapshot/복구 전략을 잡기 쉬워집니다.
RDS 스토리지 사용량 참고
현재 prod RDS의 할당 스토리지는 20GiB입니다.
-----------------------------------------------------------------------------------------------------------
| DescribeDBInstances |
+----------------------+----------------------------------------------------------------------------------+
| AllocatedStorageGiB | 20 |
| DBInstanceClass | db.t4g.micro |
| DBInstanceIdentifier| solid-connection-prod-rds-mysql |
| Endpoint | solid-connection-prod-rds-mysql.ch6qko8w6yyl.ap-northeast-2.rds.amazonaws.com |
| Engine | mysql |
| EngineVersion | 8.4.8 |
| StorageEncrypted | True |
| StorageType | gp3 |
+----------------------+----------------------------------------------------------------------------------+
최근 CloudWatch FreeStorageSpace 기준으로는 여유 공간이 약 18.10GiB 수준입니다.
allocated_gib=20.00
free_min_gib=18.10
used_at_min_free_gib=1.90
free_avg_gib=18.10
used_at_avg_free_gib=1.90
따라서 현재 실사용량 약 1.9GiB 대비 data volume 12GiB는 약 6배 이상의 여유를 가지며, root 8GiB와 합산하면 전체 EBS 용량은 기존 RDS allocated storage와 같은 20GiB가 됩니다.
작업 방향
- DB EC2와 동일 AZ에 별도 gp3 encrypted EBS data volume을 생성합니다.
- data volume 크기는 우선 12GiB를 기준으로 검토합니다.
- 해당 volume을 DB EC2에 attach하고
/var/lib/mysql에 mount되도록 bootstrap을 수정합니다.
- 아직 prod 데이터가 이관되기 전이므로, 기존 DB EC2는 한 번 재생성하는 방식으로 깔끔하게 반영합니다.
- data volume에는
prevent_destroy 등 삭제 방지 설정을 적용할지 검토합니다.
주의 사항
- 이 작업이 완료된 뒤 #51에서 RDS 데이터를 DB EC2로 dump/import하는 것이 안전합니다.
- 실제 migration, API 서버 DB endpoint 전환, 기존 RDS 제거는 이 이슈 범위에 포함하지 않고 각각 후속 이슈에서 진행합니다.
Parent: #39
배경
Issue #50 에서 prod DB 대체용 MySQL EC2가 생성되었지만, 현재 MySQL 데이터 디렉터리(
/var/lib/mysql)는 root volume 위에 위치합니다. 이후 prod RDS 데이터를 이관하기 전에 MySQL data volume을 root volume과 분리할 필요가 있습니다.필요성
RDS 스토리지 사용량 참고
현재 prod RDS의 할당 스토리지는 20GiB입니다.
최근 CloudWatch
FreeStorageSpace기준으로는 여유 공간이 약 18.10GiB 수준입니다.따라서 현재 실사용량 약 1.9GiB 대비 data volume 12GiB는 약 6배 이상의 여유를 가지며, root 8GiB와 합산하면 전체 EBS 용량은 기존 RDS allocated storage와 같은 20GiB가 됩니다.
작업 방향
/var/lib/mysql에 mount되도록 bootstrap을 수정합니다.prevent_destroy등 삭제 방지 설정을 적용할지 검토합니다.주의 사항
Parent: #39