MariaDB Galera là gì?
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:
- Máy chủ MariaDB.
- Bản vá MySQL-wsrep cho Máy chủ MySQL và Máy chủ MariaDB được phát triển bởi Codership . Bản vá hiện chỉ hỗ trợ các hệ điều hành giống Unix.
- Các Galera wsrep thư viện cung cấp .
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:
- Trong MariaDB 10.4 trở lên, MariaDB Galera Cluster sử dụng Galera 4. Điều này có nghĩa là bản vá MySQL-wsrep là phiên bản 26 và thư viện nhà cung cấp Galera wsrep là phiên bản 4.
- Trong MariaDB 10.3 trở về trước, MariaDB Galera Cluster sử dụng Galera 3. Điều này có nghĩa là bản vá MySQL-wsrep là phiên bản 25 và thư viện nhà cung cấp Galera wsrep là phiên bản 3.
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:
- Phiên bản MariaDB Server hỗ trợ Galera Cluster.
- 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.