Quay lại bài viết
4 thg 5, 2026
11 min read

Amazon Aurora: Toàn bộ tính năng bạn cần biết

Bạn đang dùng MySQL hoặc PostgreSQL trên RDS, mọi thứ chạy ổn — nhưng bạn muốn nhanh hơn, available hơn, scale dễ hơn? Aurora chính là câu trả lời của AWS.

Amazon Aurora là database engine do AWS tự phát triển, tương thích hoàn toàn với MySQL và PostgreSQL. Điều này có nghĩa là bạn có thể đưa application code hiện tại sang Aurora mà gần như không cần sửa gì — nhưng được AWS đảm bảo hiệu năng gấp 5 lần MySQLgấp 3 lần PostgreSQL so với cùng chạy trên RDS cùng cấu hình.

Điểm khác biệt lớn nhất: Aurora là cloud-native. Storage và compute được tách riêng hoàn toàn — storage tự động grow từ 10GB lên tới 128TB mà không cần bạn can thiệp. Bạn không phải lo provision disk, không phải resize volume lúc nửa đêm.

Bài viết này sẽ đi qua toàn bộ các tính năng chính mà Aurora cung cấp — giúp bạn hiểu Aurora “làm được gì”, không đi sâu vào cơ chế bên trong.


1. High Availability & Storage

Aurora không lưu data ở một chỗ. Khi bạn khởi tạo Aurora, nó tự động tạo 6 bản sao và bắt đầu phân tán trên 3 Availability Zones:

Đây là mô hình quorum — nghĩa là ngay cả khi mất 1 AZ hoàn toàn (2 copies), Aurora vẫn hoạt động bình thường cho cả read lẫn write.

Lưu ý rằng quá trình đồng bộ dữ liệu giữa các node dữ liệu trong storage layer là synchronize, nghĩa là sẽ bao gồm latency của quá trình sync trong user request. Nhưng latency sẽ không đáng kể vì nhiều yếu tố như các data nodes cùng region, sử dụng backbone network, kỹ thuật sync được tối ưu hơn, …

Ngoài ra, storage của Aurora có khả năng self-healing: nếu một block data bị hỏng, Aurora tự phát hiện và sửa bằng cách copy lại từ các bản sao còn lại — hoàn toàn trong nền, không downtime.

Có thể tưởng tượng rằng Aurora = Multi-AZ + RDS

So sánh nhanh với RDS Multi-AZ

Tiêu chíRDS Multi-AZAurora
Cách replicateInstance-level (sync toàn bộ instance)Storage-level (6 copies tự động)
Failover time60–120 giây~30 giây
Storage repairCần AWS can thiệp hoặc tự restoreSelf-healing tự động
Số AZ2 (primary + standby)3 AZ, 6 copies

2. Aurora Replicas & Failover

Aurora hỗ trợ tới 15 Read Replicas trong cùng một region (so với RDS chỉ tối đa 5). Điểm đặc biệt: tất cả replicas đều dùng chung storage volume với primary — nên replication lag gần như bằng 0 (thường dưới 10ms).

Failover tự động

Mỗi replica được gán một priority tier từ 0 đến 15 (0 = ưu tiên cao nhất). Khi primary bị lỗi:

  1. Aurora tự động chọn replica có priority cao nhất (tier thấp nhất)
  2. Nếu cùng tier → chọn replica có size lớn nhất
  3. Promote replica đó thành primary mới
  4. Toàn bộ quá trình mất khoảng 30 giây

Nếu không có replica nào tồn tại, Aurora sẽ tạo một instance mới — nhưng sẽ chậm hơn nhiều. Vì vậy, luôn giữ ít nhất 1 replica cho production.

Endpoints

Aurora cung cấp 2 loại endpoint mặc định:


3. Aurora Replicas Auto Scaling

