MariaDB
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> MariaDB

So sánh RDS và EC2 để quản lý MySQL hoặc MariaDB trên AWS

RDS là Cơ sở dữ liệu dưới dạng Dịch vụ (DBaaS) tự động định cấu hình và duy trì cơ sở dữ liệu của bạn trong đám mây AWS. Người dùng bị hạn chế quyền lực đối với các cấu hình cụ thể so với việc chạy MySQL trực tiếp trên Elastic Compute Cloud (EC2). Nhưng RDS là một dịch vụ tiện lợi, miễn là bạn có thể sống với các phiên bản và cấu hình mà nó cung cấp.

Amazon RDS hiện hỗ trợ các phiên bản MySQL và MariaDB khác nhau cũng như công cụ Amazon Aurora DB tương thích với MySQL. Nó hỗ trợ sao chép, nhưng như bạn có thể mong đợi từ một bảng điều khiển web được xác định trước, có một số hạn chế.

Dịch vụ Amazon RDS

Có một số sự cân bằng khi sử dụng RDS. Những điều này có thể không chỉ ảnh hưởng đến cách bạn quản lý và cung cấp các phiên bản cơ sở dữ liệu của mình mà còn ảnh hưởng đến những điều quan trọng như hiệu suất, bảo mật và tính khả dụng cao.

Trong blog này, chúng ta sẽ xem xét sự khác biệt giữa việc sử dụng RDS và chạy MySQL trên EC2, tập trung vào nhân rộng. Như chúng ta sẽ thấy, để quyết định giữa việc lưu trữ MySQL trên phiên bản EC2 hay sử dụng Amazon RDS không phải là một nhiệm vụ dễ dàng.

Đánh đổi nền tảng RDS

Kích thước lớn nhất của cơ sở dữ liệu mà AWS có thể lưu trữ tùy thuộc vào môi trường nguồn của bạn, việc phân bổ dữ liệu trong cơ sở dữ liệu nguồn của bạn và mức độ bận rộn của hệ thống của bạn.

Tùy chọn Môi trường Amazon RDS Lớp phiên bản Amazon RDS

AWS được chia thành các khu vực. Mỗi tài khoản AWS đều có giới hạn, theo khu vực, về số lượng tài nguyên AWS có thể được tạo. Sau khi đạt đến giới hạn cho một tài nguyên, các lệnh gọi bổ sung để tạo tài nguyên đó sẽ không thành công.

Khu vực AWS

Đối với các phiên bản Amazon RDS MySQL DB, giới hạn lưu trữ tối đa được cung cấp hạn chế kích thước của bảng ở kích thước tối đa là 6 TB khi sử dụng không gian bảng InnoDB tệp mỗi bảng.

Tính năng tệp trên mỗi bảng của InnoDB là thứ mà bạn nên xem xét ngay cả khi bạn không muốn di chuyển một cơ sở dữ liệu lớn vào đám mây. Bạn có thể nhận thấy rằng một số phiên bản DB hiện có có giới hạn thấp hơn. Ví dụ:các phiên bản MySQL DB được tạo trước tháng 4 năm 2014 có giới hạn kích thước tệp và bảng là 2 TB. Giới hạn kích thước tệp 2 TB này cũng áp dụng cho các phiên bản DB hoặc Bản sao đọc được tạo từ ảnh chụp nhanh DB được chụp trước tháng 4 năm 2014.

Một trong những điểm khác biệt chính ảnh hưởng đến cách bạn thiết lập và duy trì sao chép cơ sở dữ liệu là thiếu SUPER người dùng. Để giải quyết hạn chế này, Amazon đã giới thiệu các quy trình được lưu trữ đảm nhiệm các tác vụ DBA khác nhau. Dưới đây là các thủ tục chính để quản lý sao chép MySQL RDS.

Bỏ qua lỗi sao chép:

CALL mysql.rds_skip_repl_error;

Ngừng sao chép:

CALL mysql.rds_stop_replication;

Bắt đầu sao chép

CALL mysql.rds_start_replication;

Định cấu hình bản sao RDS dưới dạng Bản sao đọc của bản sao MySQL chạy bên ngoài AWS.

CALL mysql.rds_set_external_master;

Cấu hình lại bản sao MySQL để không còn là Bản sao đọc của bản sao MySQL chạy bên ngoài AWS.

CALL mysql.rds_reset_external_master;

