Tính sẵn sàng cao và nhân rộng của MySQL

Tác giả Security+, T.Ba 12, 2024, 03:13:30 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 2 Khách đang xem chủ đề.

Tính sẵn sàng cao và nhân rộng của MySQL


Mọi tổ chức thường sử dụng nhiều cơ sở dữ liệu và ứng dụng quan trọng trong kinh doanh, chẳng hạn như Kho dữ liệu, Hệ thống quản lý quan hệ khách hàng (CRM), Ứng dụng quản lý chuỗi cung ứng & thương mại điện tử cũng như Hệ thống thông minh tài chính & kinh doanh để tăng cường phát triển kinh doanh. Khi một hệ thống, cơ sở dữ liệu hoặc ứng dụng bị lỗi trong những trường hợp bất thường, các công ty có thể phải đối mặt với tình trạng mất doanh thu đáng kể, nhân viên làm việc kém hiệu quả và người tiêu dùng không hài lòng.

Theo Báo cáo toàn cầu về thời gian ngừng hoạt động của máy chủ doanh nghiệp (2019) từ Statista, 40% số người được hỏi cho biết rằng chỉ một giờ ngừng hoạt động của máy chủ doanh nghiệp khiến công ty của họ mất hơn 1 triệu USD doanh thu. Để đảm bảo không có hoặc ít thời gian ngừng hoạt động, các tổ chức phải triển khai các khung có tính sẵn sàng cao (HA) cho các cơ sở dữ liệu như MySQL có tính sẵn sàng cao để cung cấp tính khả dụng liên tục trong trường hợp xảy ra lỗi.


Trong bài viết này, bạn sẽ tìm hiểu về khung có tính sẵn sàng cao của MySQL, các tính năng của khung có tính sẵn sàng cao của MySQL và cách MySQL đạt được tính sẵn sàng cao bằng cách sử dụng cụm MySQL InnoDB.

1. Điều kiện tiên quyết

Hiểu biết cơ bản về kỹ thuật dự phòng dữ liệu và cơ sở dữ liệu MySQL.

2. MySQL là gì?

Được phát triển vào năm 1995, MySQL là một trong những Hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) phổ biến nhất cho phép bạn lưu trữ, quản lý và xử lý dữ liệu được lưu trữ trong cơ sở dữ liệu hoặc máy chủ. Nói cách khác, MySQL là RDBMS nguồn mở cho phép bạn lưu trữ, quản lý và truy vấn lượng dữ liệu khổng lồ bằng Ngôn ngữ truy vấn có cấu trúc (SQL).

Với MySQL, bạn có thể triển khai các kỹ thuật Xử lý dữ liệu khác nhau như Lọc dữ liệu, Thao tác dữ liệu, Tổng hợp, Nối và Sắp xếp. Ngoài ra, MySQL tương thích với nhiều hệ điều hành, bao gồm Windows, macOS và Linux, đồng thời hỗ trợ nhiều ngôn ngữ lập trình, bao gồm PHP, PERL, C, C++, JAVA và các ngôn ngữ khác.

Để khám phá sự khác biệt giữa PostgreSQL và MySQL, hãy truy cập hướng dẫn chuyên sâu của chúng tôi về PostgreSQL và MySQL: 8 điểm khác biệt quan trọng.

3. Tính sẵn sàng cao là gì?

Tính sẵn sàng cao (HA) đề cập đến khả năng hệ thống có thể hoạt động liên tục mà không gặp sự cố trong một thời gian dài. Khung HA hoạt động để xác minh rằng hệ thống đáp ứng các yêu cầu của người dùng mà không có bất kỳ gián đoạn nào trong quá trình xử lý dữ liệu từ đầu đến cuối, từ đó đảm bảo khả năng chịu lỗi và tính khả dụng của dữ liệu cao.

Nói cách khác, tính sẵn sàng cao (HA) là một kỹ thuật giúp loại bỏ lỗi đơn lẻ hoặc lỗi ngẫu nhiên của hệ thống hoặc ứng dụng để đảm bảo hoạt động liên tục hoặc thời gian hoạt động trong một khoảng thời gian dài. Tỷ lệ phần trăm thời gian các dịch vụ của hệ thống máy tính có sẵn trong một khoảng thời gian nhất định được gọi là tính sẵn sàng hoặc tính sẵn sàng cao. Nó thường được biểu thị dưới dạng liên tiếp của số 9.

