Hướng Dẫn Tạo Database AWS RDS Và Kết Nối Từ Local Trong 10 Phút
Hồi mới dùng AWS, mình cũng tự cài MySQL lên EC2 — vì thấy "đơn giản hơn". Rồi đến ngày instance bị xóa nhầm khi dọn dẹp, toàn bộ dữ liệu test bay theo. Từ đó mình mới hiểu tại sao AWS RDS tồn tại: nó giải quyết đúng cái đau đó — để bạn không phải tự lo backup, patch, hay failover nữa.
AWS RDS là gì và tại sao không tự cài MySQL trên EC2?
Amazon RDS (Relational Database Service) là dịch vụ database quan hệ được quản lý hoàn toàn bởi AWS. Nghĩa là bạn vẫn dùng MySQL, PostgreSQL, MariaDB, SQL Server bình thường — nhưng phần cài đặt, backup hàng ngày, cập nhật bản vá bảo mật, và failover tự động đều do AWS lo.
Tự cài MySQL trên EC2 có vẻ linh hoạt hơn, nhưng thực tế bạn phải tự làm tất cả: cấu hình my.cnf, lên lịch backup bằng cron, xử lý khi ổ đĩa đầy, restart service khi crash. Với RDS, những việc đó biến mất. Bạn chỉ còn tập trung vào schema và query.
Chi phí RDS đắt hơn EC2 cùng cấu hình khoảng 20-30%, nhưng nếu tính thời gian ops bạn tiết kiệm được, đây là khoản đầu tư xứng đáng cho môi trường production.
Khi nào nên dùng RDS?
RDS phù hợp cho hầu hết ứng dụng web cần database quan hệ:
- Web app / API backend: Kết nối từ EC2 hoặc Lambda trong cùng VPC — latency thấp, không ra ngoài internet. Đây là use case phổ biến nhất.
- Staging và production database: RDS snapshot cho phép clone database staging từ production chỉ trong vài click — rất tiện để test migration.
- Database cần high availability: Bật Multi-AZ, RDS tự giữ bản standby ở AZ khác, failover dưới 2 phút khi AZ chính gặp sự cố.
Hướng dẫn tạo RDS instance từng bước
Vào AWS Console → RDS → Create database. Chọn Standard create để có toàn quyền kiểm soát cấu hình.
Bước 1 — Engine và version: Chọn MySQL 8.0 hoặc PostgreSQL 16. Nếu dùng cho dev/test, chọn Free tier ở phần Templates — bạn sẽ được db.t3.micro miễn phí 12 tháng đầu.
Bước 2 — Credentials: Đặt Master username (thường là admin) và password mạnh. AWS khuyến nghị dùng AWS Secrets Manager để rotate password tự động, nhưng cho môi trường dev bạn có thể tự nhập.
Bước 3 — Connectivity: Đây là bước quan trọng nhất. Chọn VPC và subnet group. Phần Public access: nếu muốn kết nối từ máy local, chọn Yes. Nếu chỉ dùng trong nội bộ AWS (EC2 trong cùng VPC), chọn No để tăng bảo mật.
Bước 4 — Security Group: Tạo hoặc chọn Security Group cho phép inbound TCP port 3306 (MySQL) hoặc 5432 (PostgreSQL) từ IP của bạn. Không mở 0.0.0.0/0 ngoài môi trường dev — đây là lỗi bảo mật phổ biến nhất.
Click Create database và chờ khoảng 5-7 phút. Status chuyển từ creating sang available là xong.
Mẹo: Sau khi tạo xong, vào tab Connectivity & security để lấy Endpoint — đây là hostname bạn dùng để kết nối, dạng
mydb.xxxxx.ap-southeast-1.rds.amazonaws.com.
Kết nối từ local bằng mysql CLI:
mysql -h mydb.xxxxx.ap-southeast-1.rds.amazonaws.com -P 3306 -u admin -p
Nhập password khi được hỏi. Nếu kết nối thành công, bạn sẽ thấy prompt mysql>.
Kết nối bằng DBeaver (GUI): New Connection → MySQL → điền Host là endpoint RDS, Port 3306, Username và Password. Test Connection — nếu xanh là xong.
Những lỗi thường gặp và cách tránh
Lỗi "Connection timed out": 90% trường hợp do Security Group chưa mở đúng port, hoặc bạn quên bật Public access khi tạo. Kiểm tra inbound rules của Security Group gắn vào RDS — phải có rule cho port 3306 từ IP của bạn. Dùng curl -v telnet://endpoint:3306 để kiểm tra port có mở không.
Mở port cho cả internet (0.0.0.0/0): Tạm chấp nhận cho dev, nhưng production tuyệt đối không làm vậy. Đặt IP của office hoặc VPN vào Security Group, hoặc chỉ cho phép EC2/Lambda trong cùng VPC kết nối.
Quên bật automated backup: RDS mặc định backup 7 ngày, nhưng kiểm tra lại Backup retention period trong settings. Đặt tối thiểu 14 ngày cho production.
FAQ — những câu hỏi thực tế
Q: Free tier RDS có đủ dùng cho project nhỏ không?A: db.t3.micro với 20GB SSD là đủ cho hầu hết project cá nhân và startup giai đoạn đầu. Giới hạn là 750 giờ/tháng (tương đương 1 instance chạy liên tục) — vừa đủ nếu bạn chỉ có 1 RDS instance.
Q: RDS có thể kết nối với Lambda không cần EC2 không?A: Được. Đặt Lambda trong cùng VPC với RDS, cùng Security Group hoặc Security Group có inbound từ Lambda SG. Nếu Lambda nằm ngoài VPC (mặc định), phải bật Public access và mở Security Group — không lý tưởng cho production.
Q: Muốn stop RDS để tiết kiệm tiền khi không dùng thì sao?A: RDS cho phép stop tạm thời, nhưng sau 7 ngày tự động start lại — đây là limitation ít người biết. Nếu chỉ dùng sporadically, cân nhắc dùng Aurora Serverless v2 hoặc tự cài DB trên EC2 rồi stop EC2 khi không dùng.
Bắt đầu từ RDS, bạn sẽ không muốn quay lại tự cài nữa
Lần đầu tạo RDS instance, mình mất khoảng 15 phút — chủ yếu do không biết Security Group cần cấu hình thế nào. Lần thứ hai chỉ mất đúng 8 phút. Sau khi quen tay, nó nhanh hơn và đáng tin cậy hơn mọi cách tự cài trên EC2 mình từng thử. Bài tiếp theo mình sẽ so sánh RDS với DynamoDB — để bạn biết khi nào nên chọn NoSQL thay vì tiếp tục dùng SQL truyền thống.