Nhập một chứng chỉ. Điều này là cần thiết để kích hoạt giao tiếp SSL và sao chép mã hóa.

CALL mysql.rds_import_binlog_ssl_material;

Xóa chứng chỉ.

CALL mysql.rds_remove_binlog_ssl_material;

Thay đổi vị trí bản ghi chính của bản sao thành vị trí bắt đầu của bản ghi nhị phân tiếp theo trên bản chính.

CALL mysql.rds_next_master_log;

Trong khi các thủ tục được lưu trữ đảm nhận một số tác vụ, thì nó là một chút đường cong học tập. Thiếu đặc quyền SUPER cũng có thể gây ra vấn đề trong việc sử dụng giám sát sao chép bên ngoài.

Amazon RDS hiện không hỗ trợ những điều sau:

  • ID giao dịch toàn cầu
  • Không gian bảng có thể vận chuyển
  • Plugin xác thực
  • Plugin độ mạnh mật khẩu
  • Bộ lọc sao chép
  • Sao chép bán đồng bộ

Cuối cùng nhưng không kém phần quan trọng - truy cập vào shell. Amazon RDS không cho phép máy chủ truy cập trực tiếp vào một phiên bản DB thông qua Telnet, Secure Shell (SSH) hoặc Windows Remote Desktop Connection (RDP). Bạn vẫn có thể sử dụng máy khách trên máy chủ ứng dụng để kết nối với DB thông qua các công cụ tiêu chuẩn như máy khách mysql.

Có những giới hạn khác, như được mô tả trong tài liệu RDS.

Tính khả dụng cao với MySQL trên EC2


Để tự động hóa các tác vụ triển khai và quản lý / bảo trì (trong khi vẫn giữ quyền kiểm soát), có thể sử dụng ClusterControl. Cũng giống như với RDS, bạn có sự thuận tiện khi triển khai thiết lập cơ sở dữ liệu trong vài phút thông qua GUI. Việc thêm các nút, lập lịch sao lưu, thực hiện chuyển đổi dự phòng, v.v., cũng có thể được thực hiện một cách thuận tiện thông qua GUI. Khi đi theo lộ trình này, điều quan trọng là phải hiểu cách tận dụng các tính năng AWS khác nhau mà bạn sử dụng. Đảm bảo bạn xem sách trắng 'Cơ sở dữ liệu đám mây tự làm' của chúng tôi.

Triển khai

ClusterControl có thể tự động hóa việc triển khai các thiết lập cơ sở dữ liệu có tính khả dụng cao khác nhau - từ sao chép master-slave đến các cụm đa master. Tất cả các phiên bản MySQL chính đều được hỗ trợ - Oracle MySQL, MariaDB và Percona Server. Cần có một số thiết lập ban đầu của VPC / nhóm bảo mật và chúng được mô tả kỹ trong sách trắng Cơ sở dữ liệu đám mây DIY. Lưu ý rằng các khái niệm tương tự được áp dụng, cho dù đó là AWS hay Google Cloud hay Azure

Triển khai ClusterControl trong EC2

Galera Cluster là một giải pháp thay thế tốt để xem xét khi triển khai dịch vụ MySQL có tính khả dụng cao. Nó đã tự khẳng định mình là một sự thay thế đáng tin cậy cho các kiến ​​trúc chủ-nô MySQL truyền thống, mặc dù nó không phải là một sự thay thế thả xuống. Hầu hết các ứng dụng vẫn có thể được điều chỉnh để chạy trên nó. Có thể xác định các phân đoạn khác nhau cho cơ sở dữ liệu trải dài trên nhiều vùng AWS.

Cụm mở rộng ClusterControl trong EC2

Có thể thiết lập 'sao chép lai' bằng cách kết hợp sao chép đồng bộ trong Cụm Galera và sao chép không đồng bộ giữa cụm và một hoặc nhiều nô lệ. Các tùy chọn như trì hoãn quá trình nô lệ sẽ cung cấp thêm mức bảo vệ cho dữ liệu.

ClusterControl Thêm bản sao trong EC2

Lớp proxy

Để đạt được tính khả dụng cao, việc triển khai một thiết lập có tính khả dụng cao là không đủ. Các ứng dụng phải bằng cách nào đó biết được nút nào đang hoạt động và nút nào không. Những thay đổi trong cấu trúc liên kết, ví dụ:di chuyển một chủ sang một máy chủ khác, cũng cần phải được truyền bằng cách nào đó để tránh lỗi trong lớp ứng dụng. ClusterControl hỗ trợ triển khai các proxy như HAProxy, MaxScale và ProxySQL. Đối với HAProxy và ProxySQL, có các tùy chọn bổ sung để triển khai các phiên bản dự phòng với Keepalived và VirtualIP.

