MariaDB Advance: MariaDB Galera Cluster

MariaDB Galera là gì?

galera_small

MariaDB Galera là cụm máy chủ đồng bộ cho MariaDB. Nó chỉ khả dụng trên Linux và chỉ hỗ trợ các công cụ lưu trữ XtraDB / InnoDB.

Đặc trưng

  • Synchronous replication
  • Cấu trúc liên kết Active-active multi-master
  • Đọc và ghi vào bất kỳ node server
  • Kiểm soát các node tự động, các node lỗi sẽ được được gỡ khỏi cluster
  • Thêm node tự động
  • Nhân rộng song song, với  kiểu row level
  • Kết nối máy khách trực tiếp, giao diện MariaDB bản địa

Những lợi ích

Các tính năng trên mang lại một số lợi ích cho giải pháp phân cụm DBMS, bao gồm:

  • Không có độ trễ slave
  • Không có transactions bị mất
  • Đáp ứng cả 2 khẳng năng là mở rộng và read & write
  • Độ trễ client nhỏ hơn

Phiên bản Galera

Cụm MariaDB Galera được cung cấp bởi:

Trong MariaDB 10.1 trở lên, bản vá MySQL-wsrep đã được sáp nhập vào Máy chủ MariaDB. Điều này có nghĩa là có thể có được chức năng của MariaDB Galera Cluster bằng cách cài đặt các gói MariaDB Server tiêu chuẩn và gói thư viện của nhà cung cấp Galera wsrep . Phiên bản Galera sau tương ứng với từng phiên bản Máy chủ MariaDB:

Galera 4

Bảng sau liệt kê từng phiên bản của nhà cung cấp Galera 4 wsrep và bảng liệt kê phiên bản MariaDB nào được phát hành lần đầu tiên. Nếu bạn muốn cài đặt Galera 4 bằng yum , apt hoặc zypper , thì gói được gọi là galera-4 .

Phiên bản Galera Được phát hành trong phiên bản MariaDB
26.4.4 MariaDB 10.5.1
26.4.3 MariaDB 10.5.0 , MariaDB 10.4.9
26.4.2 MariaDB 10.4.4
26.4.1 MariaDB 10.4.3
26.4.0 MariaDB 10.4.2

Chú ý: Hướng dẫn này chỉ  thực hiện trên máy chủ MariaDB stable hiện tại là 10.4 và galera 4, do vậy các phiên bản MariaDB  cũ hơn sẽ có cách cài khác mà tôi sẽ không đề cập đến. Các hướng dẫn dưới đây sẽ rất ngắn gọn và chi tiết, vui lòng đọc kỹ để tránh  không khởi tạo được Galera.

Hướng dẫn này thực hiện trên cơ sở máy chủ như sau:

Tên IP Hệ điều hành Phiên bản MariaDB
node1 103.130.218.7 CentOS 7 MariaDB 10.4
node2 103.130.218.26 CentOS 7 MariaDB 10.4
node3 103.130.219.13 CentOS 7 MariaDB 10.4

Các port mạng cần mở trên cụm

  • Standard MariaDB Port (default: 3306) Dành cho các kết nối  MySQL client.
  • Galera Replication Port (default: 4567) Dành cho traffic truy cập replication Galera,  sử dụng cả truyền tải UDP và TCP trên cổng này.
  • IST Port (default: 4568) Dành cho chuyển trạng thái tăng dần.
  • SST Port (default: 4444) Dành cho tất cả các phương thức State Snapshot Transfer .

Cài đặt MariaDB Galera Cluster

Để sử dụng MariaDB Galera Cluster, có hai gói chính mà bạn cần cài đặt:

  1. Phiên bản MariaDB Server hỗ trợ Galera Cluster.
  2. Thư viện  Galera wsrep.

Cài đặt MariaDB, galera, rsync trên các máy chủ bằng lệnh sau(chú ý là tất cả máy chủ)

# Cài đặt yum repo
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | bash -s -- --mariadb-server-version="mariadb-10.4"

# cài đặt MariaDB và các gói cần thiết.
yum install MariaDB-server MariaDB-client galera-4 rsync lsof -y
# trong quá tình cài đặt  nhấn "y" để chấp nhận cài đặt các gói.

# cài đặt mysql_secure_installation trên node đầu tiên, các node khác không cần cài.
systemctl start mariadb
systemctl enable mariadb
mysql_secure_installation
systemctl stop mariadb

Sau khi cài đặt hoàn tất, bạn không khởi động và tiến hành thiết lập trong file my.cnf của các máy chủ như sau(chú ý thay đổi IP và tên node trong phần “Galera Node Configuration” tùy theo mỗi server):

[mariadb]

bind-address=0.0.0.0
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
query_cache_size=0


# Galera Provider Configuration
wsrep_on=ON
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so

# Galera Cluster Configuration
wsrep_cluster_name="mariadb_cluster"
wsrep_cluster_address= "gcomm://103.130.218.7,103.130.218.26,103.130.219.13"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address=103.130.218.7
wsrep_node_name=node1

 

Khởi động MariaDB Galera Cluster

Sau khi cấu hình hoàn tất như trên, chúng ta truy cập node1 và chạy lệnh sau để khởi động Galera (chú ý khởi động Galera trên node1 sẽ khởi động MariaDB nên không phải chạy lệnh để start MariaDB nữa).

galera_new_cluster

nếu chạy lệnh trên không nhận được kết quả trả về tức là đã khởi tạo galera thành công, ta có thể chạy lệnh sau để kiểm tra có bao nhiêu node đang tham gia trong galera.

MariaDB [(none)]> SHOW GLOBAL STATUS LIKE 'wsrep_cluster_size';
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 1     |
+--------------------+-------+
1 row in set (0.001 sec)

Như vậy là node1 đã hoạt động trong galera, tiếp đến ta truy cập node 2 và khởi động MariaDB, Galera sẽ tự include các node vào Galera.

[root@node2db ~]# systemctl start mariadb

Và tiếp tục khởi động MariaDB trên node3

[root@node3db ~]# systemctl start mariadb

Nếu không có lỗi gì thì node2 và node3 đã được thêm vào Galera, chúng ta kiểm tra lại thử nhé:

MariaDB [(none)]> SHOW GLOBAL STATUS LIKE 'wsrep_cluster_size';
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 3     |
+--------------------+-------+
1 row in set (0.001 sec)

Như vậy là Galera đã được cấu hình hoàn tất, ta kiểm tra hoạt động  đơn giản bằng cách tạo ra 1 database trên node1 và sau đó lần lượt kiểm tra trên node2 và node3 xem database mới tạo có được đồng bộ sang các node này hay không

Trên node1 khởi tạo database name là “test_galera”:

[root@node1db ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 21
Server version: 10.4.12-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database test_galera;
Query OK, 1 row affected (0.004 sec)

 

Trên node2 kiểm tra xem có database name “test_galera” hay không:

[root@node2db ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 14
Server version: 10.4.12-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test_galera        |
+--------------------+
4 rows in set (0.001 sec)

 

Trên node3 kiểm tra xem có database name “test_galera” hay không:

[root@node3db ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 13
Server version: 10.4.12-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test_galera        |
+--------------------+
4 rows in set (0.001 sec)

 

Như vậy là dữ liệu đã đồng bộ trên các node server. Cấu hình MariaDB galera cluster hoàn tất tại đây. Các vấn đề liên quan đến việc  cluster, mở rộng cluster sẽ được trình bày trong các bài sau.

Related Articles