Ask question

Ask Questions and Get Answers from Our Community

Answer

Answer Questions and Become an Expert on Your Topic

Contact Staff

Our Experts are Ready to Answer your Questions

MariaDB Cài đặt Galera 3 node trên CentOS 7

diephan

Moderator
Joined
Sep 7, 2020
Messages
58
Reaction score
19
Points
8
1. Galera Clusterlà gì?

- Galera là một plug-in sao chép đồng bộ multi master cho InnoDB.
- Nó rất khác với MySQL Replication thông thường và giải quyết một số vấn đề bao gồm xung đột ghi khi viết trên nhiều master , độ trễ sao chép và slave không đồng bộ với master .
- Một cụm Galera tối thiểu bao gồm 3 nút
- Plugin này là mã nguồn mở và được phát triển bởi Codership như một bản vá cho MySQL tiêu chuẩn.
- Có 3 biến thể Galera - MySQL Galera Cluster bởi Codership, Percona XtraDB Cluster bởi Percona và MariaDB Galera Cluster (5.5 và 10.0) bởi MariaDB.

2. Sự khác biệt giữa MySQL Replication và Galera Cluster
1.jpg


- MySQL sử dụng 3 luồng để thực hiện sao chép:

  • Binlog dump thread: Master tạo một luồng để gửi nội dung binary log đến slave khi slave kết nối.
  • Slave IO thread :Slave tạo ra một luồng IO, kết nối với master và yêu cầu nó gửi các bản cập nhật được ghi trong binary log của nó. Luồng slave I/O đọc các bản cập nhật mà luồng Binlog Dump của master gửi và sao chép chúng vào các tệp cục bộ bao gồm relay log của slave.
  • Slave SQL thread :Slave tạo ra một luồng SQL để đọc relay log được ghi bởi luồng slave I / O và thực thi các sự kiện có trong đó.
MySQL Replication là một phần của cơ sở dữ liệu MySQL chuẩn, và chủ yếu là không đồng bộ về bản chất. Các bản cập nhật phải luôn được thực hiện trên một master , sau đó những bản cập nhật này sẽ được truyền tới các slave. Có thể tạo một cấu trúc liên kết vòng với nhiều master , tuy nhiên điều này không được khuyến khích vì rất dễ khiến các máy chủ mất đồng bộ trong trường hợp một cái bị lỗi.

- Galera Cluster thực hiện sao chép bằng 4 thành phần:


  • Hệ thống quản lý cơ sở dữ liệu (Database Management System): Database server chạy trên từng nút. Các DBMS được hỗ trợ là MySQL Server, Percona Server cho MySQL và MariaDB Server.
  • Wsrep API: Nó cung cấp tích hợp với công cụ máy chủ cơ sở dữ liệu để sao chép bộ ghi.
  • Galera Plugin : Plugin cho phép chức năng dịch vụ sao chép bộ ghi.
  • Group Communication plugins: Các hệ thống liên lạc nhóm khác nhau có sẵn cho Galera Cluster.
3. Ưu điểm và nhược điểm của Galera Cluster
- Ưu điểm:

  • Là một giải pháp có tính khả dụng cao với chức năng nhân rộng đồng bộ, chuyển đổi dự phòng
  • Không mất dữ liệu
  • Tất cả các máy chủ đều có dữ liệu cập nhật (no slave lag)
- Nhược điểm: Nó chỉ hỗ trợ công cụ lưu trữ InnoDB hoặc XtraDB

4. Network port
Galera Cluster cần quyền truy cập vào các cổng sau:


  • Standard MariaDB Port (default: 3306): Đối với các kết nối máy khách MySQL và State Snapshot Transfe (Chuyển giao ảnh chụp trạng thái) sử dụng phương thức mysqldump. Điều này có thể được thay đổi bằng cách cài đặt port .
  • Galera Replication Port (default: 4567): Đối với lưu lượng sao chép Galera Cluster, multicast replication sử dụng cả truyền tải UDP và TCP trên cổng này. Có thể thay đổi bằng cách đặt wsrep_node_address.
  • IST Port (default: 4568): Để chuyển trạng thái gia tăng. Có thể thay đổi bằng cách đặt ist.recv_addr trong wsrep_provider_options.
  • SST Port (default: 4444): Đối với tất cả các phương pháp Chuyển ảnh chụp trạng thái khác ngoài mysqldump. Có thể thay đổi bằng cách đặt wsrep_sst_receive_address (địa chỉ mà các nút khác trong cụm kết nối để gửi các bản cập nhật chuyển trạng thái)
