Amazon RDS for MariaDB

Amazon RDS là gì?

Amazon RDS (Amazon Relational Database Service) là dịch vụ đám mây do Amazon Web Services phát triển với mục tiêu cung cấp giải pháp cài đặt, vận hành và mở rộng dành cho relational database (cơ sơ dữ liệu có quan hệ).

Các hệ quản trị cơ sở dữ liệu quan hệ mà Amazon RDS hỗ trợ hiện nay gồm có:

  • SQL Server, Oracle (yêu cầu bản quyền).
  • MySQL, PostgreSQL, MariaDB (mã nguồn mở).
  • Amazon Aurora: được phát triển bởi Amazon với hiệu suất được Amazon “quảng cáo” là tốt hơn 5 lần so với MySQL và tốt hơn 2 lần PostgreSQL. Aurora được Amazon phát triển với tham vọng là một giải pháp thay thế cho MySQL và PostgreSQL do đó Aurora hoàn toàn tương thích với MySQL và PostgreSQL, có nghĩa bạn có các mã nguồn, ứng dụng, drivers hoặc các công cụ dành cho MySQL và PostgreSQL đều có thể sử dụng cho Aurora.

Để dễ hiểu RDS là cloud database riêng của Amazon, thay vì bạn bình thường bạn phải dùng database chung với web (localhost), thì giờ bạn tách riêng database ra, dùng trên dịch vụ của Amazon, nó nằm trong gói AWS Free Tier mà Amazon đang tặng kèm khách hàng mới trong 1 năm đầu

Amazon RDS

  • 750 Hours per month of db.t2.micro database usage (applicable DB engines)
  • 20 GB of General Purpose (SSD) database storage
  • 20 GB of storage for database backups and DB Snapshots

Amazon được cái khá bạo tay, FREE của họ luôn được hẳn 1 GB RAM, từ năm tiếp theo (sau khi hết miễn phí năm đầu) thì theo giá của họ, 1 năm là $172, 3 năm là $390, đấy là giá trả dứt điểm trước, còn nếu trả hàng tháng thì trung bình tiền thuê gói db.t2.micro này là ~ $15.2

Tiếp theo là tiền Database Storage, tạo FREE  ọ cho hẳn 20 GB General Purpose (SSD), phí thì mình nhìn là $0.138 per GB-month khi hết FREE,  ói chung tiền Database Storage khá rẻ, vì mấy cái site của mình cộng hết lại, database tầm … 50 MB :]]

I/O Rate $0.11 per 1 million requests, cái này cũng rẻ, thực tế site có cả triệu request thì to vãi úa linh hồn ra rồi, quan trọng khỉ gì $0.11 😛

Ok, tiếp theo là cái Data Transfer (băng thông), cái này phí trong phí, chằng chịt các kiểu, mình coi mãi mà vẫn chưa hiểu cuối cùng tính ra làm sao

Theo mình hiểu là ở 1024 GB ban đầu, sẽ miễn phí băng thông ra hoặc vào internet cho RDS, tiếp theo là nếu băng thông chuyển tới các vùng có trong danh sách thì sẽ tính $0.09 cho mỗi GB, còn không nằm ở các vùng đó (Việt Nam chẳng hạn) thì tính $0.01 cho mỗi GB băng thông, kể ra nếu bạn dùng khoảng 100 Gb database thì 1 tháng tiền băng thông cao nhất khoảng $9, mỗi cái mình không rõ lắm tại sao tới các khu vực có dịch vụ của Amazon lại tính $0.09 mà tới các vùng khác lại chỉ còn $0.01, đúng ra phải là ngược lại mới đúng chứ nhỉ???

Thực tế băng thông cho database ít vô cùng, nên phí về database mình nghĩ không đáng kể lắm, OK, mình sẽ dùng thử 1 tháng đầu, xem cách tính của Amazon nó có khác gì so với cách nãy giờ mình nhẫm không rồi sẽ cập nhập lại trong bài để mọi người tham khảo, nhẩm sơ thì nãy giờ chi phí cho RDS nặng nhất vẫn là tiền thuê, còn các chi phí khác khá là mềm, mình nhẩm sơ thì theo nhu cầu của mình, 1 tháng chắc không tiêu quá $2 cho các phí thêm vào, chi tiết về giá của RDS MariaDB bạn có thế xem kĩ thêm tại đây

Nói chung Amazon, trừ gói Lightsail các thứ khác đều từ đắt tới rất đắt, trước khi dùng cái gì bạn nên coi kĩ về giá hé 🙁

