Cách cài đặt MariaDB Galera Cluster trên Ubuntu 16.04

theanh

Administrator
Nhân viên
MariaDB Galera là cụm đa chủ cho MariaDB. Kể từ MariaDB 10.1, các gói MariaDB Server và MariaDB Galera Server đã được kết hợp và các gói Galera cùng các gói phụ thuộc của chúng được tự động cài đặt khi cài đặt MariaDB. Hiện tại, MariaDB Galera Cluster chỉ hỗ trợ công cụ lưu trữ InnoDB/XtraDB. Trong MariaDB 10.0 và 5.5, bạn sẽ cần tải xuống riêng. MariaDB Galera bổ sung tính dự phòng cho cơ sở dữ liệu của trang web. Trong MariaDB Galera Cluster, nhiều máy chủ cơ sở dữ liệu được kết nối với nhau và đồng bộ hóa.

MariaDB Galera cung cấp nhiều tính năng, một số tính năng được liệt kê dưới đây:
  1. Sao chép đồng bộ.
  2. Tự động kết nối các nút.
  3. Cấu trúc đa chủ chủ hoạt động-hoạt động.
  4. Sao chép song song thực sự, ở cấp độ hàng.
  5. Khả năng mở rộng đọc và ghi, Độ trễ của máy khách nhỏ hơn.
  6. Các nút bị lỗi, tự động xóa khỏi cụm.
Trong hướng dẫn này, chúng tôi sẽ giải thích cách thiết lập MariaDB Galera Cluster 10.1 với 3 nút chạy trên máy chủ Ubuntu 16.04. Chúng tôi cũng sẽ kiểm tra việc sao chép cơ sở dữ liệu giữa tất cả các nút.

Yêu cầu​

  • Ba nút chạy máy chủ Ubuntu 16.04.
  • Node1 có địa chỉ IP tĩnh 192.168.0.102, Node2 có địa chỉ IP tĩnh 192.168.0.103 và Node3 có địa chỉ IP tĩnh 192.168.0.104 cấu hình trên máy chủ của bạn.
  • Người dùng không phải root có quyền sudo được thiết lập trên tất cả các nút.

Bắt đầu​

Trước tiên, bạn sẽ cần cập nhật tất cả các nút bằng phiên bản mới nhất. Bạn có thể cập nhật tất cả chúng bằng lệnh sau:
Mã:
sudo apt-get update -y
sudo apt-get upgrade -y
Tiếp theo, khởi động lại tất cả các nút để áp dụng những thay đổi này. Sau đó, đăng nhập bằng người dùng sudo và tiến hành bước tiếp theo.

Cài đặt MariaDB Galera​

Các gói MariaDB Server và MariaDB Galera Server được kết hợp trong phiên bản MariaDB 10.1. Theo mặc định, MariaDB 10.1 không có trong kho lưu trữ Ubuntu mặc định, vì vậy bạn sẽ cần thêm kho lưu trữ MariaDB vào tất cả các nút.

Đầu tiên, thêm khóa kho lưu trữ MariaDB bằng lệnh sau:
Mã:
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
Tiếp theo, thêm kho lưu trữ và cập nhật bộ đệm APT bằng lệnh sau:
Mã:
sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://ftp.utexas.edu/mariadb/repo/10.1/ubuntu xenial main'
sudo apt-get update -y
Sau khi kho lưu trữ được cập nhật, hãy cài đặt MariaDB bằng lệnh sau:
Mã:
sudo apt-get install mariadb-server rsync -y
Lệnh trên sẽ cài đặt MariaDB với Galera và một số phụ thuộc. Các phần Galera vẫn ở trạng thái ngủ cho đến khi được cấu hình, giống như plugin hoặc công cụ lưu trữ. Sau khi MariaDB được cài đặt trên tất cả các nút, bạn có thể tiến hành bảo mật MariaDB.

Theo mặc định, quá trình cài đặt MariaDB không được bảo mật, vì vậy bạn sẽ cần bảo mật cài đặt MariaDB. Bạn có thể thực hiện việc này bằng cách chạy tập lệnh mysql_secure_installation:
Mã:
sudo mysql_secure_installation
Trong quá trình này, bạn sẽ được yêu cầu đặt mật khẩu gốc, xóa người dùng ẩn danh, không cho phép đăng nhập gốc từ xa và xóa cơ sở dữ liệu thử nghiệm. Trả lời tất cả các câu hỏi như được hiển thị bên dưới:
Mã:
Nhập mật khẩu hiện tại cho gốc (nhập nếu không):Đổi mật khẩu gốc? [Y/n] nXóa người dùng ẩn danh? [Y/n] YKhông cho phép đăng nhập gốc từ xa? [Y/n] YXóa cơ sở dữ liệu thử nghiệm và quyền truy cập vào cơ sở dữ liệu đó? [Y/n] YTải lại bảng đặc quyền ngay bây giờ? [Y/n] Y
Sau khi MariaDB được bảo mật trên tất cả các nút, bạn có thể tiến hành bước tiếp theo.