Tỷ lệ sẵn sàng cao sẽ khác nhau tùy thuộc vào hệ thống hoặc ứng dụng của bạn. Ví dụ: bốn số 9', tức là độ khả dụng 99,99%, là tiêu chuẩn ngành cho các ứng dụng quan trọng như Hệ thống dịch vụ tài chính và thương mại điện tử của bạn. Bạn có thể ngừng hoạt động không quá 52,60 phút mỗi năm hoặc 8,64 giây ngừng hoạt động mỗi ngày nếu hệ thống của bạn có sẵn 99,99%.

Tương tự, đối với các ứng dụng và hệ thống không quan trọng, tính sẵn sàng cao có thể là hai số 9, tức là 99%, tương đương với 8,77 giờ ngừng hoạt động mỗi năm hoặc 1,44 phút không sẵn sàng mỗi ngày. Theo tiêu chuẩn ngành, nếu hệ thống hoặc ứng dụng không thể ngừng hoạt động quá vài phút mỗi năm thì rõ ràng là dịch vụ đó yêu cầu 99,999% Độ sẵn sàng cao.

Bảng dưới đây hiển thị tính khả dụng và thời gian ngừng hoạt động tương ứng trong suốt cả năm.

4. Các tính năng của Khung có tính sẵn sàng cao

Khả năng phục hồi ngay lập tức sau các lỗi có thể xảy ra ở bất kỳ thành phần nào của hệ thống là nền tảng để trở thành một hệ thống có tính sẵn sàng cao. Để đảm bảo khả năng phục hồi và tính sẵn sàng cao, bốn thành phần quan trọng trong bất kỳ hệ thống HA nào phải hoạt động cùng nhau theo phương pháp tự động.


4.1. Dự phòng cơ sở hạ tầng và dữ liệu

Để đảm bảo rằng một dịch vụ có tính sẵn sàng cao, chúng tôi phải đảm bảo rằng cơ sở hạ tầng lưu trữ dịch vụ đó có tính dự phòng cũng như bản sao dự phòng cập nhật của dữ liệu mà dịch vụ đó sử dụng hoặc cung cấp. Dịch vụ này đóng vai trò như một dịch vụ dự phòng, sẵn sàng tiếp quản nếu lỗi làm gián đoạn cơ sở dữ liệu chính hoặc cơ sở dữ liệu chính.

4.2. Cơ chế phát hiện và sửa lỗi

Điều quan trọng là phải nhận thấy bất kỳ lỗi nào trong bất kỳ khía cạnh nào của hệ thống cốt lõi có thể làm giảm tính khả dụng của nó càng sớm càng tốt. Điều này sẽ cho phép khung thực hiện các bước khắc phục trên hệ thống chính hoặc chuyển đổi dự phòng các dịch vụ sang hệ thống dự phòng.

4.3. Cơ chế chuyển đổi dự phòng

Thành phần này chịu trách nhiệm chuyển dịch vụ sang cơ sở hạ tầng dự phòng của bạn. Người dùng nên đảm bảo rằng nếu có sẵn nhiều hệ thống dự phòng, thành phần cơ chế chuyển đổi dự phòng này phải chọn hệ thống tốt nhất và quảng bá nó làm dịch vụ chính.

4.4. Cơ chế chuyển hướng người dùng/ứng dụng

Khi hệ thống dự phòng đảm nhiệm vai trò chính, tính năng sẵn sàng cao sẽ đảm bảo rằng tất cả các kết nối của ứng dụng và người dùng sẽ được chuyển hoặc chuyển hướng đến cơ sở dữ liệu chính mới. Trong bối cảnh cơ sở dữ liệu MySQL, nhiều điều hơn nữa sẽ được khám phá trong các phần sắp tới về tính sẵn sàng cao của MySQL.

4.5. Chạy liên tục

