Tìm kiếm Blog này

Translate

Thứ Tư, 4 tháng 11, 2020

Galera Cluster với MySql và Ubuntu Server

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:


2. Thêm Mysql repo vào tất cả máy chủ

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.


Thực hiện lại các bước cho server db-2 và db-3, trong đó cần thay đổi 2 nội dung sau


# 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"


Nếu server có firewall thì chuyển qua bước 5, không thì bỏ qua bước 5, đi đến bước 6

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


Đến đây, chúng ta đã thiết lập thành công một database cluster với 3 node sử dụng Galera cluster.

Chúc các bạn thành công!

Không có nhận xét nào:

Đăng nhận xét

Bài đăng phổ biến