Cài đặt RDS MariaDB (gói FREE năm đầu)

Vào đây để tạo tài khoản nếu bạn chưa có 😀 nhớ chọn location ở góc phải cho đúng, mình chọn location Singapore, sau đó ấn vào Launch DB instance

Chọn MariaDB, sau đó click tùy chọn “Only enable options eligible RDS Free Usage Tier” sau đó NEXT 

Eengine version: chọn bản nào cũng được, mình thì chọn bản cao nhất hiện nay họ hỗ trợ là 10.2.12
Phần Settings thì đặt tên để quản lý với tạo tài khoản master (tương tự root), điền sao cũng được, nhớ là đừng quên thôi 😀
Sau đó ấn NEXT

Ailability zone: bạn chọn Zone nào tùy ý, có điều do mình chạy web trên gói Lightsail đang dùng ở Zone C nên mình chọn database cũng zone C lun cho nhanh thôi, thực tế thì mình thấy A, B hay C tốc độ  đều … y chang cả :]] Database name: tạo tên cho database

Các thứ khác mình thấy không quan trọng,  để mặc định như họ set sẵn,  sau bạn không thích hay muốn sửa thì vào sửa lại là được 😀

Xong hết thì ấn vào Launch DB instance

PS: Chủ yếu bước này, sai gì thì sai, điền sao thì điền, phải nhớ cái password tài khoản master, đừng quên :]] quên là không biết lấy lại ở chỗ nào đâu á :]] thực tế thì tạo database trên RDS khá đơn giản, họ tạo setting cơ bản cả rồi, gần như chỉ next, next 😛

Xong xuôi thì ngồi chờ thôi, cũng khá lâu,  nhớ đâu đó 15 phút mới xong, xong thì bạn sẽ thấy trạng thái available

Tab Details bạn sẽ nhìn thấy được các thông tin tổng quát của Database như DB Name, Username, Endpoint (Password thì nãy tạo, hi vọng bạn còn nhớ mình điền vào cái gì :]])

Endpoint ở đây sẽ dùng để thay thế cho localhost hay điền ở bước tạo database trên mấy cái script chạy php, mysql ….

Việc tiếp theo là ấn vào phần Security groups trong tab Details để add thêm cái IP có thể kết nối vào database

Theo mặc định khi bạn tạo database, RDS đã tự add IP ngay lúc đó của bạn vào phần Inbound, giờ bạn chỉ cần add thêm IP con VPS muốn kết nối vào database này là được, như mình add con Lightsail đang dùng thì điền IP của nó vào thôi, cuối IP bạn thêm /32 vào là được, thật ra nếu bạn quên hay không biết cũng đừng lo, nó sẽ báo lỗi và … cạnh các nút đều có sẵn HELP để bạn đọc :]]

Bạn có thể chạy các lệnh trong ssh từ con VPS đang dùng để tạo các table hay chuyển dữ liệu sang con database RDS cũng được 😛 mỗi cái mình thấy nhiều lệnh mệt tóa :]] bạn có thể dùng Navicat Premium cho tiện và dễ cũng được, họ cho free trial 14 ngày, thực tế bạn chỉ cần chạy 5-10 phút dùng là hết 😛

Kết nối vào database, các thứ đơn giản lắm, xong chọn Execite SQL File, chọn cái file database là được, bạn có thể dùng Duplicator Pro để tạo file database nếu không biết
Viết tới đây tự dưng mình cảm giác chi tiết quá, không lẽ người có nhu cầu dùng tới RDS lại không biết mấy cái này :((

Xong xuôi hết thì bạn chỉ việc sửa lại cái file config trên webhosting nữa là được, ở đây mình dùng WordPress nên sửa file wp-config.php

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'bibica');

 * MySQL database username */
define('DB_USER', 'bibica');

 * MySQL database password */
define('DB_PASSWORD', 'bibicapass');

 * MySQL hostname */
define('DB_HOST', 'bibica.k8sw3dksu5u.ap-southeast-1.rds.amazonaws.com:3306');

Chủ yếu nhất là phần DB_HOST bạn nhớ thêm vào port 3306, nhiều bạn hay quên cái này

Vậy là xong rồi, tổng thế thì việc dùng database RDS của Amazon nó không khác gì so với dùng các dịch vụ database khác, nếu có khác thì chỉ là các dịch vụ khác thường họ cho mọi IP kết nối vào database, còn Amazon cần vào add thêm IP vào thôi, cơ bản là y chang nhau cả 😀

Hiệu quả khi dùng Amazon RDS for MariaDB?

Đầu tiên phải nói là VPS chứa webdata của bạn sẽ ít tốn RAM hơn vì phải không chạy cả database trên đó nữa :]]

