Hướng dẫn Cài đặt & Cấu hình MariaDB Galera Cluster Chi tiết

Đăng ngày: 23-08-2025 10:30
mariadb clustergalera clustercài đặt mariadb clustercấu hình galeramariadb high availabilitydatabase clusterhướng dẫn mariadbreplicationwsrepubuntulinux

Hệ thống cơ sở dữ liệu là trái tim của nhiều ứng dụng. Việc đảm bảo nó luôn hoạt động là cực kỳ quan trọng. MariaDB Galera Cluster cung cấp một giải pháp tuyệt vời. Nó giúp tạo ra một cụm database có tính sẵn sàng cao. Dữ liệu sẽ được đồng bộ trên nhiều máy chủ. Nếu một máy chủ gặp sự cố, hệ thống vẫn tiếp tục hoạt động. Bài viết này sẽ hướng dẫn bạn chi tiết từng bước cài đặt.

1. Giới thiệu về MariaDB Galera Cluster

MariaDB Galera Cluster là một cụm cơ sở dữ liệu đồng bộ. Nó sử dụng công nghệ đồng bộ hóa đa chủ (multi-master replication) của Galera. Mọi node trong cluster đều có thể đọc và ghi dữ liệu. Dữ liệu được sao chép gần như ngay lập tức đến các node khác. Điều này đảm bảo tính nhất quán và toàn vẹn dữ liệu. Cụm cluster yêu cầu tối thiểu ba node để hoạt động ổn định. Điều này giúp tránh được hiện tượng "split-brain".

2. Chuẩn bị môi trường

Trước khi bắt đầu, chúng ta cần chuẩn bị môi trường máy chủ. Hướng dẫn này được thực hiện trên môi trường hệ điều hành Linux. Các lệnh cụ thể sẽ dùng cho Ubuntu 22.04. Tuy nhiên, bạn có thể dễ dàng áp dụng cho các bản phân phối khác. Ví dụ như CentOS hoặc RHEL với một vài thay đổi nhỏ về trình quản lý gói.

Chúng ta sẽ xây dựng một cụm cluster gồm ba node. Mỗi node là một máy chủ Linux riêng biệt. Giả định rằng bạn đã có ba máy chủ được cài đặt sẵn. Các máy chủ này có thể giao tiếp với nhau qua mạng nội bộ. Điều này là yêu cầu bắt buộc để đồng bộ dữ liệu.

Đây là thông tin địa chỉ IP giả định của ba node:

  • Node 1 (node1): 10.0.0.11
  • Node 2 (node2): 10.0.0.12
  • Node 3 (node3): 10.0.0.13

Bạn cần đảm bảo tường lửa giữa các node đã được cấu hình đúng. Galera Cluster sử dụng các cổng sau: 3306, 4567, 4568, và 4444. Hãy cho phép traffic TCP và UDP qua lại giữa các node trên những cổng này. Việc này đảm bảo quá trình đồng bộ hóa diễn ra suôn sẻ.

3. Cài đặt MariaDB Server trên tất cả các Node

Bước đầu tiên là cài đặt MariaDB trên cả ba máy chủ. Hãy thực hiện các lệnh sau trên node1, node2, và node3. Bạn cần đăng nhập với quyền root hoặc sudo.


# Cập nhật danh sách gói phần mềm
sudo apt update

# Cài đặt MariaDB Server và Client
sudo apt install mariadb-server mariadb-client -y

Sau khi cài đặt xong, hãy chạy công cụ bảo mật ban đầu. Lệnh này sẽ giúp bạn đặt mật khẩu cho người dùng root. Nó cũng sẽ xóa các cơ sở dữ liệu và người dùng không cần thiết. Hãy chạy lệnh này trên cả ba node.


# Chạy script bảo mật ban đầu
sudo mysql_secure_installation

Hãy trả lời các câu hỏi theo hướng dẫn. Quan trọng nhất là đặt mật khẩu mạnh cho người dùng root.

4. Cấu hình Galera Cluster

Bây giờ là phần quan trọng nhất. Chúng ta sẽ cấu hình để các node MariaDB có thể "nói chuyện" với nhau. File cấu hình chính của Galera nằm tại /etc/mysql/mariadb.conf.d/60-galera.cnf. Chúng ta sẽ tạo và chỉnh sửa file này trên từng node. Nội dung file trên các node sẽ gần như giống hệt nhau.

Hãy dừng dịch vụ MariaDB trước khi chỉnh sửa cấu hình. Thực hiện trên cả ba node.