Khi traffic tăng đột biến, việc thêm replicas bằng tay sẽ chậm và dễ bỏ lỡ thời điểm. Aurora giải quyết bằng Replicas Auto Scaling — tự động thêm/bớt read replicas dựa trên metrics:

Bạn chỉ cần định nghĩa scaling policy (ví dụ: target CPU 60%, min 1 replica, max 10 replicas), Aurora sẽ:

  1. Tự thêm replicas khi load vượt ngưỡng
  2. Tự động đăng ký replicas mới vào Reader Endpoint
  3. Tự bớt replicas khi load giảm

Nhìn vào diagram: Client gửi write traffic qua Writer Endpoint đến primary instance. Read traffic đi qua Reader Endpoint, được phân phối đến các replicas. Khi CPU tăng cao, Aurora tự động mở rộng thêm replicas (phần “Endpoint Extended”) — tất cả vẫn dùng chung Shared Storage Volume.


4. Custom Endpoints

Trong thực tế, không phải mọi read query đều giống nhau. Một câu SELECT * FROM users WHERE id = 1 khác xa một câu analytics query chạy aggregate trên hàng triệu rows. Nếu dồn cả hai loại vào cùng Reader Endpoint, query nặng sẽ ảnh hưởng đến query nhẹ.

Custom Endpoints cho phép bạn gom một nhóm con các replicas lại thành một endpoint riêng, phục vụ cho workload cụ thể.

Diagram cho thấy: Writer Endpoint trỏ đến primary, Reader Endpoint trỏ đến các instance db.r3.large cho general reads, và Custom Endpoint trỏ đến các instance db.r5.2xlarge — dành riêng cho heavy queries như dashboard, reports.

Ví dụ thực tế

EndpointInstance typeWorkload
Writer Endpointdb.r5.xlargeWrite traffic
Reader Endpointdb.r3.largeSimple reads (CRUD, lookup)
Custom Endpoint (analytics)db.r5.2xlargeDashboard, reports, heavy aggregation

Khi đã dùng Custom Endpoints, bạn nên route traffic qua custom endpoints thay vì Reader Endpoint mặc định — vì Reader Endpoint sẽ load-balance đến tất cả replicas, kể cả những instance nhỏ không phù hợp cho heavy queries.


5. Aurora Serverless

Với Aurora thông thường (Provisioned), bạn phải chọn trước instance size. Chọn quá lớn thì tốn tiền, chọn quá nhỏ thì lúc peak sẽ chậm. Aurora Serverless giải quyết bài toán này bằng cách tự động scale compute cho bạn.

Cách hoạt động:

Khi nào dùng Serverless?

Tiêu chíAurora ProvisionedAurora Serverless
Capacity planningBạn chọn instance sizeTự động
BillingPer-hour (instance chạy)Per-second (compute thực tế)
Scale to zeroKhôngCó (v1)
Phù hợp choWorkload ổn định, dự đoán đượcWorkload biến động, dev/test

6. Backup & Restore

Aurora cung cấp nhiều cách để bảo vệ dữ liệu, và một vài tính năng là độc quyền so với RDS thông thường.

Automated Backup

Manual Snapshots

Backtrack (chỉ Aurora MySQL)

Đây là tính năng chỉ Aurora có: “tua ngược” database về một thời điểm trong quá khứ mà không cần tạo cluster mới. Rất hữu ích khi:

Backtrack hoạt động trên chính cluster hiện tại — nhanh hơn nhiều so với PITR (tạo cluster mới từ backup). Tuy nhiên, chỉ hỗ trợ Aurora MySQL.

Clone

Aurora cho phép tạo clone từ cluster hiện tại sử dụng copy-on-write (CoW):

Copy-on-write là kỹ thuật chia sẻ data giữa hai cluster — chỉ thực sự copy data khi có thay đổi. Đây là điểm mấu chốt giúp clone vừa nhanh vừa rẻ. 1 usecase rõ ràng cho việc clone này là bạn muốn tạo 1 cluster cho staging, kế thừa từ production.