Khi một hệ thống hoặc ứng dụng chạy liên tục, ngay cả một lần mất điện hoặc mất điện ngắn hạn cũng có thể gây ra những khó khăn lớn hơn đáng kể khi các hệ thống được kết nối và đồng bộ hóa bị lỗi theo tầng. Trong những trường hợp như vậy, đáng để xem xét đầu tư vào tính sẵn sàng cao vì chi phí sửa chữa hệ thống hoặc ứng dụng cao hơn đáng kể.

5. Khung sẵn sàng cao của MySQL

Hình ảnh được cung cấp bên dưới giống với khung để triển khai tính sẵn sàng cao và dự phòng dữ liệu tối ưu của MySQL.


Trong khung có tính sẵn sàng cao của MySQL, Cấu hình Master-Slave ba nút được sử dụng để triển khai quy trình sao chép bán đồng bộ của MySQL, đảm bảo cơ sở hạ tầng và dự phòng dữ liệu. Ngoài ra, các thành phần Corosync và Pacemaker được sử dụng để phát hiện và khắc phục lỗi.

Chúng ta hãy xem xét kỹ hơn chức năng của một số thành phần chính của khung tính sẵn sàng cao của MySQL.

5.1. Đồng bộ hóa

Thành phần đầu tiên của khung có tính sẵn sàng cao của MySQL, Corosync, cung cấp cơ sở hạ tầng truyền thông minh bạch cho các máy chủ hoặc nút cơ sở dữ liệu, cho phép chúng trao đổi tin nhắn một cách đáng tin cậy. Nó tạo ra một vòng cụm gồm các nút và duy trì theo dõi các nút nào tham gia và rời khỏi cụm thông qua tư cách thành viên cụm.

Corosync cũng hợp tác chặt chẽ với thành phần Máy tạo nhịp tim để truyền tính khả dụng của nút để Máy tạo nhịp tim có thể đưa ra các phán đoán sáng suốt.

5.2. Máy tạo nhịp tim

Máy tạo nhịp tim là thành phần cơ bản của cơ sở hạ tầng có tính sẵn sàng cao của MySQL, đảm bảo tính sẵn sàng cao cho cơ sở dữ liệu MySQL chạy trên cụm. Nó còn được gọi là Trình quản lý tài nguyên cụm (CRM) vì nó xác định và giải quyết các lỗi cấp nút bằng cách giao tiếp với Corosync.

Pacemaker không chỉ phát hiện các lỗi ở cấp độ nút mà còn phát hiện và giải quyết các lỗi MySQL bằng cách tương tác với thành phần Tác nhân tài nguyên (RA). Hơn nữa, Pacemaker định cấu hình và kiểm soát tài nguyên MySQL bằng cách thực hiện các hoạt động như bắt đầu, dừng, giám sát, thăng cấp và hạ cấp.

5.3. Đại lý tài nguyên

Thành phần có tính sẵn sàng cao của MySQL này, tức là Tác nhân tài nguyên, đóng vai trò là đường dẫn hoặc giao diện giữa cơ sở dữ liệu chính-phụ của MySQL và Máy tạo nhịp tim. Nó chủ yếu được sử dụng để thực hiện các hành động bắt đầu, dừng, thăng cấp, hạ cấp và giám sát do Máy tạo nhịp tim khởi xướng.

5.4. Thành phần ánh xạ DNS

Sau khi chuyển đổi dự phòng thành công, Tác nhân tài nguyên thực thi Thành phần ánh xạ DNS, thay đổi bản ghi DNS của máy chủ MySQL chính bằng địa chỉ IP của máy chủ mới. Ngoài ra, máy khách luôn kết nối với máy chủ MySQL bằng tên DNS chính.

Bằng cách duy trì ánh xạ tên DNS này tới địa chỉ IP của cơ sở dữ liệu chính hiện có, người dùng có thể đảm bảo rằng máy khách không cần cập nhật chuỗi kết nối hoặc thuộc tính của mình khi có chuyển đổi dự phòng.

6. Làm thế nào MySQL đạt được tính sẵn sàng cao?

