Giới thiệu

Amazon Relational Database Service (Amazon RDS)

ℹ️ Information: Amazon Relational Database Service (Amazon RDS) là dịch vụ quản lý cho phép bạn triển khai và quản lý cơ sở dữ liệu quan hệ trên AWS. Amazon RDS được thiết kế cho xử lý giao dịch trực tuyến (OLTP) và phù hợp nhất với các yêu cầu lưu trữ dữ liệu có cấu trúc và quan hệ.

Amazon RDS cung cấp các lợi ích chính:

  • Thay thế dễ dàng cho các instance cơ sở dữ liệu truyền thống
  • Sao lưu tự động và vá lỗi trong khung giờ bảo trì do khách hàng xác định
  • Mở rộng, sao chép và tính sẵn có chỉ với một nút nhấn

Create a VPC

Hệ thống cơ sở dữ liệu được hỗ trợ

Amazon RDS hỗ trợ các hệ thống cơ sở dữ liệu sau:

  • Amazon Aurora
  • MySQL
  • MariaDB
  • Oracle
  • SQL Server
  • PostgreSQL

⚠️ Warning: RDS là dịch vụ được quản lý và bạn không có quyền truy cập vào máy chủ EC2 cơ bản (không có quyền truy cập root). Ngoại lệ là Amazon RDS Custom, cho phép truy cập vào hệ điều hành cơ bản, nhưng chỉ có sẵn cho một số DB Engine giới hạn.

Tính năng quản lý của Amazon RDS

Dịch vụ quản lý Amazon RDS bao gồm:

  • Bảo mật và vá lỗi cho DB instances
  • Sao lưu tự động cho DB instances
  • Cập nhật phần mềm cho DB engine
  • Mở rộng dễ dàng cho lưu trữ và tính toán
  • Tùy chọn Multi-AZ với sao chép đồng bộ
  • Tự động chuyển giao cho tùy chọn Multi-AZ
  • Tùy chọn Read Replicas cho tải công việc nặng về đọc

ℹ️ Information: DB instance là môi trường cơ sở dữ liệu trong đám mây với tài nguyên tính toán và lưu trữ mà bạn chỉ định. DB instances được truy cập thông qua các điểm cuối (endpoints) có thể được truy xuất từ AWS Management Console, API DescribeDBInstances hoặc lệnh describe-db-instances.

💡 Pro Tip: Mặc định, khách hàng được phép có tối đa 40 DB instances Amazon RDS (chỉ có 10 trong số này có thể là Oracle hoặc SQL Server trừ khi bạn có giấy phép riêng).

Cửa sổ bảo trì và sự kiện

Cửa sổ bảo trì được cấu hình để cho phép thực hiện các sửa đổi DB instances như mở rộng và cài đặt phần mềm vá. Bạn có thể xác định cửa sổ bảo trì hoặc AWS sẽ lên lịch cho một cửa sổ 30 phút.

ℹ️ Information: Xác thực tích hợp với Windows chỉ hoạt động với SQL Server khi sử dụng các miền được tạo bằng AWS Directory Service - cần thiết lập mối tin tưởng với thư mục AD trên môi trường truyền thống.

Sự kiện và Thông báo

  • Amazon RDS sử dụng AWS SNS để gửi sự kiện RDS qua thông báo SNS
  • Bạn có thể sử dụng API DescribeEvents để liệt kê các sự kiện RDS trong 14 ngày qua
  • Bạn có thể xem các sự kiện trong 14 ngày qua bằng dòng lệnh CLI
  • Trong AWS Console, bạn chỉ có thể xem các sự kiện RDS trong 1 ngày qua

Khi nào sử dụng RDS và các dịch vụ thay thế