Trình cân bằng tải trình quản lý ClusterControl trên các nút EC2

Bản sao giữa các vùng

Amazon RDS cung cấp dịch vụ đọc bản sao. Bản sao giữa các khu vực cung cấp cho bạn khả năng mở rộng quy mô lần đọc, vì AWS có các dịch vụ của mình trong một số trung tâm dữ liệu trên khắp thế giới. Tất cả các bản sao đã đọc đều có thể truy cập được và có thể được sử dụng để đọc ở một số lượng tối đa là năm vùng. Các nút này độc lập và có thể được sử dụng trong đường dẫn nâng cấp của bạn hoặc có thể được thăng cấp thành cơ sở dữ liệu độc lập.

Ngoài ra, Amazon còn cung cấp triển khai Multi-AZ dựa trên DRBD, sao chép đĩa đồng bộ. Nó khác với Read Replicas như thế nào? Sự khác biệt chính là chỉ công cụ cơ sở dữ liệu trên phiên bản chính là hoạt động, dẫn đến các biến thể kiến ​​trúc khác.

Trái ngược với đọc bản sao, nâng cấp phiên bản công cụ cơ sở dữ liệu diễn ra trên bản chính. Một điểm khác biệt nữa là AWS RDS sẽ tự động chuyển đổi dự phòng với DRBD, trong khi đọc các bản sao (sử dụng sao chép không đồng bộ) sẽ yêu cầu bạn thao tác thủ công.

Chuyển đổi dự phòng Multi-AZ trên RDS sử dụng thay đổi DNS để trỏ đến phiên bản chờ, theo Amazon, điều này sẽ xảy ra trong vòng 60-120 giây trong quá trình chuyển đổi dự phòng. Vì chế độ chờ sử dụng cùng dữ liệu lưu trữ với dữ liệu chính, có thể sẽ có khôi phục giao dịch / nhật ký. Các cơ sở dữ liệu lớn hơn có thể dành một lượng thời gian đáng kể cho việc khôi phục InnoDB, vì vậy hãy cân nhắc điều đó trong kế hoạch DR và ​​tính toán RTO của bạn.

Tất nhiên, điều này đi kèm với chi phí bổ sung. Hãy xem một số ví dụ cơ bản. Chi phí của máy chủ db.t2.medium với 2vCPU, 4GB ram là 185,98 USD mỗi tháng, giá sẽ tăng gấp đôi khi bạn kích hoạt bản sao Multizone (MZ) lên 370,98 UDB. Giá sẽ khác nhau tùy theo khu vực nhưng sẽ tăng gấp đôi tính theo MZ.

So sánh chi phí

Để đạt được điều tương tự với EC2, bạn có thể triển khai các máy ảo của mình ở các vùng khác nhau. Mỗi Khu vực AWS hoàn toàn độc lập. Bạn có thể thay đổi cài đặt Vùng AWS trong bảng điều khiển, bằng cách đặt biến môi trường EC2_REGION hoặc có thể ghi đè nó bằng cách sử dụng tham số - vùng với Giao diện dòng lệnh AWS. Khi tập hợp các máy chủ của bạn đã sẵn sàng, bạn có thể sử dụng ClusterControl để triển khai và giám sát quá trình sao chép của mình. Bạn cũng có thể thiết lập thủ công sao chép thông qua bảng điều khiển bằng cách sử dụng các lệnh tiêu chuẩn.

Nhân rộng công nghệ chéo

Có thể thiết lập sao chép giữa bản sao Amazon RDS MySQL hoặc MariaDB DB và bản sao MySQL hoặc MariaDB bên ngoài Amazon RDS. Điều này được thực hiện bằng cách sử dụng phương pháp sao chép tiêu chuẩn trong mysql, thông qua các bản ghi nhị phân. Để bật nhật ký nhị phân, bạn cần sửa đổi cấu hình my.cnf. Nếu không có quyền truy cập vào shell, nhiệm vụ này trở nên bất khả thi trong RDS. Nó được thực hiện theo một cách không quá rõ ràng. Bạn có hai lựa chọn. Một là bật sao lưu - thiết lập sao lưu tự động trên phiên bản Amazon RDS DB của bạn với tỷ lệ lưu giữ cao hơn 0. Hoặc cho phép sao chép sang máy chủ nô lệ được tạo sẵn. Cả hai tác vụ sẽ kích hoạt nhật ký nhị phân mà sau này bạn có thể sử dụng để sao chép của mình.

