Tìm hiểu về Amazon RDS - oPhamThiDao/Devops GitHub Wiki

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, nó giúp bạn dễ dàng thiết lập, vận hành và thay đổi quy mô cơ sở dữ liệu quan hệ trên đám mây. Dịch vụ này cung cấp dung lượng có thể thay đổi kích cỡ với mức chi phí hiệu quả trong khi tự động hóa các tác vụ quản trị mất nhiều thời gian, chẳng hạn như cung cấp phần cứng, thiết lập cơ sở dữ liệu, vá lỗi và sao lưu. Dịch vụ này cho phép bạn tập trung vào các ứng dụng của mình nhằm giúp ứng dụng có hiệu suất, tính sẵn sàng, mức độ bảo mật cũng như khả năng tương thích cao như mong đợi.

Tổng quan về Amazon RDS

Amazon RDS đảm nhận nhiều nhiệm vụ quản lý khó hay cũng như đơn giản của các quản trị cơ sở dữ liệu quan hệ:

  • Khi bạn mua một máy chủ, bạn sẽ nhận được CPU, bộ nhớ, storage, IOPS và tất cả được gói lại với nhau. Nhưng với Amazon RDS chúng được tách riêng để bạn có thể mở rộng quy mô chúng một các độc lập. Ví dụ: nếu bạn cần nhiều CPU hơn hay ít IOPS hơn hoặc bộ nhớ lớn hơn bạn có thể dễ dàng phân bỏ chúng.
  • Amazon RDS quản lý các bản sao lưu, vá phần mềm, tự động phát hiện lỗi và khôi phục.
  • Để mang lại trải nghiệm dịch vụ được quản lý, Amazon RDS không cung cấp quyền truy cập shell vào các phiên bản DB. Nó cũng hạn chế quyền truy cập vào các quy trình và bảng hệ thống nhất định yêu cầu các đặc quyền nâng cao.
  • Bạn có thể thực hiện sao lưu tự động khi cần hoặc tự tạo backup snapshot của riêng mình. Bạn có thể sử dụng các bản sao lưu này để khôi phục cơ sở dữ liệu. Quá trình khôi phục Amazon RDS hoạt động đáng tin cậy và hiệu quả.
  • Ngoài bảo mật trong gói cơ sở dữ liệu của bạn, bạn có thể kiểm soát những ai có thể truy cập cơ sở dữ liệu RDS của bạn bằng cách sử dụng AWS Identity and Access Management (IAM) để xác định người dùng và quyền. Bạn cũng có thể giúp bảo vệ cơ sở dữ liệu của mình bằng cách đưa chúng vào một đám mây ảo riêng.
  • 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.

DB instances

Khối xây dựng cơ bản của Amazon RDS là DB instance. DB instance là một môi trường cơ sở dữ liệu biệt lập trong AWS Cloud.

Mỗi DB instance có thể chứa nhiều cơ sở dữ liệu do người dùng tạo. Bạn có thể truy cập DB instance bằng các công cụ và ứng dụng tương tự mà bạn sử dụng với một cá thể cơ sở dữ liệu độc lập. Bạn có thể tạo và thay đổi phiên bản DB bằng cách sử dụng CLI, Amazon RDS API hoặc AWS Management Console.

Mỗi BD instance chạy một công cụ DB. Amazon RDS hiện hỗ trợ engines: MySQL, MariaDB, PostgreSQL, Oracle và Microsoft SQL Server DB. Mỗi công cụ DB có các tính năng được hỗ trợ riêng và mỗi phiên bản của công cụ DB có thể bao gồm các tính năng cụ thể. Ngoài ra, mỗi công cụ DB có một tập hợp các tham số trong một nhóm tham số DB để kiểm soát hành vi của cơ sở dữ liệu mà nó quản lý.

Khả năng tính toán và dung lượng bộ nhớ của một DB instance được xác định bởi lớp DB instance của nó. Bạn có thể chọn DB instance đáp ứng tốt nhất nhu cầu của bạn. Nếu nhu cầu của bạn thay đổi theo thời gian, bạn có thể thay đổi các DB phiên bản. Để biết thông tin, hãy xem DB instance classes.

Bạn có thể chạy DB instance trên đám mây riêng bằng dịch vụ Amazon Virtual Private Cloud (VPC). Khi sử dụng VPC, bạn có thể kiểm soát môi trường, có thể chọn dải địa chỉ IP, tạo mạng con và cấu hình danh sách định tuyến và kiểm soát truy cập.