Bước 1: Tạo clone

Production cluster ──┐ ├──► Cùng trỏ vào Storage gốc Staging cluster ──┘ ⏱ Vài phút (chỉ tạo metadata) 💰 Không tốn thêm storage

Staging không copy gì cả — nó chỉ “trỏ chung” đến data của production.

Bước 2: Đọc trên staging → đọc trực tiếp từ storage gốc, không phát sinh copy.

Bước 3: Khi staging ghi thay đổi

Staging: UPDATE users SET name='Bob' WHERE id=5 Aurora phát hiện page chứa id=5 sắp bị thay đổi Copy riêng page đó cho clone (chỉ page này) Staging ghi vào bản copy → production giữ nguyên page gốc

Chỉ copy những page bị thay đổi, phần còn lại vẫn share chung.

Storage cost theo mức độ thay đổi:

Tình huốngStorage tốn thêm
Vừa clone xong, chưa làm gì~0 GB
Test sửa 100MB data~100 MB
Test sửa 50% data~50% size cluster gốc

CoW không phải khái niệm riêng của Aurora — Linux fork(), Docker image layers, filesystem ZFS/Btrfs đều dùng nguyên lý này: share đến khi cần phải tách ra.

So với restore từ snapshot (mất hàng giờ + tốn toàn bộ storage), clone hữu ích cho các tình huống cần data production “tươi” để test/debug nhanh:


7. Security

Cả Aurora và RDS đều được xây dựng với nhiều layer bảo mật:


8. Global Aurora

Tất cả các tính năng trên đều hoạt động trong một region. Nhưng nếu bạn cần phục vụ users ở nhiều region, hoặc cần disaster recovery cross-region thì sao? Aurora cung cấp 2 cách tiếp cận:

Cross-Region Read Replicas

Aurora Global Database (khuyến nghị)

Đây là giải pháp được AWS recommend cho multi-region:

┌──────────────────────┐ │ Primary Region │ │ (us-east-1) │ │ │ │ Writer Instance │ │ + Read Replicas │ └──────────┬───────────┘ Replication < 1 second ┌────────────────┼────────────────┐ ▼ ▼ ▼ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ Secondary Region│ │ Secondary Region│ │ Secondary Region│ │ (eu-west-1) │ │ (ap-southeast-1)│ │ (ap-northeast-1)│ │ │ │ │ │ │ │ Up to 16 │ │ Up to 16 │ │ Up to 16 │ │ Read Replicas │ │ Read Replicas │ │ Read Replicas │ └─────────────────┘ └─────────────────┘ └─────────────────┘

So sánh 2 cách tiếp cận

Tiêu chíCross-Region Read ReplicaAurora Global Database
SetupĐơn giảnPhức tạp hơn một chút
Replication lagVài giâyDưới 1 giây
Số secondary regions1 replica tại 1 thời điểmLên tới 5 regions
Replicas mỗi regionLên tới 16
DR promotionThủ công, chậm hơnRTO dưới 1 phút
Use caseDR cơ bảnProduction global apps

Nếu bạn đang build một ứng dụng phục vụ users toàn cầu và cần cả low-latency reads lẫn disaster recovery nhanh, Aurora Global Database là lựa chọn không cần suy nghĩ.


Tổng kết

Aurora không chỉ là “RDS nhanh hơn” — nó là một database engine được thiết kế lại từ đầu cho cloud với hàng loạt tính năng mà RDS thông thường không có: self-healing storage, 15 replicas với gần 0 lag, auto scaling, custom endpoints, serverless, backtrack, và global database với replication dưới 1 giây.

Khi nào chọn Aurora thay vì RDS?

Trade-off duy nhất: Aurora đắt hơn khoảng 20% so với RDS — nhưng với những gì nó mang lại, đây thường là khoản đầu tư xứng đáng cho production workloads.

Liên quan