Galera Cluster là gì?
Galera cluster là giải pháp phân cụm máy chủ cơ sở dữ liệu có các tính năng sau theo như quảng cáo:
Multi-master: có thể đọc và ghi cùng lúc trên bất kỳ node nào tại bất kỳ thời điểm nào.
Sao chép đồng bộ tự động: không có độ trễ, không bị mất dữ liệu khi 1 node gặp sự cố.
Liên kết chặt chẽ: tất cả các node trong cụm là giống nhau về mặt dữ liệu, trạng thái. Không có sự phân kỳ giữa các node.
Multi-threads: tối ưu hiệu suất tốt hơn.
Do không áp dụng cơ chế master-slave nên không cần phải chuyển đổi khi master node gặp sự cố.
Không có thời gian chờ khi master node chết...vì node nào cũng là master
Tự động hóa quá trình cấp phép cho node mới.
Không cần chỉnh sửa source code khi chuyển đổi từ mô hình máy chủ co sở dữ liệu đơn sang mô hình cụm (cluster).
Không cần phân luồng đọc/ghi kiểu như mô hình Replication.
Dễ sử dụng và triển khai.
Hỗ trợ triển khai trên Cloud.
Hướng dẫn thực hành cài đặt Galera Cluster
Đầu tiên là chúng ta cần có ít nhất 3 linux server để tạo thành 1 cụm cluster.
Trong phạm vi bài viết này, mình sẽ sử dụng phần mềm ảo hóa có tên Multipass để làm môi trường thực hành.
Hệ điều hành chạy linux Ubuntu 20.04 LTS
MySql phiên bản 5.7
1. Chuẩn bị môi trường máy chủ
Giả sử chúng ta có 3 máy chủ linux chạy chung 1 network với các thông số sau đây:
Chạy các lệnh theo thứ tự sau trên toàn bộ các máy chủ.
Đầu tiên thêm khóa repo của Galera vào kho APT
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv BC19DDBA
Sau đó thêm Galera repo vào kho APT bằng cách tạo file gelera.list trong folder /etc/apt/sources.list.d/
sudo nano /etc/apt/sources.list.d/galera.list
Thêm 2 dòng bên dưới rồi lưu lại và thoát khỏi Editor
deb http://releases.galeracluster.com/mysql-wsrep-5.7/ubuntu bionic main
deb http://releases.galeracluster.com/galera-3/ubuntu bionic main
Trường hợp sử dụng nano như trong ví dụ, bạn sử dụng tổ hợp phím Ctrl+X, Y, sau đó bấm ENTER
Tiếp theo, gán thứ tự ưu tiên cho Galera repo để đảm bảo APT lấy các cập nhật từ Galera. Tạo file galera.pref trong folder /etc/apt/preferences.d/
sudo nano /etc/apt/preferences.d/galera.pref
Thêm nội dung bên dưới vào file vừa tạo rồi lưu lại và thoát khỏi Editor
# Prefer Codership repository
Package: *
Pin: origin releases.galeracluster.com
Pin-Priority: 1001
Cuối cùng chạy lệnh cập nhật manifest
sudo apt update
3. Cài đặt MySql trên toàn bộ máy chủ
Chạy lệnh sau để download và cài đặt MySql (phiên bản đã chỉnh sửa từ Galera)
sudo apt install galera-3 mysql-wsrep-5.7
Trong quá trình cài đặt, chúng ta sẽ tạo mật khẩu root cho MySql.
Tắt cấu hình mặc định MySql trong AppArmor
sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld
Sau khi cài đặt hoàn tất MySql trên toàn bộ server, chúng ta qua bước quan trọng kế tiếp
4. Thiết lập cấu hình cho Galera Cluster
Tạo file galera.cnf trong folder /etc/mysql/conf.d/ trên server db-1
sudo nano /etc/mysql/conf.d/galera.cnf
Thêm nội dung sau và lưu lại
[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/lib/galera/libgalera_smm.so
# Galera Cluster Configuration
wsrep_cluster_name="mysql_cluster_local"
wsrep_cluster_address="gcomm://192.168.206.230,192.168.206.232,192.168.206.235"
# Galera Synchronization Configuration
wsrep_sst_method=rsync
# Galera Node Configuration
wsrep_node_address="192.168.206.230"
wsrep_node_name="db-1"
binlog_format=ROW Galera chỉ chạy ổn định với binlog theo hàng.
default-storage-engine mặc định là innodb, Galera không hỗ trợ MyISAM
bind-address không bind được local ip 127.0.0.1
wsrep_cluster_name tên cluster
wsrep_cluster_address theo format "gcomm://IP.node1,IP.node2,IP.node3"
wsrep_node_address địa chỉ IP của server
wsrep_node_name Đặt tên tùy chọn, giúp chúng ta xác định và tham chiếu trong một số trường hợp, như là xác định máy chủ đang xảy ra sự cố trong logs.
# db-2
# Galera Node Configuration
wsrep_node_address="192.168.206.232"
wsrep_node_name="db-2"
# db-3
# Galera Node Configuration
wsrep_node_address="192.168.206.235"
wsrep_node_name="db-3"
5. Cấu hình firewall
Galera cần 4 ports sau
3306: mysql client, mysqldump
4567: Galera cluster replication, sử dụng TCP và UDP
4568: Incremetal state transfer
4444: Snapshot state transfer
sudo ufw allow 3306,4567,4568,4444/tcp
sudo ufw allow 4567/udp
6. Khởi động node "số 1"
Bật chế độ chạy mysqld lúc server khởi động
sudo systemctl enable mysql
Tiếp theo chay bootstrap để tạo cluster mới
sudo mysqld_bootstrap
7. Khởi động các node còn lại
sudo systemctl start mysql
Không có nhận xét nào:
Đăng nhận xét