DB instance classes

DB instance classes xác định khả năng tính toán và dung lượng bộ nhớ của một DB instance. DN instance classse phụ thuộc vào năng lượng xử lý và yêu cầu bộ nhớ.

Amazone RDS hỗ trợ 3 loại instance classe: Standard, Memory Optimized, và Burstable Performance.

Các Standard DB instance classes có sẵn: db.m6g, db.m5d, db.m5, db.m4 , db.m3, db.m1

Memory Optimized: db.z1d, db.x1e, db.x1, db.r6g, db.r5b, db.r5d, db.r5, db.r4, db.r3, db.m2

Burstable Performance: db.t3, db.t2

DB instance storage

Các DB instance cho Amazon RDS cho MySQL, MariaDB, PostgreSQL, Oracle và Microsoft SQL Server sử dụng khối lượng Amazon Elastic Block Store (Amazon EBS) để lưu trữ cơ sở dữ liệu và nhật ký. Tùy thuộc vào dung lượng lưu trữ được yêu cầu, Amazon RDS tự động xếp chồng trên nhiều ổ Amazon EBS để nâng cao hiệu suất.

Lưu trữ DB instance có 3 loại sau: Magnetic, General Purpose (SSD) và Provisioned IOPS (PIOPS). Chúng khác nhau về hiệu suất và giá cả, bạn có thể điều chỉnh hiệu suất và chi phí lưu trữ phù hợp với nhu cầu của cơ sở dữ liệu.

Amazon RDS Backup & Restore

Một trong những yêu cầu cở bản để đảm bảo độ tin cậy (reliability) của hệ thống đó là xây dựng cơ chế sao lưu dữ liệu (backup) và cơ chế khôi phục dữ liệu (restore) để “phòng hờ bất trắc”.

Quá trình backup của Amazon RDS dựa trên việc tạo các bản sao lưu dữ liệu (database snapshot) và sử dụng các snapshot này để restore dữ liệu.

Amazon RDS hỗ trợ tạo ra database snapshot theo 2 cách:

  • Tự động:

Amazon RDS tạo các bản sao lưu một cách tự động hằng ngày theo khoảng thời gian cấu hình trước. Trong trường hợp không cấu hình thời gian backup, Amazon RDS tự động chọn thời gian dựa theo khu vực (region) của database instance. Các snapshot có khoảng thời gian lưu trữ: mặc định là 7 ngày và có thể cấu hình lại tối đa là 35 ngày. Sau khoảng thời gian lưu trữ, các snapshot sẽ tự động xóa và không thể được dùng để restore. Khi xóa database instance, Amazon RDS sẽ tự động tạo 1 final snapshot, các snapshot khác sẽ tự động xóa đi.

  • Thủ công:

Snapshot được khởi tạo khi có yêu cầu của quản trị viên thông qua AWS Management Console, AWS RDS Command-Line Interface hoặc API. Các snapshot không có thời gian lưu trữ do đó có thể được dùng để restore bất kỳ lúc nào. Khi xóa database instance các snapshot sẽ được giữ lại và chỉ mất đi khi bạn chủ động xóa các snapshot này.

Regions, Availability Zones và Local Zones

Các tài nguyên điện toán đám mây của Amazon được lưu trữ ở nhiều địa điểm trên toàn thế giới. Các vị trí này bao gồm AWS Regions, Availability Zones, và Local Zones. Mỗi AWS Region là một khu vực địa lý riêng biệt. Mỗi AWS Region có nhiều vị trí biệt lập được gọi là Availability Zones.

Mỗi Availability Zones được thiết kế để cách ly với các lỗi trong Availability Zones khác. Mỗi thiết bị đều được thiết kế để cung cấp kết nối mạng rẻ tiền, độ trễ thấp tới các Availability Zones khác trong cùng AWS Region. Bằng cách khởi chạy các phiên bản trong các Availability Zones riêng biệt, bạn có thể bảo vệ các ứng dụng của mình khỏi sự cố của một vị trí duy nhất.

Các standby instance được đặt ở các vùng sẵn có (Availability Zone –AZ) trong cùng khu vực (region) với primary instance. Các AWS availability zone tuy trong cùng một region nhưng được Amazon thiết kế độc lập về hạ tầng phần cứng để đảm bảo không xảy ra tình trạng hỏng hóc cho toàn bộ AWS region.