Thiết lập MariaDB Cluster trên Node1​

Trước tiên, hãy đến Node1 và tạo tệp cấu hình cho Galera. Theo mặc định, MariaDB đọc cấu hình từ thư mục /etc/mysql/conf.d/. Để thực hiện, hãy chạy lệnh sau:
Mã:
sudo nano /etc/mysql/conf.d/galera.cnf
Thêm các dòng sau:
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://192.168.0.102,192.168.0.103,192.168.0.104"# Đồng bộ hóa Galera Cấu hìnhwsrep_sst_method=rsync# Cấu hình Galera Nodewsrep_node_address="192.168.0.102"wsrep_node_name="Node1"
Lưu tệp khi bạn hoàn tất.

Lưu ý: 192.168.0.102 là địa chỉ IP của Node1

Thêm Node2 vào Galera Cluster​

Tiếp theo, hãy đến Node2 và tạo tệp cấu hình cho Galera:
Mã:
sudo nano /etc/mysql/conf.d/galera.cnf
Thêm các dòng sau:
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://192.168.0.102,192.168.0.103,192.168.0.104"# Cấu hình đồng bộ hóa Galerawsrep_sst_method=rsync# Cấu hình nút Galerawsrep_node_address="192.168.0.103"wsrep_node_name="Node2"
Lưu tệp khi bạn hoàn tất.

Lưu ý: 192.168.0.103 là địa chỉ IP của Node2.

Thêm Node3 vào Galera Cluster​

Tiếp theo, hãy đến Node3 và tạo tệp cấu hình cho Galera:
Mã:
sudo nano /etc/mysql/conf.d/galera.cnf
Thêm các dòng sau:
Mã:
[mysqld]binlog_format=ROWdefault-storage-engine=innodbinnodb_autoinc_lock_mode=2bind-address=0.0.0.0# Galera Provider Cấu hìnhwsrep_on=ONwsrep_provider=/usr/lib/galera/libgalera_smm.so# Cấu hình cụm Galerawsrep_cluster_name="galera_cluster"wsrep_cluster_address="gcomm://192.168.0.102,192.168.0.103,192.168.0.104"# Cấu hình đồng bộ hóa Galerawsrep_sst_method=rsync# Cấu hình nút Galerawsrep_node_address="192.168.0.104"wsrep_node_name="Node3"
Lưu tệp khi bạn hoàn tất.

Lưu ý: 192.168.0.104 là địa chỉ IP của Node3.

Cấu hình tường lửa​

Galera Cluster sử dụng bốn cổng 3306 cho kết nối máy khách MySQL, 4444 cho Chuyển ảnh chụp nhanh trạng thái, 4567 cho lưu lượng sao chép Galera Cluster và 4568 cho Chuyển trạng thái gia tăng. Vì vậy, bạn sẽ cần cho phép tất cả các cổng này sử dụng tường lửa UFW. Bạn có thể thực hiện điều này bằng cách chạy lệnh sau trên tất cả các nút:

Đầu tiên, bật tường lửa UFW bằng lệnh sau:
Mã:
sudo ufw enable
Tiếp theo, cho phép tất cả các cổng bằng lệnh sau:
Mã:
sudo ufw allow 3306/tcp
sudo ufw allow 4444/tcp
sudo ufw allow 4567/tcp
sudo ufw allow 4568/tcp
sudo ufw allow 4567/udp
Sau đó, bạn có thể kiểm tra trạng thái của tường lửa bằng lệnh sau:
Mã:
sudo ufw status
Sau khi tường lửa UFW được định cấu hình trên tất cả các nút, bạn có thể tiến hành bước tiếp theo.

Khởi động MariaDB Galera Cluster​

Sau khi cấu hình thành công tất cả các nút, hãy chuyển đến Node1 và khởi động Galera Cluster.

Trước khi Galera có thể khởi động, bạn cần đảm bảo rằng dịch vụ MariaDB đã dừng trên tất cả các nút.