Nư bạn thấy, ban đầu nó chạy hết khoảng ~375 MB cho RAM (cả RAM thực lẫn swap)

Sau khi dùng Amazon RDS, mình tắt mysql đi “service mysql stop”, nó dùng còn ~ 200 MB RAM thôi 😛

Ah, cái này nói vui là chính, vì thực ra ai đủ tiền dùng tới Amazon RDS thì chẳng ai thèm wan tâm về cấu hình VPS nữa rồi, chủ yếu quan tâm hiệu quả 😀

Về tốc độ: theo mình là khi dùng database ngoài, thì 99.69% là sẽ không thể nhanh bằng so với việc bạn dùng thẳng database kiểu localhost, thực tế thì giờ web của bạn phải kết nối tới database để lấy thông tin, trả tới trả lui thì kiểu gì cũng có độ trễ qua lại, không thể nhanh bằng việc dùng trực tiếp, có điều thực tế mình dùng Amazon RDS chung với Lightsail, chung location, chung zone 😀 cơ bản nó cũng gần như đặt cạnh sát nhau, nên không cảm giác được có sự thay đổi :]]

Về hiệu năng: đây có lẽ là điểm tuyệt vời nhất của RDS, trên một cái gói cùi nhất, chạy db.t2.micro cấu hình 1 CPU, 1 GB RAM mà nó gần như càn quét mọi thể loại khách vào site :]]

Thử với 100 client mỗi giây ở bài test từ loader.io, CPU chạy như đuổi muỗi, dùng ~15% công xuất 😛 tốc độ trung bình chỉ ~ 500ms (0.5s) thực tế nếu bạn không cache bất cứ cái gì trên site, 1 con VPS 512 MB chỉ chịu được tầm 20-30 client mỗi giây là đã lê lết các kiểu :]]

Tiếp theo mình thử với 1.000 client mỗi giây, truy cập thẳng vào phần shop, nơi không thể cache được cái gì hết ráo :]] CPU hú thẳng lên 100%, tốc độ trung bình vào site tới … 10s :]]

Thực tế số người vào site mỗi giây để tạo đơn hàng mà tới 1000 người thì nó khá cực đoan, thú thực mình cũng chưa thấy cái shop nào mà có thể 1000 người cùng tạo đơn mỗi giây thế cả, có thể có 5000-7000 người online cùng lúc thì đồng ý, nhưng cùng tạo đơn hàng thì gần như không thể :]] thú thực là mình vẫn nghĩ nó có thể qua bài test 1000 client mỗi giây nhẹ nhàng hơn, chứ tới 10s để truy cập thì tệ thật 😛 thực tế thì đây là vấn đề do con VPS đang dùng, nó hú hết 100% công xuất rồi, chứ RDS vẫn …. chạy như điên 😀

Mình thử tiếp ở bài test tối đa 10.000 client mỗi giây thì …. tạch ngay lập tức :]] yeb, thực tế thì tới giờ, ngoài chuyện dùng Cloudflare để cache, mình cũng chưa cách nào qua được bài test này ở các con VPS 1 CPU 1 GB RAM cả :]]

Tổng thể thì nếu dùng Amazon RDS thì tạm hiểu là ta sẽ tăng “sức chịu tải thực” của site lên rất nhiều, ít nhất từ 10-20 lần so với chạy solo thông thường, giải pháp khá là kinh tế cho mỗi even, safe off … mua sắm cuối năm, bạn chỉ cần thuê hoặc dùng RDS trong khoảng 1 tháng, sau đó lại quay lại dùng bình thường

Yeb, RDS là một giải pháp mà mình nghĩ mình sẽ không bao giờ giới thiệu cho ai, vì nó quá mắc, mình dùng thử đơn giản vì Amazon đang cho dùng FREE thôi 😀 thêm vào là chỉ những site thương mại điện tử, cần uptime cực tốt và số người thật nhiều mới phải nhìn tới cái này, còn end user bình thường, chạy mấy con VPS tầm $5-10 một tháng, cache ổn thì gần như đã chạy ổn lắm rồi

Comment policy: We love comments and appreciate the time that readers spend to share ideas and give feedback.
Notes: However, those deemed to be spam or solely promotional will be deleted.

You can create a Gravatar account, add avatar, then use that email to comment here, your account will have a more beautiful Avatar, easier to recognize with other members.

Please use real emails, you can receive notifications when comments are replied