Amazon RDS chạy trên cùng một cơ sở hạ tầng đáng tin cậy được sử dụng bởi các dịch vụ Web Amazon khác. Khi bạn cung cấp một Multi-AZ DB Instance, Amazon RDS sẽ đồng bộ sao chép dữ liệu đến một instance dự phòng trong một Availability Zone (AZ) khác. Amazon RDS có nhiều tính năng khác giúp tăng cường độ tin cậy cho các production databases quan trọng, bao gồm tự động sao lưu (automated backups), chụp nhanh cơ sở dữ liệu (database snapshots), và thay thế máy chủ tự động (automatic host replacement).

High availability (Multi-AZ)

Dịch vụ Multi-AZ của Amazon RDS tăng cường độ sẵn sàng và độ bền của phiên bản Cơ sở dữ liệu (CSDL) RDS, biến các phiên bản này phù hợp với các khối lượng công việc cơ sở dữ liệu sản xuất.

Khi bạn kích hoạt Multi-AZ cho database instance, Amazon RDS sẽ tự động tạo một instance chính (primary instance) và đồng bộ dữ liệu sang các instance dự phòng (standby instance) ở chế độ chờ.

Các standby instance được đặt ở các vùng sẵn có (Availability Zone –AZ) trong cùng khu vực (region) với primary instance. Các AWS availability zone tuy trong cùng một region nhưng được Amazon thiết kế độc lập về hạ tầng phần cứng để đảm bảo không xảy ra tình trạng hỏng hóc cho toàn bộ AWS region.

Các standby instance giao tiếp với primary instance thông qua kết nối đồng bộ (synchronous connection).

Trong hệ thống Amazon RDS có Multi-AZ luôn có một database instance đóng với trò chính trong việc đáp ứng truy xuất dữ liệu của hệ thống được gọi master DB. Các database instance khác đóng vai trò là dự phòng sẽ được gọi standby DB. Trong trường hợp xảy ra sự cố và bảo trị master DB, Amazon RDS sẽ tự động hoán đổi vị trí master và standby bằng các thay đổi CNAME của DNS server. Bằng cách này, RDS Multi-AZ sẽ luôn đảm bảo tính sẵn có (availability) cho hệ thống.

Nhìn chung thì Multi-AZ chỉ tạo các bản sao dữ liệu và đặt trong cùng 1 vùng địa lí để đảm tính sẵn sàng của hệ thống, vậy muốn nếu ta muốn tăng hiệu suất và mở rộng hệ thống database trên toàn thế giới thì sao? Để đáp ứng nhu cầu này, Amazon RDS ra đời Read Replicas.

Read Replicas

Với read replica (bản sao chỉ đọc), Amazon RDS cung cấp khả năng tạo 1 hoặc nhiều nhân bản database từ 1 database nguồn.

Các read replica sẽ chia sẻ workload với master database để nâng cao hiệu suất đọc đáp ứng cho các hệ thống ứng dụng có lưu lượng truy cập lớn.

Khác với các standby database của Multi-AZ, các read replica có thể được đặt ở các khu vực khác nhau của AWS. Đây là khả năng lí tưởng cho việc phát triển hệ thống database trên toàn cầu.

Các read replica chỉ có thể đọc và giao tiếp với master database thông qua kết nối bất đồng bộ:

Hiện tại Amazon RDS, chỉ hỗ trợ cho các loại dabase engine mã nguồn mở như MySQL, PostgreSQL, MariaDB và Amazon Aurora. Tùy thuộc vào loại database engine, số lượng tối đa của read replica sẽ khác nhau.

Riêng với Amazon Aurora tiếp tục mở rộng lợi ích của Multi-AZ bằng cách sử dụng lớp lưu trữ được ảo hóa trên SSD được xây dựng có mục đích cho khối lượng công việc của cơ sở dữ liệu. Nó sẽ tự động sao chép bộ lưu trữ của bạn ra sáu hướng trên ba Vùng sẵn sàng. Amazon Aurora được thiết kế để có khả năng chịu lỗi, xử lý tình huống mất đến tối đa hai bản sao dữ liệu một cách minh bạch mà không ảnh hưởng đến khả năng ghi cơ sở dữ liệu và đến tối đa ba bản sao không ảnh hưởng đến khả năng đọc cơ sở dữ liệu. Aurora luôn sao chép dữ liệu của bạn qua ba Vùng sẵn sàng, bất kể cơ sở dữ liệu của bạn có sử dụng bản sao chỉ có quyền đọc hay không.