Dịch vụ lưu trữ dữ liệu Khi nào sử dụng
Cơ sở dữ liệu trên EC2 Kiểm soát tối đa về cơ sở dữ liệu, ưa chuộng DB không có sẵn trên RDS
Amazon RDS Cần cơ sở dữ liệu quan hệ truyền thống cho OLTP, dữ liệu có cấu trúc tốt, ứng dụng hiện có yêu cầu RDBMS
Amazon DynamoDB Dữ liệu cặp tên/giá trị, cấu trúc không dự đoán được, hiệu suất trong bộ nhớ với tính bền vững, nhu cầu I/O cao
Amazon Redshift Khối lượng lớn dữ liệu, chủ yếu là tải phân tích (OLAP)
Amazon Neptune Mối quan hệ giữa các đối tượng là một phần quan trọng của giá trị dữ liệu
Amazon ElastiCache Lưu trữ tạm thời nhanh cho lượng dữ liệu nhỏ, dữ liệu biến động cao
Amazon S3 Đối tượng nhị phân lớn (BLOBs), các trang web tĩnh

💡 Pro Tip: Nếu trường hợp sử dụng của bạn không được hỗ trợ trên RDS, bạn có thể chạy cơ sở dữ liệu trên Amazon EC2 với kiểm soát đầy đủ và tính linh hoạt tối đa, nhưng phải tự quản lý mọi thứ như sao lưu, dự phòng, cập nhật và mở rộng.

Mã hóa và bảo mật

🔒 Security Note: Bạn có thể mã hóa các DB instances và bản snapshot Amazon RDS khi nghỉ bằng cách bật tùy chọn mã hóa. Mã hóa khi nghỉ được hỗ trợ cho tất cả các loại DB và sử dụng AWS KMS.

Khi sử dụng mã hóa khi nghỉ, các yếu tố sau cũng được mã hóa:

  • Tất cả bản snapshot DB
  • Sao lưu
  • Lưu trữ instance DB
  • Read Replicas

⚠️ Warning: Bạn không thể mã hóa một DB hiện có, bạn cần tạo một bản snapshot, sao chép nó, mã hóa bản sao, sau đó xây dựng một DB đã được mã hóa từ bản snapshot.

RDS hỗ trợ mã hóa SSL giữa các ứng dụng và instance DB RDS, với RDS tự động tạo chứng chỉ cho instance.

Nhóm DB Subnet

ℹ️ Information: Nhóm DB Subnet là một tập hợp các subnet (thường là riêng tư) mà bạn tạo trong một VPC và sau đó chỉ định cho các DB instances.

  • Mỗi nhóm DB Subnet nên có các subnet trong ít nhất hai Availability Zone
  • Khuyến nghị cấu hình một nhóm subnet với các subnet trong mỗi AZ (thậm chí cho các instance độc lập)
  • Trong quá trình tạo instance RDS, bạn chọn nhóm DB Subnet và AZ để đặt instance RDS

Thanh toán và cung cấp

AWS tính phí cho:

  • Giờ instance DB (giờ phần làm tròn lên giờ đầy đủ)
  • Lưu trữ GB/tháng
  • Yêu cầu I/O/tháng - cho lưu trữ từ tính
  • Provisioned IOPS/tháng - cho RDS SSD IOPS được cung cấp
  • Truyền dữ liệu ra ngoài
  • Lưu trữ sao lưu (sao lưu DB và bản snapshot thủ công)

ℹ️ Information: Lưu trữ sao lưu cho sao lưu tự động RDS là miễn phí cho đến kích thước ổ EBS đã được cung cấp. Tuy nhiên, AWS sao chép dữ liệu qua nhiều AZ và do đó bạn phải trả tiền cho không gian lưu trữ thêm trên S3.

Đối với Multi-AZ, bạn phải trả tiền cho:

  • Giờ DB Multi-AZ
  • Lưu trữ được cung cấp
  • Ghi I/O hai lần

💡 Pro Tip: Đối với Multi-AZ, bạn không phải trả phí cho truyền dữ liệu DB trong quá trình sao chép từ instance chính sang instance dự phòng.

Khả năng mở rộng