sudo systemctl stop mariadb

4.1. Cấu hình cho Node 1 (10.0.0.11)

Hãy tạo và mở file /etc/mysql/mariadb.conf.d/60-galera.cnf. Sau đó, dán nội dung sau vào.


[galera]
# Cấu hình bắt buộc
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://10.0.0.11,10.0.0.12,10.0.0.13"
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2

# Cấu hình riêng cho từng node
wsrep_cluster_name="my_galera_cluster"
wsrep_node_address="10.0.0.11"
wsrep_node_name="node1"

4.2. Cấu hình cho Node 2 (10.0.0.12)

Trên node 2, nội dung file 60-galera.cnf gần như tương tự. Chỉ có hai dòng wsrep_node_address và wsrep_node_name là khác. Hãy sao chép nội dung từ node 1 và sửa lại hai dòng đó.


[galera]
# ... các dòng cấu hình chung giữ nguyên ...
wsrep_cluster_address="gcomm://10.0.0.11,10.0.0.12,10.0.0.13"

# Cấu hình riêng cho node 2
wsrep_cluster_name="my_galera_cluster"
wsrep_node_address="10.0.0.12"
wsrep_node_name="node2"

4.3. Cấu hình cho Node 3 (10.0.0.13)

Tương tự, hãy sửa lại file cấu hình trên node 3. Hãy đảm bảo bạn đã thay đổi đúng địa chỉ IP và tên của node.


[galera]
# ... các dòng cấu hình chung giữ nguyên ...
wsrep_cluster_address="gcomm://10.0.0.11,10.0.0.12,10.0.0.13"

# Cấu hình riêng cho node 3
wsrep_cluster_name="my_galera_cluster"
wsrep_node_address="10.0.0.13"
wsrep_node_name="node3"
Hướng dẫn Cài đặt & Cấu hình MariaDB Galera Cluster Chi tiết - 0

5. Khởi động Cụm Cluster

Quá trình khởi động cluster cần được thực hiện theo đúng thứ tự. Node đầu tiên sẽ khởi tạo một cụm mới. Các node tiếp theo sẽ tham gia vào cụm đã tồn tại đó.

5.1. Khởi động Node đầu tiên (Node 1)

Trên node1, hãy chạy lệnh đặc biệt sau. Lệnh này sẽ khởi tạo một "Primary Component". Nó báo cho node này biết rằng nó là node đầu tiên của cluster.


sudo galera_new_cluster

Sau khi chạy, dịch vụ MariaDB trên node 1 sẽ được khởi động. Nó sẽ sẵn sàng để các node khác tham gia.

5.2. Khởi động các Node còn lại (Node 2 và Node 3)

Trên node2 và node3, bạn chỉ cần khởi động dịch vụ MariaDB một cách bình thường. Chúng sẽ tự động đọc file cấu hình. Sau đó, chúng sẽ kết nối đến địa chỉ cluster đã khai báo và tham gia vào cụm.

Hãy chạy lệnh này trên node2, sau đó chạy trên node3:


sudo systemctl start mariadb

6. Kiểm tra trạng thái Cluster

Sau khi cả ba node đã khởi động, bạn cần kiểm tra xem chúng đã kết nối với nhau thành công chưa. Hãy đăng nhập vào MySQL trên bất kỳ node nào.


sudo mysql -u root -p

Sau khi đăng nhập, hãy chạy câu lệnh sau. Nó sẽ hiển thị trạng thái của cluster.


SHOW STATUS LIKE 'wsrep_cluster_size';

Nếu mọi thứ hoạt động đúng, bạn sẽ thấy kết quả là 3. Con số này cho biết có ba node đang hoạt động trong cluster. Bạn cũng có thể kiểm tra các biến khác như wsrep_local_state_comment (nên là Synced) và wsrep_incoming_addresses để xem địa chỉ của các node khác.


Kết luận

Chúc mừng bạn! Bạn đã cài đặt thành công một cụm MariaDB Galera Cluster. Hệ thống cơ sở dữ liệu của bạn giờ đây có khả năng chịu lỗi cao. Dữ liệu sẽ luôn an toàn và sẵn sàng. Hãy tiếp tục khám phá các tính năng nâng cao. Ví dụ như sử dụng Load Balancer để phân phối traffic. Điều này sẽ giúp tối ưu hóa hiệu suất cho toàn bộ hệ thống của bạn.

0 Bình luận