MariaDB là hệ thống database mã nguồn mở tương thích với MySQL và Galera là giải pháp cho phép thiết lập multi-master cluster bằng cách sao chép đồng bộ dữ liệu. Để có thể cấu hình Galera Cluster với MariaDB trên CentOS 7. Cùng tìm hiểu bài viết dưới đây của Vietnix nhé.
Giới thiệu về Galera Cluster
Clustering (phân cụm) giúp tăng tính khả dụng cho database của bạn bằng cách phân phối các thay đổi về dữ liệu đến các server khác nhau. Mỗi khi xuất hiện một phiên bản bị lỗi, các phiên bản khác sẽ nhanh chóng thay thế để tiếp tục hỗ trợ.
Có hai cấu hình phổ biến cho cluster, đó là active-passive và active-active. Ở active-passive, các hành động ghi (write) đều được thực hiện trên active server và sau đó được sao chép sang một hoặc nhiều passive server khác, chỉ được tiếp quản trong trường hợp active server gặp sự cố. Một số active-passive cluster cũng cho phép hành động SELECT
trên passive nodes. Ở active-active, mọi node đều được read-write (đọc-ghi) và các thay đổi được thực hiện trên một node sẽ được sao chép sang tất cả các node khác.
MariaDB là một hệ thống relational database và là mã nguồn mở, hoàn toàn tương thích với MySQL RDBMS. Galera là một giải pháp database clustering (gộp nhóm cơ sở dữ liệu), bằng cách sao chép đồng bộ, cho phép bạn thiết lập các multi-master cluster. Galera tự động xử lý đồng bộ hóa dữ liệu trên các node khác nhau trong khi cho phép bạn gửi các truy vấn đọc và ghi đến bất kỳ nút nào trong cluster.
Trong bài hướng dẫn này, bạn sẽ cấu hình một active-active MariaDB Galera cluster. Đồng thời, cấu hình và kiểm tra ba server CentOS 7 sẽ hoạt động như các node trong cluster. Đây là cluster nhỏ nhất có thể cấu hình được.
Yêu cầu để cấu hình Galera Cluster với MariaDB trên CentOS 7
Để thực hiện bài hướng dẫn này, bạn cần có tài khoản đăng nhập của nhà cung cấp máy chủ mà bạn đăng ký, ngoài ra bạn cũng cần:
- Ba server CentOS 7 được kích hoạt với private networking, mỗi server sẽ có một tài khoản non-root với quyền
sudo
và tường lửa.
Trường hợp bạn muốn cấu hình Galera Cluster với MariaDB trên VPS thì VPS của bạn cần phải đáp ứng những tiêu chí như: Đủ tài nguyên phần cứng để chạy MariaDB và Galera Cluster một cách ổn định. Điều này bao gồm dung lượng đĩa, bộ nhớ RAM và CPU. Số lượng và cấu hình tài nguyên phụ thuộc vào khối lượng công việc dự kiến và lưu lượng truy cập vào cơ sở dữ liệu.
Hiện tại Vietnix đang cung cấp nhiều gói VPS chất lượng với đa dạng hệ điều hành, dễ dàng mở rộng tài nguyên theo nhu cầu, bảo mật cao nhờ hạ tầng chống DDoS chuyên nghiệp do chính Vietnix phát triển, giá cả phải chăng,… Ngoài ra, nếu bạn không có nhiều kiến thức về kỹ thuật thì cũng không cần lo lắng. Khi mua VPS tại Vietnix, đội ngũ kỹ thuật viên chuyên nghiệp sẽ luôn sẵn sàng hỗ trợ bạn các vấn đề liên quan đến hệ thống 24/7.
Hiện tại Vietnix đang cung cấp các gói VPS phù hợp cho nhu cầu cấu hình Galera Cluster với MariaDB gồm: VPS Giá Rẻ, Cloud Server, VPS Cao Cấp, VPS GPU và VPS NVMe.
Liên hệ Vietnix ngay để được tư vấn chi tiết hơn nhé!
Bước 1 – Thêm MariaDB Repositories vào tất cả server
Đầu tiên, bạn thêm các gói MariaDB repositories tương ứng vào từng server trong 3 server của mình để có thể cài đặt đúng phiên bản MariaDB được sử dụng trong bài hướng dẫn này. Khi các repositories được cập nhật trên cả 3 server, bạn thực hiện cài đặt MariaDB.
MariaDB được xem như một sự thay thế cho MySQL, do đó trong nhiều tệp cấu hình và startup scripts, bạn sẽ thấy mysql
thay vì mariadb
. Trong nhiều trường hợp, chúng có thể thay thế cho nhau. Để đảm bảo tính nhất quán bạn nên sử dụng mariadb
thay cho mysql
.
Tại hướng dẫn này sử dụng MariaDB 10.4, vì phiên bản này không có trong repositories mặc định của CentOS, do đó bạn sẽ thực hiện thêm CentOS repositories từ bên ngoài vào cả ba server của mình, được duy trì bởi MariaDB project.
Đầu tiên, bạn thêm khóa (key) của MariaDB repository bằng cách tạo tệp repository bằng trình soạn thảo văn bản và dùng vi
để thực thi:
sudo vi /etc/yum.repos.d/mariadb.repo
Tiếp theo, để vào chế độ insert của tệp hãy nhấn i
và thêm đoạn code sau:
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
Nhấn phím esc
để thoát chế độ chỉnh sửa, sau đó gõ :wq
để lưu và thoát tệp.
Sau khi tạo tệp repository, bạn hãy khởi động bằng cách thực thi lệnh sau:
sudo yum makecache --disablerepo='*' --enablerepo='mariadb'
Để có thể cài đặt MariaDB, lệnh makecache
được sử dụng để lưu trữ metadata của repository, với --disablerepo
và --enablerepo
nhằm chỉ định lưu vào tệp mariadb
mà bạn vừa tạo .
Output sẽ xuất hiện như sau:
Output
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
mariadb | 2.9 kB 00:00:00
(1/3): mariadb/primary_db | 43 kB 00:00:00
(2/3): mariadb/other_db | 8.3 kB 00:00:00
(3/3): mariadb/filelists_db | 238 kB 00:00:00
Metadata Cache Created
Sau khi bạn đã kích hoạt thành công repository trên server đầu tiên của mình, hãy thực hiện tương tự cho hai server còn lại.
Khi hoàn tất việc thêm gói repository trên cả ba server của mình, tiếp theo là cài đặt MariaDB ở bước tiếp theo.
Xem thêm: Hướng dẫn cài đặt MongoDB trên CentOS 7
Bước 2 – Cài đặt MariaDB trên tất cả các server
Ở bước này, bạn sẽ cài đặt các gói actual MariaDB trên cả ba server.
Bắt đầu với phiên bản 10.1
, cả hai gói MariaDB Server và MariaDB Galera Server được kết hợp với nhau, do đó khi bạn cài đặt MariaDB-server
, thì Galera và một số dependency sẽ được tự động cài đặt cùng lúc:
sudo yum install MariaDB-server MariaDB-client
Khi có thông báo xác nhập có tiếp tục cài đặt hay không bạn nhập yes
. Sau đó, bạn tiếp tục nhập yes
một lần nữa để chấp nhận GPG key xác thực gói MariaDB.
Sau khi hoàn thành các thao tác trên, bạn khởi động mariadb
bằng cách thực thi câu lệnh:
sudo systemctl start mariadb
Để mariadb
tự khởi động mỗi khi boot, thực hiện lệnh sau:
sudo systemctl enable mariadb
Từ MariaDB phiên bản 10.4
trở đi, mặc định, người dùng root MariaDB sẽ không có mật khẩu. Vì vậy bạn có thể đặt mật khẩu cho người dùng root, sau đó đăng nhập vào MariaDB:
sudo mysql -uroot
Khi bạn đã vào MariaDB shell, hãy đổi mật khẩu bằng cách thực thi câu lệnh sau, thay thế your_password
bằng mật khẩu mới của bạn:
set password = password("your_password");
Khi nhận được output như sau thì bạn đã thay đổi mật khẩu thành công:
Output
Query OK, 0 rows affected (0.001 sec)
Thực thi lệnh dưới đây để thoát khỏi MariaDB shell:
quit;
Bây giờ, bạn đã sẵn sàng để có thể cấu hình cluster. Tuy nhiên, bạn cần dựa vào rsync và policycoreutils-python ở các bước sau để đồng bộ hóa các server và kiểm soát Security-Enhanced Linux (SELinux). Vì vậy, hãy cài đặt rsync
và policycoreutils-python
, nếu bạn chưa cài đặt:
sudo yum install rsync policycoreutils-python
Câu lệnh trên xác nhận các phiên bản mới nhất của rsync
và policycoreutils-python
đã được cài đặt. Có thể là thông báo bạn upgrade hoặc cài đặt chúng.
Sau khi hoàn thành các thao tác trên, bạn thực hiện tương tự cho server còn lại.
Đến đây, bạn đã cài đặt thành công MariaDB ở mỗi server.
Bước 3 – Cấu hình Node đầu tiên
Ở bước này, bạn sẽ cấu hình Galera node đầu tiên. Cấu hình của mỗi node trong cluster cần phải gần như giống nhau. Do đó, cần thực hiện tất cả các cấu hình trên server đầu tiên, sau đó sao chép sang các server còn lại.
Mặc định, MariaDB được cấu hình để kiểm tra thư mục /etc/mysql/conf.d
để lấy các thiết lập cấu hình bổ sung từ các tệp .cnf
. Tạo một tệp trong thư mục này với tất cả cluster-specific directives (các lệnh cụ thể cho cluster ):
sudo vi /etc/my.cnf.d/galera.cnf
Thêm đoạn code sau vào tệp vừa tạo. Cấu hình này chỉ định các cài đặt cluster khác nhau, chi tiết về máy chủ hiện tại và các máy chủ khác có trong cluster, và các thiết lập liên quan đến sao chép.
Lưu ý các địa chỉ IP trong cấu hình là địa chỉ private của các server tương ứng. Bạn thay thế First_Node_IP, Second_Node_IP, Third_Node_IP, This_Node_IP, This_Node_Name bằng các địa chỉ IP tương ứng ở trên server của bạn:
[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
# Galera Provider Configuration
wsrep_on=ON
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so
# Galera Cluster Configuration
wsrep_cluster_name="test_cluster"
wsrep_cluster_address="gcomm://First_Node_IP,Second_Node_IP,Third_Node_IP"
# Galera Synchronization Configuration
wsrep_sst_method=rsync
# Galera Node Configuration
wsrep_node_address="This_Node_IP"
wsrep_node_name="This_Node_Name"
- Ở 5 dòng đầu tiên, sửa đổi hoặc xác nhận lại các cài đặt MariaDB / MySQL sẽ cho phép cluster hoạt động chính xác. Ví dụ: Galera sẽ không hoạt động với MyISAM hoặc các engine lưu trữ non-transactional và
mysqld
không được ràng buộc với địa chỉ IP cholocalhost
. - Phần ” Galera Provider Configuration ” cấu hình MariaDB components để cung cấp API sao chép WriteSet. Trong trường hợp này, API là Galera, vì Galera là nơi cung cấp wsrep (WriteSet Replication). Bạn sẽ chỉ định các tham số để cấu hình môi trường replication ban đầu.
- Ở phần ” Galera Cluster Configuration ” sẽ xác định cluster, cluster members theo địa chỉ IP hoặc resolved domain name (tên miền đã được chuyển đổi thành địa chỉ IP tương ứng của server) và đặt tên cho cluster để các member tham gia đúng nhóm. Bạn có thể đặt
wsrep_cluster_name
theo mong muốn của bạn, tuy nhiên đốiwsrep_cluster_address
, bạn phải sửa đổi thành địa chỉ private IP của ba server. - Tiếp theo ở mục “Galera Synchronization Configuration“, sẽ xác định cách để cluster giao tiếp và đồng bộ hóa dữ liệu giữa các member. Phần này sẽ được sử dụng trong trường hợp một node bị mất kết nối, thì quá trình state transfer sẽ thực thi, để khi node kết nối trở lại sẽ đảm bảo tính toàn vẹn của cluster. Hiện tại bạn đang sử dụng
rsync
, vì độ phổ biến và đủ để đáp ứng nhu cầu của người dùng. - Cuối cùng là phần “Galera Node Configuration” xác định địa chỉ IP và tên của server hiện tại. Phần này giúp dự đoán các sự cố có thể xảy ra trong logs và tham chiếu đến từng máy chủ theo nhiều cách khác nhau.
wsrep_node_address
phải khớp với địa chỉ của server mà bạn đang sử dụng, tuy nhiên ở wsrep_node_name thì bạn có thể đặt tên theo mong muốn của bạn để có thể dễ dàng xác định node trong log files.
Sau khi đã hoàn tất việc cài đặt ở tệp cấu hình cluster, bạn sao chép nội dung vào clipboard (bộ nhớ tạm), sau đó lưu và đóng tệp.
Bây giờ bạn đã cấu hình thành công node đầu tiên, kế đến, bạn hãy cấu hình các node còn lại ở bước tiếp theo.
Bước 4 – Cấu hình các Node còn lại
Để tiếp tục, bạn sẽ cấu hình hai node còn lại. Ở node thứ hai của bạn, hãy mở tệp cấu hình như sau:
sudo vi /etc/mysql/my.cnf.d/galera.cnf
Dán cấu hình mà bạn đã sao chép từ node đầu tiên, sau đó cập nhật Galera Node Configuration
để sử dụng địa chỉ IP hoặc resolvable domain name cho node mà bạn đang thiết lập. Cuối cùng, cập nhật tên của node, và bạn có thể đặt tên theo mong muốn của mình để có thể dễ dàng xác định node trong log file:
. . .
# Galera Node Configuration
wsrep_node_address="This_Node_IP"
wsrep_node_name="This_Node_Name"
. . .
Sau đó hãy lưu và thoát tệp.
Khi bạn đã hoàn thành các thao tác này, hãy thực hiện tương tự cho node thứ ba.
Sau khi Galera được cấu hình trên tất cả các node, mọi thứ gần như đã sẵn sàng để sử dụng cluster. Tuy nhiên, bạn phải đảm bảo tường lửa đã mở các port phù hợp và cũng cần phải tạo SELinux Policy cho Galera để đảm bảo tính bảo mật của hệ thống.
Bước 5 – Bật tường lửa ở các server
Trong bước này, bạn sẽ cấu hình tường lửa để mở các port cần thiết cho phép các node có thể giao tiếp với nhau.
Ở mỗi server, để kiểm tra trạng thái của tường lửa bạn mà bạn đã thiết lập trong phần Yêu cầu như sau:
sudo firewall-cmd --list-all
Trong trường hợp này, chỉ lưu lượng SSH, DHCP, HTTP và HTTPS được phép truy cập:
Output
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh dhcpv6-client http https
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Lúc này nếu bạn cố gắng khởi động cluster, sẽ dẫn đến thất bại vì tường lửa chặn các kết nối giữa các node. Vì vậy để tránh trường hợp này, bạn hãy thêm các rule để lưu lượng truy cập MariaDB và Galera được thông qua.
Galera có thể sử dụng bốn port sau:
- Port
3306
sử dụng phương phápmysqldump
đối với MariaDB client connections and State Snapshot Transfer. - Port
4567
được sử dụng cho lưu lượng sao chép Galera Cluster. Để sao chép dữ liệu giữa các nút, port này sẽ dùng cả UDP và TCP. - Port
4568
sử dụng cho Incremental State Transfers, hoặc IST, quá trình này cho phép các node khác trong cụm gửi các phần dữ liệu bị thiếu cho node đang bị mất kết nối - Port
4444
sử dụng cho tất cả State Snapshot Transfers, hoặc SST, là cơ chế mà sử sụng các joiner node (các node mới tham gia vào cluster) để nhận trạng thái và dữ liệu từ một donor node (một node khác trong cluster).
Ở ví dụ này, bạn sẽ mở cả bốn port khi thiết lập. Tuy nhiên, sau khi xác nhận được rằng quá trình sao chép đang hoạt động tốt, bạn nên đóng các port không cần thiết và hạn chế lưu lượng truy cập cho phép giữa các server trong cluster.
Bạn sẽ mở các port bằng các lệnh như sau:
sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp
sudo firewall-cmd --permanent --zone=public --add-port=4567/tcp
sudo firewall-cmd --permanent --zone=public --add-port=4568/tcp
sudo firewall-cmd --permanent --zone=public --add-port=4444/tcp
sudo firewall-cmd --permanent --zone=public --add-port=4567/udp
Ở đây, bạn sẽ sử dụng --zone = public
và --add-port =
, lệnh firewall-cmd
đang mở các port này cho public traffic. --permanent
đảm bảo rằng các luật này sẽ được lưu trữ và tồn tại ngay cả khi hệ thống khởi động lại.
Lưu ý: Bạn có thể hạn chế truy cập ngay lập tức vào các port được mở, tùy thuộc vào các dịch vụ khác đang chạy trên server của bạn.
Bây giờ, hãy thêm từng server vào public
bằng cách thực thi các lệnh sau, đồng thời thay thế galera-node-1-ip, galera-node-2-ip, galera-node-3-ip bằng địa chỉ private IP tương ứng của các node:
sudo firewall-cmd --permanent --zone=public --add-source=galera-node-1-ip/32
sudo firewall-cmd --permanent --zone=public --add-source=galera-node-2-ip/32
sudo firewall-cmd --permanent --zone=public --add-source=galera-node-3-ip/32
Tiếp theo, bạn hãy reload lại tường lửa để áp dụng các thay đổi:
sudo firewall-cmd --reload
Sau khi bạn đã cấu hình tường lửa của mình trên node đầu tiên, hãy thực hiện tương tự với node thứ hai và ba.
Đến đây, bạn đã cấu hình tường lửa thành công, tiếp theo là tạo SELinux policy.
Bước 6 – Tạo SELinux Policy
Đến đây bạn cần tạo SELinux Policy cho phép tất cả các node trong cluster có thể giao tiếp với nhau và thực hiện các hoạt động của chúng.
SELinux là một Linux kernel module được sử dụng để cải thiện tính bảo mật của các hệ điều hành thông qua việc hỗ trợ kiểm soát truy cập và các chính sách kiểm soát truy cập bắt buộc. Trên CentOS SELinux được kích hoạt theo mặc định và giới hạn các hoạt động của MariaDB daemon .
Để tạo SELinux Policy bạn cần thực hiện các hoạt động khác nhau trên cluster với chế độ SELinux được thiết lập là permissive (cho phép) cho MySQL. Sau đó, bạn sẽ tạo policy từ các event đã đăng nhập và cuối cùng thiết lập chế độ SELinux thành enforcing sau khi chính sách được cài đặt thành công.
Đầu tiên, để cho phép truy cập vào các port cần sử dụng bằng cách thực thi các lệnh sau trên cả ba server:
sudo semanage port -a -t mysqld_port_t -p tcp 4567
sudo semanage port -a -t mysqld_port_t -p udp 4567
sudo semanage port -a -t mysqld_port_t -p tcp 4568
sudo semanage port -a -t mysqld_port_t -p tcp 4444
Lưu ý: Bạn có thể nhận được ValueError
khi cho phép truy cập vào các port trên. Việc này có nghĩa là trạng thái SELinux của port đó đã được cài đặt, tuy nhiên sẽ không ảnh hưởng đến tiến trình của bài hướng dẫn.
Ở các lệnh trên, bạn sử dụng semanage
cùng với -a
để thêm các port được chỉ định và bỏ qua database server.
Tiếp theo, thực thi lệnh sau trên cả ba server, tạm thời đặt MySQL SELinux domain ở chế độ permissive.
sudo semanage permissive -a mysqld_t
Lệnh này có thể mất một vài phút để hoàn tất và sẽ không hiển thị output.
Tiếp theo, bạn ngắt kết nối database server trên tất cả các node để bạn có thể bootstrap (khởi động) database cluster với các SELinux policy được chia sẻ. Bạn hãy sử dụng lệnh sau để ngắt kết nối trên cả ba node:
sudo systemctl stop mariadb
Bây giờ, bạn hãy bootstrap cluster để tạo các event giao tiếp giữa các inter-node mà được thêm vào SELinux Policy. Tại node đầu tiên, bootstrap cluster bằng cách thực thi lệnh như sau:
sudo galera_new_cluster
Tiến hành tạo database và bảng để lưu trữ các SST event bằng cách chạy như sau trên node đầu tiên:
mysql -u root -p -e 'CREATE DATABASE selinux;
CREATE TABLE selinux.selinux_policy (id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id));
INSERT INTO selinux.selinux_policy VALUES ();'
Khởi động server trên node thứ hai:
sudo systemctl start mariadb
Sau đó thực hiện tương tự ở node thứ ba:
sudo systemctl start mariadb
Sẽ không có bất kỳ output nào cho câu lệnh trên. Tiếp thep, để tạo IST event bạn thực hiện như sau trên cả ba server:
mysql -u root -p -e 'INSERT INTO selinux.selinux_policy VALUES ();'
Bạn sẽ thực thi các lệnh sau trên cả ba máy chủ để tạo và kích hoạt SELinux policy:
sudo grep mysql /var/log/audit/audit.log | sudo audit2allow -M Galera
Lệnh đầu tiên sẽ tìm kiếm các events được tạo trong audit.log
và dẫn đến module có tên là Galera.pp
được tạo bởi công cụ audit2allow
. Bạn nhận output như sau:
Output
******************** IMPORTANT ***********************
To make this policy package active, execute:
semodule -i Galera.pp
Tiếp theo, bạn thực thi lệnh được hiển thị trong phần output để cài đặt module:
sudo semodule -i Galera.pp
Bây giờ, policy đang hoạt động, hãy tắt chế độ permissive ở MariaDB server bằng cách:
sudo semanage permissive -d mysqld_t
Bạn đã tạo và kích hoạt thành công SELinux Policy.
Xem thêm: Hướng dẫn cách Disable SELinux trên CentOS 7
Bước 7 – Khởi động cluster
Ở bước này, bạn khởi động MariaDB cluster. Để bắt đầu, bạn cần dừng MariaDB service đang chạy để có thể khởi động cluster trực tuyến.
Dừng MariaDB trên cả ba server
Sau khi dừng MariaDB service, việc thực hiện hành động này trên các máy chủ của bạn theo một trình tự cụ thể rất quan trọng. Trình tự shutdown này sẽ đảm bảo node đầu tiên sẽ bootstrap cluster một cách an toàn mỗi khi được khởi động.
Đầu tiên, bạn hãy chạy lệnh sau trên node thứ ba:
sudo systemctl stop mariadb
Tiếp theo, dừng service đang chạy trên node thứ hai:
sudo systemctl stop mariadb
Cuối cùng, bạn sẽ dừng service trên node đầu tiên:
sudo systemctl stop mariadb
systemctl
sẽ không hiển thị kết quả cho các lần thực thi lệnh trên, vì vậy để kiểm tra xem đã thực hiện thành công hay chưa, bạn có thể sử dụng lệnh sau trên mỗi server của mình:
sudo systemctl status mariadb
Dòng cuối cùng trong output sẽ được hiển thị như sau:
Output
. . .
Apr 26 03:34:23 galera-node-01 systemd[1]: Stopped MariaDB 10.4.4 database server.
Sau khi bạn đã tắt mariadb
trên tất cả các server.
Kích hoạt node đầu tiên
Để kích hoạt node đầu tiên, bạn sẽ cần sử dụng một startup script đặc biệt. Cách bạn cấu hình cluster, để nhận được trạng thái ban đầu , mỗi node trực tuyến sẽ cố gắng kết nối ít nhất với một node khác được chỉ định trong tệp galera.cnf
. Nếu không sử dụng galera_new_cluster
script cho phép systemd truyền tham số --wsrep-new-cluster
, systemctl start mariadb
thông thường sẽ thất bại vì không có node nào đang chạy cho node đầu tiên kết nối.
sudo galera_new_cluster
Lệnh này sẽ không hiển thị output khi thực thi thành công. Sau khi hoàn tất, node này sẽ được đăng ký là một phần của cluster và bạn sẽ sử dụng lệnh sau để xem thông tin về node vừa đăng ký:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
Output sẽ xuất hiện như sau:
Output
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 1 |
+--------------------+-------+
Trên các node còn lại, bạn có thể bắt đầu mariadb
. Khi được khởi động, các node này sẽ tìm kiếm member có trong danh sách cluster đang trực tuyến để kết nối và trở thành member của cluster.
Kích hoạt node thứ hai
Bây giờ bạn có thể kích hoạt node thứ hai bằng cách sử dụng mariadb
:
sudo systemctl start mariadb
Bạn sẽ không nhận được output cho lệnh trên, tuy nhiên bạn sẽ thấy kích thước cluster sẽ tăng lên mỗi khi có node trở thành member của cluster, bằng cách sử dụng lệnh sau:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
Dựa vào output trên, bạn có thể thấy node thứ hai được tham gia vào cluster và hiện có tổng cộng hai node.
Output
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 2 |
+--------------------+-------+
Kích hoạt node thứ ba
Cuối cùng, bạn sẽ kích hoạt node thứ ba, một cách tương tự, bạn sẽ dùng mariadb
:
sudo systemctl start mariadb
Thực thi lệnh sau để tìm kích thước của cluster:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
Bạn sẽ nhận được output như sau, cho biết rằng node thứ ba đã tham gia vào cluster và đã có tổng cộng ba node.
Output
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 3 |
+--------------------+-------+
Lúc này, toàn bộ cluster đang trực tuyến và giao tiếp thành công. Trong bước tiếp theo, bạn có thể đảm bảo các cài đặt đã đi vào hoạt động bằng cách kiểm tra quá trình sao chép.
Bước 8 – Kiểm thử quá trình sao chép
Đến đây, bạn đã thực hiện các bước cài đặt để cluster của mình có thể sao chép từ bất kỳ node nào sang node khác, được gọi là active-active replication. Bạn hãy kiểm tra xem liệu quá trình sao chép này có hoạt động như mong đợi hay không.
Thực hiện hành động ghi vào node đầu tiên
Bạn sẽ bắt đầu bằng cách thực hiện các thay đổi trên database ở node đầu tiên. Các lệnh sau sẽ tạo ra database, có tên gọi là playground
và tạo một bảng bên có tên là equipment
.
mysql -u root -p -e 'CREATE DATABASE playground;
CREATE TABLE playground.equipment ( id INT NOT NULL AUTO_INCREMENT, type VARCHAR(50), quant INT, color VARCHAR(25), PRIMARY KEY(id));
INSERT INTO playground.equipment (type, quant, color) VALUES ("slide", 2, "blue");'
Ở câu lệnh trước, CREATE DATABASE
tạo ra một database có tên là playground
. Câu lệnh CREATE
tạo bảng equipment
trong database playground
, có cột tên là id
được khai báo với AUTO_INCREMENT
và các cột khác. Cột type
, quant
và color
được khai báo để lưu trữ loại, số lượng và màu sắc của thiết bị tương ứng. Lệnh INSERT
sẽ chèn dữ liệu vào bảng này với giá trị tương ứng là slide
, số lượng là 2
và màu sắc là blue
.
Bây giờ bạn đã thêm được 1 dòng dữ liệu trong bảng vừa tạo.
Thực hiện hành động đọc và ghi vào node thứ hai
Tiếp theo, hãy xác minh quá trình sao chép đang hoạt động ở node thứ hai, bạn có thể sử dụng lệnh sau:
mysql -u root -p -e 'SELECT * FROM playground.equipment;'
Nếu quá trình này đang hoạt động, dữ liệu mà bạn đã thêm ở node đầu tiên sẽ hiển thị trong output:
Output
+----+-------+-------+-------+
| id | type | quant | color |
+----+-------+-------+-------+
| 1 | slide | 2 | blue |
+----+-------+-------+-------+
Từ node này, bạn có thể ghi dữ liệu vào cluster:
mysql -u root -p -e 'INSERT INTO playground.equipment (type, quant, color) VALUES ("swing", 10, "yellow");'
Thực hiện hành động đọc và ghi trên node thứ ba
Từ node thứ ba, bạn có thể đọc tất cả dữ liệu bằng cách thực hiện câu truy vấn trên bảng như sau:
mysql -u root -p -e 'SELECT * FROM playground.equipment;'
Output sẽ được hiển thị như sau:
Output
+----+-------+-------+--------+
| id | type | quant | color |
+----+-------+-------+--------+
| 1 | slide | 2 | blue |
| 2 | swing | 10 | yellow |
+----+-------+-------+--------+
Tại node thứ ba này, bạn cũng có thể thêm một dữ liệu khác:
mysql -u root -p -e 'INSERT INTO playground.equipment (type, quant, color) VALUES ("seesaw", 3, "green");'
Thực hiện hành động đọc trên node đầu tiên
Quay trở lại node đầu tiên, bạn có thể xác minh việc dữ liệu của bạn sẽ có sẵn ở mọi node:
mysql -u root -p -e 'SELECT * FROM playground.equipment;'
Bạn sẽ nhận được output như sau:
Output
+----+--------+-------+--------+
| id | type | quant | color |
+----+--------+-------+--------+
| 1 | slide | 2 | blue |
| 2 | swing | 10 | yellow |
| 3 | seesaw | 3 | green |
+----+--------+-------+--------+
Đến đây, bạn đã xác minh thành công việc bạn có thể thực hiện thao tác ghi vào tất cả các node và quá trình sao chép đã thực hiện một cách chính xác.
Với 11 năm hoạt động Vietnix hỗ trợ cho hơn 50.000 khách hàng cá nhân và doanh nghiệp phát triển kinh doanh trên internet. Vietnix luôn chú trọng đầu tư vào hạ tầng và nhân sự chất lượng nhằm mang đến cho khách hàng một dịch vụ ổn định nhất. Tính đến thời điểm hiện tại Vietnix tự hào vì đã đạt được những con số ấn tượng như sau:
- 50.000 khách hàng.
- 97% khách hàng đánh giá 5* và giới thiệu dịch vụ sau khi sử dụng.
- 89% khách hàng duy trì dịch vụ đến thời điểm hiện tại.
- 100.000 dịch vụ được kích hoạt.
- Thương hiệu Việt Nam xuất sắc 2022.
Nhanh tay đăng ký Vietnix VPS ngay và trải nghiệm dịch vụ ổn định, tốc độ cao, hỗ trợ nhanh chóng với nhiều ưu đãi hấp dẫn nhất.
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
- Hotline: 1800 1093.
- Email: sales@vietnix.com.vn
Lời kết
Hiện tại qua hướng dẫn về cấu hình Galera Cluster với MariaDB trên CentOS 7, bạn đã cấu hình thành công Galera test cluster với ba node đang hoạt động. Nếu bạn có dự định sử dụng Galera cluster trong production, thì bạn nên thử với ít nhất năm node.t Trong quá trình thao tác nếu còn gì thắc mắc bạn có thể liên hệ Vietnix để được tư vấn nhé.