Chạy lệnh sau trên tất cả các nút:
Mã:
sudo systemctl stop mysql
Bây giờ, hãy khởi động Galera Cluster trên Node1 bằng lệnh sau:
Mã:
sudo galera_new_cluster
Bây giờ, hãy kiểm tra xem cụm có đang chạy hay không bằng lệnh sau:
Mã:
mysql -u root -p -e "show status like 'wsrep_cluster_size'"
Nếu mọi thứ ổn, bạn sẽ thấy đầu ra sau:
Mã:
+--------------------+-------+| Variable_name | Value |+--------------------+-------+| wsrep_cluster_size | 1 |+--------------------+-------+
Trên Node2, khởi động dịch vụ MariaDB:
Mã:
sudo systemctl start mysql
Bạn có thể kiểm tra trạng thái của dịch vụ MariaDB xem nó có hoạt động hay không bằng lệnh sau:
Mã:
sudo systemctl status mysql
Nếu mọi thứ đều ổn, bạn sẽ thấy đầu ra sau:
Mã:
?? mariadb.service - Máy chủ cơ sở dữ liệu MariaDB Đã tải: đã tải (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled) Đang hoạt động: đang hoạt động (đang chạy) kể từ CN 2017-09-17 10:11:20 EDT; 10 phút trước Tiến trình: 715 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (mã=thoát, trạng thái=0/THÀNH CÔNG) Tiến trình: 713 ExecStartPost=/etc/mysql/debian-start (mã=thoát, trạng thái=0/THÀNH CÔNG) Tiến trình: 545 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`/usr/bin/galera_recovery`; [ $? -eq 0 ] && systemctl set Tiến trình: 535 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS) Tiến trình: 514 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS) PID chính: 661 (mysqld) Trạng thái: "Đang nhận yêu cầu SQL của bạn ngay bây giờ..." Nhiệm vụ: 26 (giới hạn: 4915) CGroup: /system.slice/mariadb.service ??????661 /usr/sbin/mysqld17/9 10:11:11 debian systemd[1]: Đang khởi động máy chủ cơ sở dữ liệu MariaDB...17/9 10:11:15 debian mysqld[661]: 17/09/2017 10:11:15 140287134630464 [Lưu ý] /usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) đang khởi động như một tiến trình17/09 10:11:20 debian systemd[1]: Đã khởi động máy chủ cơ sở dữ liệu MariaDB.
Bây giờ, nút thứ hai của bạn sẽ tự động liên kết với cụm. Bạn có thể xác minh điều đó bằng lệnh sau:
Mã:
mysql -u root -p -e "show status like 'wsrep_cluster_size'"
Nếu mọi thứ hoạt động tốt, kích thước cụm sẽ được đặt thành hai:
Mã:
+--------------------+-------+| Variable_name | Value |+--------------------+-------+| wsrep_cluster_size | 2 |+--------------------+-------+
Trên Node3, hãy khởi động dịch vụ MariaDB:
Mã:
sudo systemctl start mysql
mysql -u root -p -e "show status like 'wsrep_cluster_size'"
Nếu mọi thứ hoạt động tốt, kích thước cụm sẽ được đặt thành ba:
Mã:
+--------------------+-------+| Variable_name | Value |+------------------+-------+| wsrep_cluster_size | 3 |+------------------+-------+
Cụm của bạn hiện đang hoạt động và giao tiếp với nhau.

Kiểm tra bản sao cơ sở dữ liệu​

Bây giờ, tất cả các nút đều trực tuyến, đã đến lúc kiểm tra bản sao cơ sở dữ liệu trên Galera Cluster. Hãy bắt đầu bằng cách tạo cơ sở dữ liệu trên Node1 và kiểm tra xem nó có được sao chép trên tất cả các nút hay không.

Đầu tiên, hãy đăng nhập vào bảng điều khiển MariaDb bằng lệnh sau:
Mã:
mysql -u root -p
Nhập mật khẩu gốc của bạn và tạo cơ sở dữ liệu có tên test_db:
Mã:
MariaDB [(none)]> create database test_db;
MariaDB [(none)]> show databases;
Mã:
+------------------+| Cơ sở dữ liệu |+--------------------+| test_db |+--------------------+
Bây giờ hãy chuyển đến Node2 và Node3, sau đó kiểm tra xem bản sao có hoạt động hay không:
Mã:
mysql -u root -p
MariaDB [(none)]> show databases;
Mã:
+--------------------+| Database |+--------------------+| test_db |+--------------------+
Xin chúc mừng! Bạn đã cài đặt và cấu hình thành công MariaDB Galera Cluster trên máy chủ Ubuntu 16.04.

Kết luận​

Tôi hy vọng bây giờ bạn đã có đủ kiến thức để cài đặt và cấu hình MariaDB Galera Cluster trên Ubuntu 16.04. Bây giờ bạn có thể dễ dàng mở rộng quy mô lên nhiều hoặc thậm chí hàng chục nút riêng biệt. Nếu bạn có bất kỳ thắc mắc hoặc câu hỏi nào khác, hãy tham khảo liên kết Galera Cluster Doc
 
Back
Bên trên