[AWS] Amazon RDS (Relational Database Service)
정의
Amazon RDS (Relational Database Service) 는 AWS 가 관리하는 관계형 데이터베이스 서비스 입니다. 6개 엔진 (MySQL, PostgreSQL, MariaDB, Oracle, SQL Server, IBM Db2) 을 지원하며, 프로비저닝/패치/백업/HA 를 AWS 가 담당합니다. Aurora 는 기술적으로 별개 서비스 (rds API 를 공유하지만 스토리지/엔진이 다름).
지원 엔진
| 엔진 | 특성 |
|---|---|
| MySQL | 5.7 EOL 진행, 8.0, 8.4 (2025+) |
| PostgreSQL | 13-17 활성, 12- Extended Support |
| MariaDB | 10.6, 10.11, 11.4 |
| Oracle | Standard Edition 2, Enterprise Edition |
| SQL Server | Express, Web, Standard, Enterprise |
| IBM Db2 | Standard, Advanced (2023+) |
Aurora (별도):
- Aurora MySQL (5.7, 8.0 호환)
- Aurora PostgreSQL (13-17)
- Aurora Serverless v2
- Aurora DSQL (2024+, distributed serverless)
- Aurora Global Database
RDS vs Aurora
| 축 | RDS 표준 | Aurora |
|---|---|---|
| 엔진 | 6 개 | MySQL, PostgreSQL 호환 |
| 스토리지 | EBS (인스턴스에 붙음) | Shared cluster storage (S3 backed) |
| 성능 | 표준 | 3-5배 (MySQL 대비) |
| HA | Multi-AZ standby | 자체 6-way replica × 3 AZ |
| Read replica | 최대 5 (엔진 별) | 최대 15 |
| Failover | 60-120s | < 30s |
| 비용 | 낮음 | 높음 (성능/기능 대가) |
| Storage 자동 확장 | 128 TiB (자동) | 128 TiB (자동) |
| Serverless | X (RDS Custom 예외) | Aurora Serverless v2 |
결정:
- 소규모 / 단순 앱 -> RDS 표준
- 고가용성 + 확장성 + PostgreSQL/MySQL -> Aurora
- Oracle / SQL Server / Db2 -> RDS (Aurora 미지원)
인스턴스 클래스
- db.t4g, db.t3: Burstable, dev/test
- db.m5, db.m6i, db.m7g: General purpose
- db.r5, db.r6i, db.r7g, db.x2g: Memory optimized
- db.z1d: High single-threaded (Oracle)
Graviton (t4g, m6g, r6g, r7g): 20-30% 저비용, 대부분 워크로드 호환.
스토리지
| 타입 | 특성 |
|---|---|
| General Purpose SSD (gp2, gp3) | 대부분 워크로드. gp3 는 IOPS/throughput 독립 설정 |
| Provisioned IOPS (io1, io2) | 예측 가능한 고성능 (수십만 IOPS) |
| Magnetic | Legacy, 사용 안 함 |
Storage Autoscaling: 자동 확장 (권장). 초기 크기 + 상한 지정.
Multi-AZ Deployments
자세한 것은 RDS Multi-AZ 참조.
Multi-AZ Instance (전통)
- Primary + Standby (다른 AZ)
- 동기 replication
- Standby 는 접근 불가 (백업/failover 용)
- Failover: 60-120s
- Read scale: X (읽기도 primary 만)
Multi-AZ DB Cluster (Cluster mode)
- Primary + 2 Reader (3 AZ)
- 반동기 (semi-sync)
- Reader 에 접근 가능 (read scale)
- Failover: 35s 이하
- MySQL 8.0.28+, PostgreSQL 13+ 지원
Read Replica
- 비동기 replication
- 최대 5 개 (MySQL/PostgreSQL/MariaDB), 15 개 (Aurora)
- Cross-region 가능
- 승격 가능 (primary 로)
- 요금: 인스턴스 시간 + inter-AZ 데이터 전송
백업 & 복구
Automated Backup
- 매일 스냅샷 + transaction log 저장
- Retention: 1-35일
- Backup window: 자동 또는 수동 지정
- PITR (Point-in-time Recovery): 초 단위 (5분 기본, log 발행 간격)
Manual Snapshot
- 사용자 지정
- 무제한 유지
- Cross-region copy 가능
- Cross-account share 가능
Snapshot Export to S3
Parquet 형식으로 S3 export -> Athena/Redshift Spectrum 분석.
Blue/Green Deployments (2023+)
Zero-downtime engine upgrade / schema change.
Blue (production) ────┐
├── promote green
Green (staging copy) ──┘
- Green 은 blue 의 완전 복제 + 원하는 변경 (버전 업, 스키마)
- 프로덕션 트래픽은 계속 blue
- Green 검증 후 switchover 실행 (< 1분)
- 두 endpoint 이름 교체
- 자동 replica lag 검증, safety check
MySQL / PostgreSQL / MariaDB 지원. Oracle/SQL Server 는 별도 방식.
RDS Proxy
Connection pooling + failover 가속 + IAM/Secrets Manager 통합.
해결하는 문제:
- Lambda / 서버리스가 요청마다 새 connection 열어 DB 소진
- Failover 시 connection reset 느림
App / Lambda ── RDS Proxy ── RDS instance
- Proxy 가 물리 연결 pool 유지
- App connect 는 논리 연결 (fast open/close)
- Failover 감지 시 자동 재라우팅
- IAM 인증, Secrets Manager 통합
- Endpoint 별 read/write 분리
주의: TLS 필수, 요금 (시간당 + 데이터).
Performance Insights
Query-level 성능 분석. DB Load 를 시각화 (초당 avg active sessions).
- Top SQL, Top waits, Top hosts
- Retention: 7일 무료, 최대 2년 유료
- SQL statistics: query 별 실행 통계
Enhanced Monitoring 은 OS 레벨 (CPU, memory, disk IOPS).
IAM Database Authentication
패스워드 대신 IAM 토큰:
# MySQL/PostgreSQL
TOKEN=$(aws rds generate-db-auth-token \
--hostname mydb.abcd.us-east-1.rds.amazonaws.com \
--port 3306 \
--region us-east-1 \
--username db_user)
mysql -h mydb.abcd.us-east-1.rds.amazonaws.com \
-P 3306 --user=db_user --password=$TOKEN \
--enable-cleartext-plugin
- RDS Proxy 함께 쓰면 Secrets Manager 로 완전 secretless
- 토큰 15분 유효
- Connection rate limit: IAM auth 는 무겁게 인증. 초당 200 초과는 문제
Extended Support (2024~)
EOL 이후에도 유료 지속 지원. 예:
- MySQL 5.7 EOL 이후 3년 Extended
- PostgreSQL 12 EOL 이후 3년
요금: engine hour 요금이 2-3배. 마이그레이션 유도가 목적.
RDS Custom
Oracle / SQL Server 를 위한 hybrid. OS + DB engine 접근 가능 (SSH 등). 관리 자동화 일부 + 사용자 통제 일부. Legacy 앱 이관에 유용.
보안
- VPC: 반드시 (public 노출 옵션 있지만 강력 비권장)
- Encryption: KMS at rest (기본 활성 권장)
- TLS in transit: 강제 가능 (
rds.force_ssl등) - KMS 키 rotation
- IAM auth (위 참조)
- Secrets Manager 통합: 자동 rotation
- Audit logging: CloudWatch Logs
- Deletion Protection: 실수 삭제 방지
파라미터 그룹
DB 파라미터 관리. Cluster 나 인스턴스에 attach.
# 예: MySQL innodb_buffer_pool_size 조정
aws rds modify-db-parameter-group \
--db-parameter-group-name my-mysql-params \
--parameters "ParameterName=innodb_buffer_pool_size,ParameterValue=1073741824,ApplyMethod=pending-reboot"
- Default parameter group: 수정 불가
- Custom parameter group: 사용자 정의
Option Group (Oracle, SQL Server)
라이선스, 옵션 (SQL Server Audit, Oracle APEX 등) 관리.
Maintenance Window
주간 30분. AWS 가 minor version upgrade, patch 적용.
모니터링 지표
CloudWatch:
CPUUtilization,FreeableMemory,FreeStorageSpaceDatabaseConnections,ReadIOPS,WriteIOPSReadLatency,WriteLatencyReplicaLag(read replica)BurstBalance(t 시리즈)
Alert 필수: FreeStorageSpace, CPU 지속 90%+, ReplicaLag.
Common Anti-Pattern
1. Public 노출
PubliclyAccessible = true + Security Group 0.0.0.0/0. 최악.
2. 백업 비활성화
backup-retention-period 0. 실수 시 복구 불가.
3. Multi-AZ 안 함
프로덕션에서 반드시 활성. Failover 없이 AZ 장애 = downtime.
4. Connection 관리 안 함
DB 최대 연결 수 관리 없이 client 방치 -> too many connections. RDS Proxy 또는 client-side pool (pgbouncer, HikariCP).
5. Storage 급증 방치
Storage autoscaling + FreeStorageSpace 알람. 소진 시 DB stop.
함정
WARNING
Multi-AZ 표준 인스턴스는 read replica 아님. Standby 접근 불가. Read scale 하려면 별도 read replica 또는 Multi-AZ Cluster mode.
CAUTION
Storage 축소 불가. 100 -> 50 GB 는 새 DB 로 복원해야. 초기 크기 신중.
WARNING
Reserved Instance 잘못 사면 낭비. On-demand 로 사용 패턴 검증 후 RI.
IMPORTANT
Blue/Green switchover 는 원본 blue 유지. 몇 시간 안 삭제해 롤백 가능. 하지만 요금 두 배.
CAUTION
Snapshot restore 는 새 endpoint. DNS 변경 필요. Route53 alias 로 완화.
WARNING
Extended Support 요금 폭탄. EOL 근접 엔진은 미리 업그레이드.
RDS vs Aurora 결정 트리
- Oracle / SQL Server / Db2 필요 -> RDS
- MySQL / PostgreSQL, small workload, 비용 우선 -> RDS
- 고성능 / 고가용성 / 15+ replica / global -> Aurora
- Serverless / spiky workload -> Aurora Serverless v2
- Multi-region low-latency / DR -> Aurora Global Database
- Truly serverless multi-region strong consistency -> Aurora DSQL (2024+ preview/GA)
RDS vs 다른 관리형 DB
| DB | 강점 | 언제 |
|---|---|---|
| RDS | 6 엔진, 성숙 | 표준 관계형 |
| Aurora | 성능, 확장 | 대규모 MySQL/PG |
| DynamoDB | Key-value, single-digit ms | NoSQL, 서버리스 |
| **[[aws-neptune | Neptune]]** | 그래프 |
| **[[aws-documentdb | DocumentDB]]** | 문서 |
| **[[aws-redshift | Redshift]]** | 분석 |
관련 위키
- RDS Multi-AZ - HA 심화
- Neptune - 그래프 대안
- DocumentDB - 문서 대안
- Redshift - 분석 대안
- S3 - Snapshot export
- IAM - IAM database authentication
- KMS - 저장 암호화
- Secrets Manager - credential rotation
- VPC - 네트워크
- CloudWatch - 모니터링
- Lambda - RDS Proxy 조합
- MVCC - 트랜잭션 배경
이 글의 용어 (12개)
- [AWS] Amazon DocumentDBcloud
- 정의 Amazon DocumentDB 는 AWS 가 관리하는 문서 지향 (document-oriented) NoSQL 데이터베이스 로, MongoDB API 호환 을 제공합니다.…
- [AWS] Amazon Neptunecloud
- 정의 Amazon Neptune 은 AWS 가 관리하는 그래프 데이터베이스 서비스입니다. 두 데이터 모델과 세 쿼리 언어를 모두 지원합니다. - Property Graph 모델:…
- [AWS] Amazon Redshiftcloud
- 정의 Amazon Redshift 는 AWS 가 관리하는 페타바이트 규모 컬럼형 데이터 웨어하우스 입니다. 2012년 PostgreSQL 8.0.2 를 기반으로 시작해 MPP (…
- [AWS] CloudWatch: 메트릭, 로그, 알람cloud
- 정의 CloudWatch = AWS 의 모니터링 + 로그 + 알람 통합 서비스. 메트릭 수집, 로그 집계, 대시보드, 알람, 이상 감지를 하나의 서비스에서 제공. 사용 상황 | …
- [AWS] IAM: User, Role, Policy, STScloud
- 정의 IAM (Identity and Access Management) = AWS 의 권한 관리 전부. User, Group, Role, Policy 로 구성. "누가 어떤 리소…
- [AWS] KMS: 암호화 키 관리, envelope encryptioncloud
- 정의 KMS (Key Management Service) = 암호화 키 중앙 관리. envelope encryption + IAM 통합 + 감사 로그. 키 종류 | 종류 | 의미…
- [AWS] Lambda: 서버리스 함수, 트리거, 동시성cloud
- 정의 AWS Lambda = 서버리스 함수 실행. 이벤트 트리거 → 함수 실행 → 결과 / 비동기 처리. 서버 관리 0. 사용 상황 | 상황 | Lambda 적합성 | |---|…
- [AWS] RDS Multi-AZ + Read Replicacloud
- 정의 RDS (Relational Database Service) = AWS 의 managed RDB. MySQL, PostgreSQL, MariaDB, Oracle, SQL S…
- [AWS] S3: object storage, storage classes, lifecyclecloud
- 정의 S3 = AWS 의 object storage. bucket + key + object. 11 9's durability (99.999999999%), 무한 확장. 2026…
- [AWS] Secrets Manager + Parameter Storecloud
- 정의 AWS Secrets Manager = 회전이 필요한 비밀 (DB 패스워드, API key) 을 안전하게 저장/관리하는 서비스. Lambda 기반 자동 회전과 암호화 내장.…
- [AWS] VPC: subnet, route, NAT, peeringcloud
- 정의 VPC (Virtual Private Cloud) = AWS 안의 논리적 격리 네트워크. CIDR 정의 + subnet 분할 + 라우팅. AWS 리소스를 격리된 네트워크에 …
- [DB Internals] MVCC: Multi-Version Concurrency Controldatabase-internals
- 정의 MVCC (Multi-Versioning Concurrency Control) 는 트랜잭션 간 격리를 여러 버전의 row 로 구현. 동시 read / write 가 락 없이…
이 개념을 다룬 위키 페이지 (8)
- wiki[AWS CAF] Platform Perspective
- wiki[AWS] Amazon DocumentDB
- wiki[AWS] EBS vs Instance Store: 영속 vs 임시 스토리지
- wiki[AWS] KMS: 암호화 키 관리, envelope encryption
- wiki[AWS] Amazon Neptune
- wiki[AWS] Amazon Redshift
- wiki[AWS] Secrets Manager + Parameter Store
- wiki[AWS] Security Group vs NACL: stateful vs stateless 방화벽
💬 댓글