Bật nhật ký nhị phân thông qua sao lưu RDS

Duy trì các binlog trong bản sao chính của bạn cho đến khi bạn xác minh rằng chúng đã được áp dụng trên bản sao. Việc bảo trì này đảm bảo rằng bạn có thể khôi phục phiên bản chính của mình trong trường hợp bị lỗi.

Một rào cản khác có thể là quyền. Các quyền cần thiết để bắt đầu sao chép trên phiên bản Amazon RDS DB bị hạn chế và không có sẵn cho người dùng chính Amazon RDS của bạn. Do đó, bạn phải sử dụng lệnh Amazon RDS mysql.rds_set_external_master và mysql.rds_start_replication để thiết lập sao chép giữa cơ sở dữ liệu trực tiếp và cơ sở dữ liệu Amazon RDS của bạn.

Giám sát các sự kiện chuyển đổi dự phòng cho phiên bản Amazon RDS là bản sao của bạn. Nếu xảy ra chuyển đổi dự phòng, thì cá thể DB là bản sao của bạn có thể được tạo lại trên một máy chủ mới có địa chỉ mạng khác. Để biết thông tin về cách theo dõi các sự kiện chuyển đổi dự phòng, hãy xem Sử dụng Thông báo Sự kiện Amazon RDS.

Trong ví dụ dưới đây, chúng ta sẽ thấy cách bật tính năng sao chép từ RDS sang DB bên ngoài nằm trên phiên bản EC2.
Bạn nên bật nhật ký nhị phân, chúng tôi sử dụng RDS slave tại đây.

Chỉ định số giờ lưu giữ nhật ký nhị phân.

mysql -h RDS_MASTER -u<username> -u<password>
call mysql.rds_set_configuration('binlog retention hours', 7);

Trên RDS MASTER, tạo người dùng sao chép bằng các lệnh sau:

CREATE USER 'repl'@'ec2DBslave' IDENTIFIED BY 's3cr3tp4SSw0rd';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'ec2DBslave';

Trên RDS SLAVE, hãy chạy các lệnh:

mysql -u<username> -u<password> -h RDS_SLAVE
call mysql.rds_stop_replication;
SHOW SLAVE STATUS;  Exec_Master_Log_Pos, Relay_Master_Log_File.

Trên RDS SLAVE, chạy mysqldump với định dạng sau:

mysqldump -u<username> -u<password> -h RDS_SLAVE --routines --triggers --single-transaction --databases DB1 DB2 DB3 > mysqldump.sql

Nhập kết xuất DB vào cơ sở dữ liệu bên ngoài:

mysql -u<username> -u<password> -h ec2DBslave
tee import_database.log;
source mysqldump.sql;
CHANGE MASTER TO 
 MASTER_HOST='RDS_MASTER', 
 MASTER_USER='repl',
 MASTER_PASSWORD='s3cr3tp4SSw0rd',
 MASTER_LOG_FILE='<Relay_Master_Log_File>',
 MASTER_LOG_POS=<Exec_Master_Log_Pos>;

Tạo bộ lọc sao chép để bỏ qua các bảng do AWS chỉ tạo trên RDS

CHANGE REPLICATION FILTER REPLICATE_WILD_IGNORE_TABLE = ('mysql.rds\_%');

Bắt đầu sao chép

START SLAVE;

Xác minh trạng thái sao chép

SHOW SLAVE STATUS;

Đó là nó cho bây giờ. Quản lý MySQL trên AWS là một chủ đề lớn. Hãy cho chúng tôi biết suy nghĩ của bạn trong phần bình luận bên dưới.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách thiết lập bản sao MariaDB (Master-Slave) trong CentOS / RHEL 7 và Debian 8/9

  2. Tường lửa SQL trở nên dễ dàng với ClusterControl &ProxySQL

  3. Cách COT () hoạt động trong MariaDB

  4. Cách LOG () hoạt động trong MariaDB

  5. 7 Tùy chọn để Kích hoạt Pipes (||) làm Toán tử Kết nối trong MariaDB