MySQL Cluster là một hệ thống cơ sở dữ liệu phân tán, được thiết kế với nhiều thành phần hoạt động đồng bộ để cung cấp hiệu suất cao, tính sẵn sàng, và khả năng mở rộng. Mỗi thành phần trong MySQL Cluster đóng một vai trò quan trọng trong việc xử lý, lưu trữ và quản lý dữ liệu.
MySQL Server
MySQL Server là thành phần cốt lõi trong MySQL Cluster, chịu trách nhiệm thực thi các truy vấn SQL và quản lý giao tiếp giữa các ứng dụng và cơ sở dữ liệu. Trong MySQL Cluster, MySQL Server đóng vai trò như SQL Node, nơi mà các truy vấn SQL từ ứng dụng được xử lý và gửi đến Data Node để thao tác với dữ liệu. Tất cả các chức năng chuẩn của MySQL như truy vấn, chèn, cập nhật, và xoá dữ liệu đều được thực hiện qua MySQL Server.
- Giao tiếp với các node khác: MySQL Server thực hiện giao tiếp với Management Node để nhận biết cấu hình của cluster và trao đổi dữ liệu với Data Node để truy cập thông tin.
- Khả năng mở rộng: Có thể cài đặt nhiều MySQL Server trong cluster để phân phối tải công việc và tăng cường hiệu suất xử lý.
NDB Cluster (NDB và NDBD)
NDB Cluster là phần cốt lõi chịu trách nhiệm lưu trữ dữ liệu trong MySQL Cluster. Nó sử dụng kiến trúc NDB (Network DataBase), là một hệ quản trị cơ sở dữ liệu phân tán, cho phép dữ liệu được lưu trữ và truy cập từ nhiều node khác nhau. NDB hoạt động theo cơ chế lưu trữ trong bộ nhớ (in-memory), cho phép truy cập nhanh và hiệu suất cao.
- NDB: Đây là thành phần chính chịu trách nhiệm lưu trữ và quản lý dữ liệu. Nó hoạt động theo kiểu “shared-nothing”, nghĩa là không có node nào chia sẻ tài nguyên với các node khác, điều này giúp tăng khả năng mở rộng và độ tin cậy của hệ thống.
- NDBD: Là một tiến trình trong NDB Cluster, chịu trách nhiệm quản lý các Data Node. NDBD sẽ điều phối việc lưu trữ và sao chép dữ liệu giữa các Data Node trong cluster.
NDB Cluster cung cấp khả năng sao chép đồng bộ dữ liệu giữa các node, đảm bảo rằng khi một node bị lỗi, các node còn lại vẫn có thể cung cấp dữ liệu cho hệ thống.
Data Nodes
Data Node là các máy chủ hoặc tiến trình chịu trách nhiệm lưu trữ thực tế các dữ liệu trong MySQL Cluster. Mỗi Data Node sẽ chứa một phần hoặc toàn bộ dữ liệu, và hệ thống sẽ sao chép dữ liệu này sang các Data Node khác để đảm bảo tính dự phòng và khả dụng.
- Lưu trữ và quản lý dữ liệu: Data Node lưu trữ dữ liệu theo các bảng NDB, được phân chia và phân phối đồng đều giữa các node để tối ưu hóa khả năng truy xuất và lưu trữ.
- Sao chép và dự phòng: Dữ liệu trên mỗi Data Node được sao chép sang các Data Node khác trong cluster để đảm bảo tính toàn vẹn và an toàn khi một Data Node gặp sự cố.
- Đồng bộ và phân phối dữ liệu: Các Data Node hoạt động đồng bộ với nhau để chia sẻ thông tin, dữ liệu và trạng thái, đảm bảo rằng tất cả các node đều có dữ liệu chính xác và nhất quán.
Việc thêm hoặc loại bỏ Data Node có thể được thực hiện một cách dễ dàng mà không ảnh hưởng đến hệ thống.
Management Nodes
Management Node là thành phần trung tâm quản lý toàn bộ hệ thống MySQL Cluster. Nhiệm vụ chính của Management Node là điều khiển và giám sát các thành phần khác như Data Node và SQL Node trong cluster.
- Quản lý cấu hình cluster: Management Node giữ tệp cấu hình (
config.ini
), bao gồm thông tin về cách các node trong cluster kết nối và tương tác với nhau.
- Theo dõi và giám sát: Management Node theo dõi trạng thái của các Data Node và SQL Node trong hệ thống, giúp phát hiện và xử lý các sự cố, chẳng hạn như khi một node bị lỗi hoặc không phản hồi.
- Khởi động và điều phối: Management Node là nơi khởi động và điều phối hoạt động của các node trong cluster. Nó đảm bảo rằng tất cả các thành phần được khởi động đúng cách và hoạt động đồng bộ với nhau.
- Sao lưu và khôi phục: Management Node cũng có vai trò quan trọng trong việc quản lý quá trình sao lưu và khôi phục dữ liệu trong cluster.
Thường chỉ cần một hoặc hai Management Node trong một cluster, tùy thuộc vào nhu cầu của hệ thống, để đảm bảo tính sẵn sàng cao.
SQL Nodes
SQL Node là thành phần chịu trách nhiệm xử lý các truy vấn SQL từ phía ứng dụng và chuyển chúng đến Data Node để thực hiện trên dữ liệu thực tế. SQL Node cũng chính là các tiến trình của MySQL Server, hoạt động như cầu nối giữa ứng dụng và cơ sở dữ liệu phân tán trong cluster.
- Xử lý truy vấn SQL: SQL Node nhận truy vấn từ phía người dùng hoặc ứng dụng, sau đó phân tích và gửi các truy vấn này đến Data Node để xử lý.
- Giao tiếp với Data Node: SQL Node không lưu trữ dữ liệu, nhưng thực hiện các thao tác truy vấn và thao tác dữ liệu trên Data Node. Điều này đảm bảo rằng mọi thao tác truy cập dữ liệu đều được xử lý một cách nhanh chóng và hiệu quả.
- Tăng khả năng mở rộng: Có thể triển khai nhiều SQL Node trong hệ thống, giúp phân phối tải công việc và tăng hiệu suất của cluster. Mỗi SQL Node có thể xử lý một lượng lớn truy vấn đồng thời, cung cấp khả năng mở rộng theo chiều ngang cho các ứng dụng có lưu lượng truy vấn lớn.
SQL Node hoạt động độc lập với Data Node, và nhiều SQL Node có thể được cấu hình để cùng kết nối tới các Data Node trong hệ thống, đảm bảo khả năng chịu tải cao.