ℹ️ Information: Bạn chỉ có thể mở rộng RDS lên (tính toán và lưu trữ). Bạn không thể giảm lưu trữ đã cấp phát cho instance RDS.

  • Bạn có thể mở rộng lưu trữ và thay đổi loại lưu trữ cho tất cả các DB engine ngoại trừ SQL Server
  • Đối với SQL Server, giải pháp tạm thời là tạo một instance mới từ một bản snapshot với cấu hình mới
  • Việc mở rộng lưu trữ có thể xảy ra trong khi instance RDS đang chạy mà không gây ra sự cố, tuy nhiên có thể có sự suy giảm hiệu suất
  • Việc mở rộng tính toán sẽ gây ra thời gian ngừng hoạt động

⚠️ Warning: Tất cả các loại DB RDS hỗ trợ kích thước DB tối đa là 64 TiB ngoại trừ Microsoft SQL Server (16 TiB).

Hiệu năng

Amazon RDS sử dụng ổ đĩa EBS (không sử dụng lưu trữ instance) cho lưu trữ DB và log. Có ba loại lưu trữ có sẵn:

Mục đích chung (SSD - gp2):

  • Sử dụng cho các tải công việc cơ sở dữ liệu có nhu cầu I/O trung bình
  • Hiệu quả về chi phí
  • 3 IOPS/GB
  • Burst lên đến 3000 IOPS

Provisioned IOPS (SSD - io1/io2):

  • Sử dụng cho công việc có yêu cầu I/O cao
  • Độ trễ thấp và I/O đều đặn
  • Số IOPS được chỉ định bởi người dùng

Từ tính (Magnetic):

  • Không còn được khuyến nghị, có sẵn cho tích hợp ngược
  • Giới hạn tối đa 4 TiB
  • Giới hạn tối đa 1.000 IOPS

Multi-AZ và Read Replicas

Multi-AZ và Read Replicas được sử dụng để đảm bảo tính sẵn có cao, khả năng chịu lỗi và mở rộng hiệu suất.

Multi-AZ Deployments Read Replicas
Sao chép đồng bộ - bền vững cao Sao chép không đồng bộ - mở rộng cao
Chỉ có cơ sở dữ liệu trên instance chính là hoạt động Tất cả read replicas đều có thể truy cập và được sử dụng để mở rộng đọc
Sao lưu tự động được thực hiện từ instance dự phòng Không có sao lưu được cấu hình mặc định
Luôn luôn bao gồm hai vùng khả dụng trong một Region Có thể nằm trong một Availability Zone, Cross-AZ hoặc Cross-Region
Các instance của cơ sở dữ liệu được nâng cấp trên instance chính Việc nâng cấp instance của cơ sở dữ liệu độc lập với instance nguồn
Tự động chuyển đổi sang instance dự phòng khi phát hiện sự cố Có thể được thăng cấp thủ công thành một instance cơ sở dữ liệu độc lập

Multi-AZ

ℹ️ Information: Multi-AZ RDS tạo một bản sao ở Availability Zone khác và sao chép đồng bộ đến đó (chỉ dành cho DR).

  • AWS khuyên nên sử dụng lưu trữ provisioned IOPS cho các instance DB RDS Multi-AZ
  • Mỗi AZ chạy trên cơ sở hạ tầng riêng biệt, độc lập về vật lý
  • Failover có thể được kích hoạt trong các trường hợp như mất AZ chính, lỗi trạng thái DB chính, mất kết nối mạng, lỗi đơn vị tính toán hoặc lưu trữ, thay đổi DB chính, cập nhật hệ điều hành, hoặc failover thủ công
  • Trong quá trình failover, RDS tự động cập nhật cấu hình (bao gồm điểm cuối DNS) để sử dụng nút thứ hai
  • Tùy thuộc vào lớp instance, có thể mất từ 1 đến vài phút để failover đến bản sao DB dự phòng