Aurora có nhiều lợi ích vậy bởi có lẽ là "hàng nhà" của Amazon

Security

Một nhóm bảo mật kiểm soát quyền truy cập vào một phiên bản DB. Nó làm như vậy bằng cách cho phép truy cập vào các dải địa chỉ IP hoặc các phiên bản Amazon EC2 mà bạn chỉ định.

Amazon RDS giúp bạn kiểm soát truy cập mạng vào cơ sở dữ liệu của bạn một cách dễ dàng. Amazon RDS cũng cho phép bạn chạy các cơ sở dữ liệu instance của bạn trong Amazon Virtual Private Cloud (Amazon VPC), cho phép bạn cô lập các cơ sở dữ liệu instance của bạn và để kết nối với cơ sở hạ tầng CNTT hiện tại của bạn thông qua một IPsec VPN mã hóa theo tiêu chuẩn ngành. Nhiều loại công cụ RDS của Amazon cung cấp khả năng mã hóa.

Monitoring của một Amazon RDS DB instance

Với Amazon CloudWatch bạn có thể sử dụng nó để theo dõi hiệu suất và tình trạng của một BD instance.

Biểu đồ hiệu suất CloudWatch được hiển thị trong bảng điều khiển Amazon RDS. Bạn cũng có thể đăng ký các sự kiện Amazon RDS để được thông báo về các thay đổi đối với DB instance, DB snapshot, DB parameter group hoặc DB security group.

Chi phí DB Instance

Việc tính toán tiền dựa vào các thành phần được sử dụng sau:

DB instance hours (per hour): Dựa vào DB instance class của DB instance, Giá tiền sẽ được list ra theo giờ, Nhưng hoá đơn của bạn sẽ được tính toán theo giây và tối thiểu cho RDS billing là 10 phút

Storage (GiB/tháng): Nếu bạn scale provisioned storage capacity trong tháng. Thì bill sẽ là pro-rated

I/O request (1 triệu request mỗi tháng) : Áp dụng cho kiểu RDS magetic Provisioned IOPS (per IOPS per month)

Backup storage (per GiB per month): Backup storage là việc lưu trữ được tự động liên kết với database backups

Data transfer (per GB) : Là việc chuyển chuyển dữ liệu dữ instance với bên ngoài hoặc các service khác của AWS

Bạn có thể tham khảo chi tiết chi phí của DB instance theo cơ sở dữ liệu khác nhau tại: https://aws.amazon.com/vi/rds/pricing/

Cách làm việc của Amazon RDS trên console

Demo tạo MySQL trong Amazon RDS Demo: Tạo một phiên bản MySQL DB và kết nối với cơ sở dữ liệu trên một phiên bản MySQL DB

  1. Đăng nhập AWS Management Console và di chuyển đến Amazon RDS console tại https://console.aws.amazon.com/rds/
  2. Chọn AWS Region cho DB instance.
  3. Trong ngăn điều hướng chọn Databases.
  4. Chọn Create database:

easy-create-mysql

  1. Để sử dụng mật khẩu chính được tạo tự động cho phiên bản DB, hãy bật Auto generate a password. Nếu muốn nhập mật khẩu chính của bạn, hãy tắt Auto generate a password, sau đó nhập cùng một mật khẩu vào Master password and Confirm password.

  2. Trong danh sách Databases chọn tên của MySQL DB instance vừa được tạo: Trên RDS console, thông tin chi tiết về MySQL DB instance mới vừa tạo. DB instance có trạng thái tạo cho đến khi cá thể DB sẵn sàng sử dụng. Khi trạng thái thay đổi thành available, bạn có thể kết nối với phiên bản DB. Tùy thuộc vào lớp cá thể DB và dung lượng lưu trữ, có thể mất tới 20 phút trước khi cá thể mới có sẵn.

MySQL-Launch06

  1. Kết nối với cơ sở dữ liệu trên một phiên bản DB bằng MySQL monitor
  • Thông tin chi tiết của DB instance

MySQLConnect1

  • Kết nối tới DB
PROMPT> mysql -h <endpoint> -P 3306 -u <mymasteruser> -p

Với: <endpoint> là DNS của DB instance, là master username lúc tạo database cùng mật khẩu

kết quả

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 350
Server version: 5.6.40-log MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

Tài liệu tham khảo:

https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html

⚠️ **GitHub.com Fallback** ⚠️