Để đạt được tính sẵn sàng cao và dự phòng dữ liệu của MySQL, cơ sở dữ liệu MySQL sử dụng cụm MySQL InnoDB. Cụm MySQL InnoDB cung cấp giải pháp HA gốc và tích hợp cho cơ sở dữ liệu của bạn, với khả năng phát hiện chuyển đổi dự phòng đơn và đa chủ. Cụm MySQL InnoDB bao gồm ba thành phần chính như Máy chủ MySQL có khả năng Sao chép nhóm, Bộ định tuyến MySQL và MySQL Shell.

6.1. Máy chủ MySQL có khả năng sao chép nhóm

Máy chủ MySQL có khả năng Sao chép nhóm đảm bảo tính sẵn sàng cao của MySQL bằng cách sao chép dữ liệu đến tất cả các thành viên cụm và cung cấp khả năng chịu lỗi, chuyển đổi dự phòng tự động và độ linh hoạt. Nó là tập hợp các máy chủ cơ sở dữ liệu sao chép cơ sở dữ liệu MySQL trên một số nút, đảm bảo khả năng chịu lỗi và tính sẵn có của dữ liệu.

Khi dữ liệu trong cơ sở dữ liệu MySQL thay đổi, nó sẽ ngay lập tức sao chép sang các nút phụ của máy chủ. Ý tưởng Bản sao nhóm MySQL có thể so sánh với khái niệm nhóm khả dụng Luôn bật.

6.2. Bộ định tuyến MySQL

Khái niệm Bộ định tuyến MySQL tương tự như tên mạng ảo của cụm chuyển đổi dự phòng Windows Server. Khi xảy ra chuyển đổi dự phòng, ứng dụng khách phải luôn nhận thức được cấu trúc liên kết cụm và phiên bản CHÍNH, trong đó chức năng này được Bộ định tuyến MySQL xử lý. Nó hướng các yêu cầu dữ liệu đến phiên bản Máy chủ MySQL gần nhất hiện có. Ngoài ra, Bộ định tuyến MySQL hoạt động như một proxy để ẩn nhiều máy chủ cơ sở dữ liệu MySQL.

6.3. MySQL Shell

MySQL Shell là tiện ích cấu hình để kết nối, triển khai và quản lý cụm MySQL InnoDB. MySQL Shell bao gồm API quản trị, chứa biến toàn cục dba để khởi tạo các biến phiên tương ứng cho các kết nối mới tới MySQL. Với MySQL Shell, cụm InnoDB có thể được triển khai và quản lý bằng biến dba.

Cụm MySQL InnoDB kết hợp Máy chủ MySQL với Bản sao nhóm, Bộ định tuyến MySQL và MySQL Shell, loại bỏ nhu cầu về các công cụ, tập lệnh hoặc các thành phần khác của bên thứ ba. Hơn nữa, nó sử dụng các khả năng của MySQL đã được thử và đúng như InnoDB, GTID, nhật ký nhị phân, sao chép đa luồng, sao chép đa nguồn và lược đồ hiệu suất. Chỉ mất chưa đầy năm phút để thiết lập Cụm MySQL InnoDB, cụm này có thể được kiểm soát thêm thông qua API quản trị có thể tạo tập lệnh của MySQL Shell.

Trong bài viết này, bạn đã tìm hiểu về MySQL, khung có tính sẵn sàng cao (HA), khung có tính sẵn sàng cao của MySQL, các tính năng của khung có tính sẵn sàng cao của MySQL và cơ chế giúp MySQL đạt được tính sẵn sàng cao. Bước tiếp theo, bạn có thể khám phá và tìm hiểu cách triển khai quy trình triển khai trong MySQL để đạt được tính sẵn sàng cao trong cơ sở dữ liệu MySQL. Để tìm hiểu thêm về tính sẵn sàng cao của MySQL, bạn có thể kiểm tra tài liệu chính thức của họ.

Danh sách các tổ chức sử dụng cơ sở dữ liệu MySQL mở rộng hơn 5000. Chắc chắn sau khi đọc bài viết này thì bạn cũng là một trong số đó. Nếu bạn quan tâm đến việc triển khai Đường ống dữ liệu để trích xuất, chuyển đổi và tải dữ liệu từ cơ sở dữ liệu MySQL để phân tích sâu hơn, hãy xem lựa chọn phù hợp của bạn.