💡 Pro Tip: Triển khai việc thử lại kết nối DB trong ứng dụng của bạn và sử dụng điểm cuối thay vì địa chỉ IP để chỉ định ứng dụng đến DB RDS.

⚠️ Warning: Bản sao DB thứ cấp trong cấu hình Multi-AZ không thể được sử dụng như một nút đọc độc lập.

Read Replicas

ℹ️ Information: Read Replicas được sử dụng cho các cơ sở dữ liệu có tải đọc nhiều và sao chép là không đồng bộ.

  • Read Replicas được sử dụng để chia sẻ và giảm tải công việc đọc
  • Phải bật tính năng sao lưu tự động trên instance chính (thời gian lưu trữ > 0)
  • Chỉ được hỗ trợ cho các động cơ lưu trữ cơ sở dữ liệu giao dịch (InnoDB)
  • Read Replicas có sẵn cho MySQL, PostgreSQL, MariaDB, Oracle, Aurora và SQL Server
  • Bạn có thể có tối đa 5 Read Replicas của một cơ sở dữ liệu sản xuất
  • Bạn có thể có Read Replicas của các Read Replicas cho MySQL và MariaDB (tối đa bốn bản sao trong chuỗi)
  • Mỗi Read Replica có một điểm cuối DNS riêng
  • Read Replicas có thể được bật đa khu vực và bạn có thể tạo Read Replicas từ các cơ sở dữ liệu nguồn đa khu vực

💡 Pro Tip: Bạn có thể thăng cấp một Read Replica thành instance chính. Việc thăng cấp Read Replica mất vài phút và giữ lại thời gian lưu trữ sao lưu, cửa sổ sao lưu, và nhóm tham số cơ sở dữ liệu.

DB Snapshots

ℹ️ Information: DB Snapshots là các tình huống do người dùng khởi tạo và cho phép bạn sao lưu DB instance của bạn ở trong một trạng thái xác định.

  • Snapshot được lưu trữ trên S3 và tồn tại cho đến khi bị xóa thủ công
  • I/O tạm ngừng trong thời gian sao lưu và có thể làm tăng độ trễ (áp dụng cho RDS chỉ có một vùng khu vực)
  • DB Snapshot được thực hiện bằng tay sẽ được lưu trữ ngay cả sau khi DB instance RDS bị xóa
  • DB được khôi phục sẽ luôn là một DB instance RDS mới với một điểm cuối DNS mới
  • Có thể khôi phục lên đến 5 phút trước

💡 Pro Tip: Nên chụp một Snapshot cuối cùng trước khi xóa một DB instance RDS. Snapshot có thể chia sẻ với các tài khoản AWS khác.

Theo dõi, Ghi log và Báo cáo

Amazon RDS cung cấp nhiều công cụ theo dõi:

  • Sự kiện Amazon RDS: Thông báo khi có thay đổi với DB instance, snapshot, nhóm tham số hoặc nhóm bảo mật
  • Tệp ghi cơ sở dữ liệu: Xem, tải xuống hoặc xem các tệp ghi cơ sở dữ liệu
  • Amazon RDS Enhanced Monitoring: Xem các số liệu thống kê thời gian thực cho hệ điều hành
  • Amazon RDS Performance Insights: Đánh giá tải trên cơ sở dữ liệu và xác định khi nào và ở đâu cần thực hiện
  • Amazon RDS Recommendations: Xem các khuyến nghị tự động cho các tài nguyên cơ sở dữ liệu

Amazon RDS tích hợp với:

  • Amazon CloudWatch: Tự động gửi số liệu đến CloudWatch mỗi phút
  • Amazon EventBridge: Tự động hóa phản ứng với các sự kiện hệ thống
  • AWS CloudTrail: Ghi lại tất cả các cuộc gọi API cho Amazon RDS

💡 Pro Tip: Sử dụng kết hợp các công cụ theo dõi này để có cái nhìn toàn diện về hiệu suất và sức khỏe của cơ sở dữ liệu RDS của bạn.