5. Triển khai một Cụm Galera

Chuẩn bị


HostnameNetwork interface 1 (netwwork replication)Network interface 2
node110.123.70.8110.123.20.81
node210.123.70.8210.123.20.82
node310.123.70.8310.123.20.83

Cài đặt MariaDB 10.2 trên mỗi node
- Kiểm tra phiên bản Linux bằng cách sử dụng lệnh dưới đây trước khi tải xuống MariaDB.
cat /etc/redhat-release

2.jpg


- Tạo tệp MariaDB.repo trong /etc/yum.repos.d/
vi /etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1


3.jpg


- Cài đặt MariaDB Server and MariaDB Client
yum install MariaDB-server MariaDB-client

4.jpg

- Bắt đầu dịch vụ MariaDB
systemctl start mysql
- Chạy cài đặt an toàn bằng cách sử dụng trạng thái dưới đây để định cấu hình mật khẩu gốc và các tính năng khác
mysql_secure_installation

5.jpg


- Đăng nhập vào MariaDB
6.jpg

- Dừng dịch vụ MariaDB
service mysql stop
- Mở các port cần thiết
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=4567/tcp --permanent
firewall-cmd --zone=public --add-port=4568/tcp --permanent
firewall-cmd --zone=public --add-port=4444/tcp --permanent
firewall-cmd –reload

7.jpg


- Tắt SELINUX trên tất cả các nút

sed -i.bak 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
setenforce 0

- Thực hiện thay đổi đối với tệp /etc/my.cnf.d/server.cnf
vi /etc/my.cnf.d/server.cnf
wsrep_on=ON
wsrep_cluster_address=gcomm://10.123.70.81,10.123.70.82,10.123.70.83
wsrep_node_address=10.123.70.83
wsrep_node_incoming_address=10.123.70.83
# wsrep_sst_donor =
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
innodb_buffer_pool_size=122M
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name="Galera"
wsrep_slave_threads=1
wsrep_certify_nonPK=1
wsrep_max_ws_rows=0
wsrep_max_ws_size=2147483647
wsrep_debug=0
wsrep_convert_LOCK_to_trx=0
wsrep_retry_autocommit=1
wsrep_auto_increment_control=1
wsrep_drupal_282555_workaround=0
wsrep_causal_reads=0
wsrep_notify_cmd=
bind-address=0.0.0.0
wsrep_slave_threads=1
innodb_flush_log_at_trx_commit=0

8.jpg


• wsrep_cluster_address: Danh sách các node thuộc Cluster, sử dụng địa chỉ IP (IP Replicate: 10.123.70.81,10.123.70.82,10.123.70.83)
• wsrep_cluster_name: Tên của cluster
• wsrep_node_address: Địa chỉ IP của node đang thực hiện
• wsrep_node_incoming_address: Địa chỉ IP của node đang thực hiện

- Bắt đầu dịch vụ trên nút đầu tiên
Để bắt đầu dịch vụ mariadb trên Node đầu tiên, bạn sẽ sử dụng lệnh dưới đây. Không sử dụng systemctl start mysql hoặc service mysql start
sudo galera_new_cluster

Dịch vụ sẽ bắt đầu thành công. Khi dịch vụ mariadb được bắt đầu trên nút đầu tiên, bạn có thể thay đổi thông tin cụm bằng cách kết nối với mariadb.
- Join node thứ 2 & 3
service mysql start
mysql -uroot -p

- Chạy lệnh sau để xem node được đăng ký là cluster node
MariaDB > show status like '%wsrep_cluster_size%';

10.jpg


6. Kiểm tra sự đồng bộ giữa các node trong cụm
- Trên node 1, tạo user svuit01, và gán tất cả các quyền cho nó
mysql -u root -p
create user 'svuit01'@'%' identified by 'Password’;
grant all privileges on *.* to 'svuit01'@'%';
flush privileges;
11.jpg


- Trên node2 và node3 sẽ tự cập nhật user vào bảng mysql.user

12.jpg


Ta chỉ càn gán thêm quyền cho user này:

13.jpg


- Để hiển thị thêm thông tin của cluster sử dụng lệnh:
MariaDB > show status like 'wsrep%';

14.jpg
 
Last edited:
Top