Amazon Aurora
Aurora Architecture, Serverless v2, Global Database, Replicas, Endpoints
Tổng quan
Amazon Aurora là database engine của AWS, được thiết kế từ đầu cho cloud. Tương thích với MySQL và PostgreSQL.
Key Features
| Feature | Giá trị |
|---|---|
| Hiệu suất | 5x MySQL, 3x PostgreSQL |
| Storage | Auto-scaling 10GB → 128TB |
| Replicas | Tối đa 15 Aurora Replicas |
| Failover | ~30 giây (nhanh hơn RDS) |
| Durability | 6 copies across 3 AZs |
| Compatibility | MySQL 5.7/8.0, PostgreSQL 10-16 |
Tại sao Aurora nhanh hơn RDS?
Aurora nhanh hơn không phải vì thay đổi MySQL/PostgreSQL engine, mà vì AWS thiết kế lại hoàn toàn tầng storage.
Kiến trúc truyền thống (RDS MySQL/PostgreSQL)
Kiến trúc Aurora
So sánh cụ thể
| Thao tác | RDS MySQL | Aurora |
|---|---|---|
| UPDATE 1 row (100 bytes) | Ghi page 16KB + replicate | Gửi log ~100 bytes |
| Network I/O | Nặng | Giảm 90%+ |
| Replica lag | Seconds | ~10-20ms |
| Failover | 1-2 phút | ~30 giây |
Aurora Storage Architecture
6 Copies Across 3 AZs (Cluster Volume)
Khi bạn ghi 1 record vào Aurora, Aurora TỰ ĐỘNG sao chép record đó ra 6 bản, lưu ở 3 Availability Zones khác nhau.
[!NOTE] Cluster Volume là tên chính thức của AWS cho storage layer này. Các tên khác: Shared Storage, Aurora Storage, Distributed Storage - đều là cùng 1 thứ!
[!NOTE] Đây là ở tầng STORAGE (ổ đĩa), MẶC ĐỊNH và TỰ ĐỘNG - bạn KHÔNG cần config gì cả!
Tại sao cần 6 copies? (Không phải 3?)
[!IMPORTANT] 6 copies là MẶC ĐỊNH, luôn luôn, không đổi được! Dù bạn có 1 Primary hay 15 Replicas → storage vẫn là 6 copies. Bạn CHỈ TRẢ TIỀN 1 LẦN (không x6).
Nếu chỉ có 3 copies (1 per AZ):
Với 6 copies (2 per AZ):
Tác dụng của 6 copies
| Tác dụng | Chi tiết |
|---|---|
| 🛡️ Durability | Mất 3 copies vẫn an toàn (11 nines: 99.999999999%) |
| ⚡ Write Performance | Chỉ cần 4/6 ACK = không đợi slow disks |
| 📖 Read Performance | Đọc từ copy nào gần/nhanh nhất |
| 🔧 Self-healing | AWS tự động rebuild copy bị hỏng |
| 🌍 AZ Failure Tolerance | Mất cả 1 AZ (2 copies) vẫn hoạt động bình thường |
Quorum: 4/6 để ghi, 3/6 để đọc
Vấn đề: Nếu phải đợi cả 6 copies ghi xong thì rất chậm, và nếu 1 ổ hỏng thì bị treo!
Giải pháp: Chỉ cần ĐA SỐ đồng ý là được (Quorum)
Tại sao 4/6 và 3/6?
Aurora biết data nào mới nhất bằng LSN
LSN (Log Sequence Number) = Số thứ tự phiên bản (như version number)
[!TIP] Tóm tắt:
- 6 copies = Data cực kỳ an toàn
- 4/6 write = Nhanh, không đợi tất cả
- 3/6 read = Luôn đọc được data mới nhất (nhờ LSN)
Storage Auto-Scaling
Aurora Replicas
So sánh với RDS Read Replicas
| Đặc điểm | RDS Read Replica | Aurora Replica |
|---|---|---|
| Số lượng tối đa | 5 | 15 |
| Replication | Async (lag seconds) | Sync (lag ~10-20ms) |
| Storage | Riêng biệt | Shared (cùng storage layer) |
| Failover tự động | ❌ Manual promote | ✅ Tự động |
| Reader Endpoint | ❌ Không có | ✅ Có sẵn |
Aurora Replica Architecture
Replica Auto Scaling
Aurora Endpoints
Aurora có 4 loại endpoints:
Số lượng Endpoints
| Loại Endpoint | Số lượng | Tự động/Manual |
|---|---|---|
| Cluster (Writer) | 1 | Tự động tạo |
| Reader | 1 | Tự động tạo |
| Instance | = số instances | Tự động tạo |
| Custom | Tối đa 5 | Bạn tự tạo |
Ví dụ: 1 Primary + 2 Replicas
[!TIP] Endpoints hoàn toàn MIỄN PHÍ! Bạn chỉ trả tiền cho Instances, Storage và I/O. Endpoints chỉ là DNS routing - AWS không charge.
Custom Endpoints Use Case
Aurora Serverless
[!IMPORTANT] Serverless scale RESOURCE (CPU/RAM) của instance, KHÔNG phải số lượng instances! Đây khác với Replica Auto Scaling (thêm/bớt replicas).
Aurora Serverless v1 vs v2
| Feature | Serverless v1 | Serverless v2 |
|---|---|---|
| Scaling | Pause/Resume (có gap) | Continuous (smooth) |
| Min capacity | 0 ACUs (pause) | 0.5 ACUs |
| Max capacity | 256 ACUs | 128 ACUs |
| Scale time | 30 giây - vài phút | Giây |
| Read replicas | ❌ | ✅ |
| Global Database | ❌ | ✅ |
ACU (Aurora Capacity Units)
Serverless Scaling - Dựa vào đâu?
Aurora Serverless v2 tự động monitor và scale dựa trên:
| Metric | Mô tả |
|---|---|
| CPU Utilization | % CPU đang sử dụng |
| Memory Pressure | RAM cần thiết cho workload |
| Active Connections | Số connections đang hoạt động |
| Buffer Pool Usage | Bộ nhớ đệm cho queries |
So sánh: Serverless vs Replica Auto Scaling
| Serverless (ACU Scaling) | Replica Auto Scaling | |
|---|---|---|
| Scale gì? | Resources (CPU/RAM) của instance | Số lượng replicas |
| Dựa vào | CPU, Memory, Connections (tự động) | Bạn config: CPU target hoặc Connections |
| Hướng | Vertical (instance mạnh hơn) | Horizontal (thêm instances) |
Serverless v2 Architecture
Use Cases
| Use Case | Chọn gì? |
|---|---|
| Unpredictable workloads | Serverless v2 |
| Dev/Test environments | Serverless v2 |
| Variable traffic (spiky) | Serverless v2 |
| Consistent high traffic | Provisioned |
| Cost optimization cần pause | Serverless v1 (0 ACUs) |
Aurora Global Database
Aurora Global Database là gì?
Aurora Global Database là mô hình triển khai Aurora trên nhiều AWS Region:
- 1 primary Region (đọc/ghi chính)
- Tối đa 10 secondary Regions (read-only)
- Dữ liệu từ primary được replicate sang secondary qua hạ tầng chuyên dụng của Aurora, độ trễ replication thường dưới 1 giây
Mục tiêu chính:
- Global reads với local latency (người dùng ở EU đọc từ EU, APAC đọc từ APAC)
- Disaster Recovery cấp Region (khi primary Region gặp sự cố có thể promote secondary)
- Giữ nguyên mô hình RDBMS Aurora (SQL, transaction, engine compatibility)
Cross-Region Replication
Cách hoạt động (ngắn gọn)
- Ứng dụng ghi dữ liệu vào writer endpoint của global database (luôn trỏ về primary writer)
- Aurora replicate thay đổi từ primary sang các secondary Region ở tầng storage
- Ứng dụng gần người dùng đọc từ reader endpoint ở Region gần nhất
- Khi cần DR:
- Switchover: chuyển primary có kế hoạch
- Failover: chuyển primary khi primary Region lỗi
Lưu ý quan trọng cho thiết kế: Aurora Global Database replicate ở mức cluster/database, không phải chọn riêng từng table trong cùng cluster để global.
Key Features
| Feature | Value |
|---|---|
| Replication lag | Thường < 1 giây |
| Secondary regions | Tối đa 10 |
| Replicas per region | Tối đa 16 |
| Write endpoint | Global writer endpoint luôn trỏ primary writer |
| Switchover/Failover | Hỗ trợ chuyển primary cross-Region |
| Write forwarding | Secondary có thể forward write về primary (nếu bật) |
Use Cases
- Gaming/SaaS toàn cầu: người dùng nhiều châu lục cần read latency thấp
- Region-level DR: yêu cầu RTO/RPO tốt hơn replication truyền thống
- Mở rộng quốc tế nhưng muốn ít refactor: vẫn dùng Aurora SQL thay vì chuyển NoSQL
Khi nào KHÔNG nên dùng?
- Cần multi-master write độc lập ở nhiều Region (Global DB có 1 primary writer tại một thời điểm)
- Chỉ chạy trong 1 Region, không cần global reads/DR cross-Region
- Workload chủ yếu key-value đơn giản, không cần relational features (có thể cân nhắc DynamoDB)
Ví dụ thực tế dễ hình dung
- Công ty game hiện chạy ở
us-east-1, mở rộng sang EU và APAC - Đặt primary ở
us-east-1, tạo secondary ởeu-west-1vàap-southeast-1 - Người chơi EU đọc leaderboard/profiles từ
eu-west-1để giảm latency - Nếu primary Region gặp sự cố, secondary Region có thể được promote thành primary để tiếp tục phục vụ
Nguồn AWS chính thức
- Aurora Global Database (User Guide): https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database.html
- Aurora Global Database (Product page): https://aws.amazon.com/rds/aurora/global-database/
Aurora Multi-Master
⚠️ Deprecated: Aurora Multi-Master đã bị deprecated. Thay thế bằng Aurora Serverless v2 hoặc Aurora Global Database.
Aurora Machine Learning
Aurora có thể gọi AWS ML services trực tiếp từ SQL:
Supported Services
| Service | Function |
|---|---|
| Amazon Comprehend | Sentiment analysis, entity detection |
| Amazon SageMaker | Custom ML models |
Backup và Recovery
Automated Backups
Backtrack (Aurora MySQL only)
Clone
Aurora vs RDS
So sánh tổng quan
| Tiêu chí | RDS MySQL/PostgreSQL | Aurora |
|---|---|---|
| Performance | Baseline | 5x MySQL, 3x PostgreSQL |
| Storage | EBS (provision trước) | Auto-scaling 10GB-128TB |
| Max Storage | 64TB | 128TB |
| Replication | Async (lag seconds) | Sync (~10-20ms lag) |
| Max Replicas | 5 | 15 |
| Failover | 1-2 phút | ~30 giây |
| Reader Endpoint | ❌ | ✅ |
| Backtrack | ❌ | ✅ (MySQL only) |
| Clone | ❌ (snapshot restore) | ✅ (seconds) |
| Serverless | ❌ | ✅ v1 và v2 |
| Global Database | ❌ | ✅ |
| Giá | Thấp hơn ~20% | Cao hơn |
So sánh High Availability (HA)
| Tiêu chí | RDS Multi-AZ | Aurora |
|---|---|---|
| Kiến trúc | Primary + Standby (riêng biệt) | Primary + Shared Storage |
| Standby đọc được? | ❌ Không (chỉ failover) | ✅ Replicas đọc được |
| Số lượng standby | 1 (hoặc 2 với Multi-AZ Cluster) | Tối đa 15 replicas |
| Failover time | 1-2 phút | ~30 giây |
| Data sync | Synchronous block-level | Log-based (nhẹ hơn) |
So sánh Replication
| Tiêu chí | RDS Read Replica | Aurora Replica |
|---|---|---|
| Cơ chế | Async binlog replication | Shared storage (không cần copy data) |
| Replica lag | Seconds - minutes | ~10-20ms |
| Cross-region | ✅ (lag cao hơn) | ✅ Global Database (<1 giây) |
| Failover tự động | ❌ Manual promote | ✅ Tự động |
| Reader Endpoint | ❌ Phải tự load balance | ✅ Có sẵn |
| Storage cost | × số replicas | Shared (1 lần) |
So sánh Storage Architecture
| Tiêu chí | RDS | Aurora |
|---|---|---|
| Storage type | EBS (gp2, gp3, io1, io2) | Distributed SSD (tự quản lý) |
| Provisioning | Phải chọn trước | Auto-scaling |
| Scaling | Cần modify + có thể downtime | Tự động, không downtime |
| Max size | 64TB | 128TB |
| Durability | EBS: 99.999% | 6 copies/3 AZs: 99.999999999% |
| IOPS | Phải provision (io1/io2) | Included (scale với storage) |
So sánh Features
| Feature | RDS | Aurora |
|---|---|---|
| Multi-AZ | ✅ | ✅ (mặc định với replicas) |
| Read Replicas | ✅ (max 5) | ✅ (max 15) |
| Automated Backups | ✅ | ✅ |
| Point-in-Time Recovery | ✅ | ✅ |
| Backtrack | ❌ | ✅ (MySQL) |
| Clone | ❌ | ✅ |
| Serverless | ❌ | ✅ |
| Global Database | ❌ | ✅ |
| Blue/Green Deployments | ✅ | ✅ |
| Performance Insights | ✅ | ✅ |
| IAM DB Authentication | ✅ | ✅ |
| Secrets Manager Integration | ✅ | ✅ |
Khi nào chọn gì?
| Scenario | Chọn | Lý do |
|---|---|---|
| Budget constrained | RDS | Rẻ hơn ~20% |
| Simple apps, predictable load | RDS | Đủ dùng, tiết kiệm |
| High performance, low latency | Aurora | 5x faster |
| Need fast failover (<1 phút) | Aurora | 30 giây failover |
| Many read replicas (>5) | Aurora | Max 15 replicas |
| Cross-region DR | Aurora | Global Database |
| Unpredictable workloads | Aurora Serverless v2 | Auto-scale ACUs |
| Need to pause DB (dev/test) | Aurora Serverless v1 | 0 ACUs = $0 |
| Quick recovery từ human error | Aurora | Backtrack (seconds) |
| Test với production data | Aurora | Clone (seconds) |
Pricing
Components
| Component | Pricing (us-east-1) |
|---|---|
| Instance | $0.073/hr (db.r6g.large) |
| Storage | $0.10/GB-month |
| I/O | $0.20 per 1 million requests |
| Backup | Free up to DB size |
Aurora I/O-Optimized
Best Practices
-
Dùng Reader Endpoint cho tất cả reads (Amazon tự động load balance)
-
Custom Endpoints để tách biệt OLTP và Analytics workloads
-
Aurora Serverless v2 cho dev/test để tối ưu cost
-
Enable Backtrack (MySQL) để recover từ human errors nhanh
-
Clone thay vì snapshot để test với production data
-
Global Database cho multi-region DR và low-latency reads
-
Performance Insights để monitor và tune queries
Exam Tips
-
Aurora nhanh hơn vì log-based replication, shared storage layer
-
Failover ~30 giây (nhanh hơn RDS 1-2 phút)
-
Reader Endpoint có sẵn (RDS Read Replicas không có)
-
15 replicas (RDS chỉ có 5)
-
Backtrack = "rewind" database (chỉ MySQL)
-
Clone = copy terabytes trong seconds
-
Serverless v2 = continuous scaling (v1 có cold start)
-
Global Database = cross-region < 1 giây lag
-
Storage auto-scaling 10GB → 128TB (RDS phải provision)
-
6 copies across 3 AZs = high durability