Cân bằng tải và cụm rất quan trọng trong môi trường sản xuất để đạt được tính khả dụng cao cho hệ thống cơ sở dữ liệu của bạn. MariaDB Galera Cluster cung cấp giải pháp cụm đa chủ và hỗ trợ các công cụ lưu trữ XtraDB/InnoDB. Cụm đa chủ cho phép đọc và ghi vào bất kỳ nút cụm nào. Nếu bạn sửa đổi dữ liệu trên bất kỳ nút nào, chúng sẽ được sao chép vào tất cả các nút khác. Cụm Galera cũng hỗ trợ môi trường đám mây và WAN để xây dựng cụm phân tán trên nhiều quốc gia và châu lục.
Trong bài đăng này, chúng tôi sẽ chỉ cách thiết lập cụm MariaDB Galera ba nút trên máy chủ Ubuntu 20.04.
Sau khi máy chủ của bạn được cập nhật, bạn có thể tiến hành bước tiếp theo.
Sau khi quá trình cài đặt hoàn tất, hãy khởi động dịch vụ MariaDB và cho phép chúng khởi động khi khởi động lại hệ thống:
Tiếp theo, bạn sẽ cần bảo mật cài đặt MariaDB và đặt mật khẩu gốc MariaDB trên mỗi nút. Bạn có thể thực hiện bằng lệnh sau:
Bạn sẽ được yêu cầu đặt mật khẩu gốc MariaDB như hiển thị bên dưới:
Sau khi máy chủ MariaDB của bạn được bảo mật, bạn có thể tiến hành bước tiếp theo.
Trên nút đầu tiên, hãy tạo tệp galera.cnf bằng lệnh sau:
Thêm các dòng sau:
Lưu và đóng tệp khi bạn hoàn tất.
Trên nút thứ hai, tạo tệp galera.cnf bằng lệnh sau:
Thêm nội dung sau dòng:
Lưu và đóng tệp khi bạn hoàn tất.
Trên nút thứ ba, tạo tệp galera.cnf bằng lệnh sau:
Thêm các dòng sau:
Lưu và đóng tệp khi bạn hoàn tất.
Tiếp theo, bạn sẽ cần dừng dịch vụ MariaDB trên tất cả các nút. Bạn có thể chạy lệnh sau để dừng dịch vụ MariaDB:
Trên nút đầu tiên, khởi tạo cụm MariaDB Galera bằng lệnh sau:
Bây giờ, hãy kiểm tra trạng thái của cụm bằng lệnh sau:
Bạn sẽ thấy đầu ra sau:
Trên nút thứ hai, hãy khởi động dịch vụ MariaDB bằng lệnh sau:
Tiếp theo, hãy kiểm tra trạng thái của cụm MariaDB Galera bằng lệnh sau:
Bạn sẽ thấy đầu ra sau:
Trên nút thứ ba, hãy khởi động dịch vụ MariaDB bằng lệnh sau:
Tiếp theo, hãy kiểm tra trạng thái của cụm MariaDB Galera bằng lệnh sau:
Bạn sẽ thấy đầu ra sau:
Tại thời điểm này, cụm MariaDB Galera đã được khởi tạo. Bây giờ bạn có thể tiến hành bước tiếp theo.
Trên nút đầu tiên, kết nối với MariaDB bằng lệnh sau:
Sau khi kết nối, hãy tạo một số cơ sở dữ liệu bằng lệnh sau:
Tiếp theo, thoát khỏi MariaDB bằng lệnh sau:
Tiếp theo, hãy đến nút thứ hai và đăng nhập vào MariaDB bằng lệnh sau:
Tiếp theo, hãy chạy lệnh sau để hiển thị tất cả các cơ sở dữ liệu:
Bạn sẽ thấy rằng cả hai cơ sở dữ liệu mà chúng ta đã tạo trên nút đầu tiên đều được sao chép trên nút thứ hai:
Tiếp theo, hãy đến nút thứ ba và đăng nhập vào MariaDB bằng lệnh sau:
Tiếp theo, hãy chạy lệnh sau để hiển thị tất cả các cơ sở dữ liệu:
Bạn sẽ thấy rằng cả hai cơ sở dữ liệu mà chúng ta đã tạo trên nút đầu tiên đều được sao chép trên nút thứ ba:
Trong bài đăng này, chúng tôi sẽ chỉ cách thiết lập cụm MariaDB Galera ba nút trên máy chủ Ubuntu 20.04.
Điều kiện tiên quyết
- Ba máy chủ chạy Ubuntu 20.04.
- Mật khẩu gốc được cấu hình trên máy chủ.
Bắt đầu
Trước khi bắt đầu, bạn sẽ cần cập nhật các gói hệ thống của mình lên phiên bản mới nhất. Bạn có thể cập nhật chúng bằng lệnh sau:
Mã:
apt-get update -y
Cài đặt MariaDB Server
Trước tiên, bạn sẽ cần cài đặt MariaDB server trên tất cả các nút. Bạn có thể cài đặt bằng cách chạy lệnh sau:
Mã:
apt-get install mariadb-server -y
Mã:
systemctl start mariadb
systemctl status mariadb
Mã:
mysql_secure_installation
Mã:
Nhập mật khẩu hiện tại cho root (nhập nếu không có):Chuyển sang xác thực unix_socket [C/N] nĐổi mật khẩu gốc? [C/N] YMật khẩu mới:Nhập lại mật khẩu mới:Xóa người dùng ẩn danh? [C/N] YKhông cho phép đăng nhập gốc từ xa? [C/N] YXóa cơ sở dữ liệu thử nghiệm và quyền truy cập vào cơ sở dữ liệu đó? [C/N] YTải lại bảng đặc quyền ngay bây giờ? [Y/n] Y
Cấu hình Galera Cluster
Tiếp theo, bạn sẽ cần tạo tệp cấu hình Galera trên mỗi nút để mỗi nút có thể giao tiếp với nhau.Trên nút đầu tiên, hãy tạo tệp galera.cnf bằng lệnh sau:
Mã:
nano /etc/mysql/conf.d/galera.cnf
Mã:
[mysqld]binlog_format=ROWdefault-storage-engine=innodbinnodb_autoinc_lock_mode=2bind-address=0.0.0.0# Cấu hình nhà cung cấp Galerawsrep_on=ONwsrep_provider=/usr/lib/galera/libgalera_smm.so# Cấu hình cụm Galerawsrep_cluster_name="galera_cluster"wsrep_cluster_address="gcomm://node1-ip-address,node2-ip-address,node3-ip-address"# Cấu hình đồng bộ hóa Galerawsrep_sst_method=rsync# Cấu hình nút Galerawsrep_node_address="node1-ip-address"wsrep_node_name="node1"
Trên nút thứ hai, tạo tệp galera.cnf bằng lệnh sau:
Mã:
nano /etc/mysql/conf.d/galera.cnf
Mã:
[mysqld]binlog_format=ROWdefault-storage-engine=innodbinnodb_autoinc_lock_mode=2bind-address=0.0.0.0# Cấu hình nhà cung cấp Galerawsrep_on=ONwsrep_provider=/usr/lib/galera/libgalera_smm.so# Cấu hình cụm Galerawsrep_cluster_name="galera_cluster"wsrep_cluster_address="gcomm://node1-ip-address,node2-ip-address,node3-ip-address"# Cấu hình đồng bộ hóa Galerawsrep_sst_method=rsync# Cấu hình nút Galerawsrep_node_address="node2-ip-address"wsrep_node_name="node2"
Trên nút thứ ba, tạo tệp galera.cnf bằng lệnh sau:
Mã:
nano /etc/mysql/conf.d/galera.cnf
Mã:
[mysqld]binlog_format=ROWdefault-storage-engine=innodbinnodb_autoinc_lock_mode=2bind-address=0.0.0.0# Cấu hình nhà cung cấp Galerawsrep_on=ONwsrep_provider=/usr/lib/galera/libgalera_smm.so# Cấu hình cụm Galerawsrep_cluster_name="galera_cluster"wsrep_cluster_address="gcomm://node1-ip-address,node2-ip-address,node3-ip-address"# Cấu hình đồng bộ hóa Galerawsrep_sst_method=rsync# Galera Node Cấu hìnhwsrep_node_address="node3-ip-address"wsrep_node_name="node3"
Khởi tạo cụm Galera
Tại thời điểm này, tất cả các nút được cấu hình để giao tiếp với nhau.Tiếp theo, bạn sẽ cần dừng dịch vụ MariaDB trên tất cả các nút. Bạn có thể chạy lệnh sau để dừng dịch vụ MariaDB:
Mã:
systemctl stop mariadb
Mã:
galera_new_cluster
Mã:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
Mã:
+--------------------+-------+| Tên_biến | Giá_trị |+--------------------+-------+| wsrep_cluster_size | 1 |+--------------------+-------+
Mã:
systemctl start mariadb
Mã:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
Mã:
+--------------------+-------+| Tên_biến | Giá_trị |+--------------------+-------+| wsrep_cluster_size | 2 |+------------------+-------+
Mã:
systemctl start mariadb
Mã:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
Mã:
+--------------------+-------+| Variable_name | Value |+--------------------+-------+| wsrep_cluster_size | 3 |+--------------------+-------+
Xác minh bản sao cụm
Tiếp theo, bạn sẽ cần xác minh xem bản sao có hoạt động hay không.Trên nút đầu tiên, kết nối với MariaDB bằng lệnh sau:
Mã:
mysql -u root -p
Mã:
MariaDB [(none)]> create database db1;
MariaDB [(none)]> create database db2;
Mã:
MariaDB [(none)]> exit;
Mã:
mysql -u root -p
Mã:
MariaDB [(none)]> show databases;
Mã:
+--------------------+| Database |+--------------------+| db1 || db2 || information_schema || mysql || performance_schema |+------------------+5 hàng trong tập hợp (0,001 giây)
Mã:
mysql -u root -p
Mã:
MariaDB [(none)]> show databases;
Mã:
+--------------------+| Cơ sở dữ liệu |+--------------------+| db1 || db2 || information_schema || mysql || performance_schema |+------------------+5 hàng trong tập hợp (0,001 giây)