Percona XtraDB Cluster là giải pháp nhóm nguồn mã hóa cơ sở dữ liệu mở hoàn toàn cho MySQL . Nó cho phép bạn tạo ra máy chủ phát triển MySQL có khả năng sử dụng cao với hiệu suất mạnh mẽ và cao. Phiên bản mới nhất của Percona XtraDB Cluster là 8.0, hoàn toàn tương thích với MySQL Server Comunity Edition 8.0.
Percona XtraDB Cluster cung cấp các tính năng như replication đồng bộ, replication đa nguồn, cung cấp Node tự động, tự động cấu hình SSL mã hóa và hiệu suất tối ưu hóa.
Percona XtraDB Cluster đảm bảo khả năng sử dụng cao của cơ sở dữ liệu máy chủ, cung cấp khả năng mở rộng, ngăn chặn downtime và mất dữ liệu.

Điều kiện tiên quyết
Bạn cần có quyền truy root trên Node mà bạn sẽ cài đặt Percona XtraDB Cluster (hoặc đăng nhập với tư cách là người dùng có quyền root hoặc sudo).
Xem thêm
Để biết thêm thông tin, hãy xem mục Kích hoạt AppArmor .
Cài đặt từ Kho lưu trữ
Cập nhật hệ thống:
sudo apt update
Cài đặt các gói cần thiết:
sudo apt install -y wget gnupg2 lsb-release curl
Tải xuống gói kho lưu trữ
wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb
Cài đặt gói bằng dpkg:
sudo dpkg -i percona-release_latest.generic_all.deb
Làm mới bộ nhớ đệm cục bộ để cập nhật thông tin gói:
sudo apt update
Kích hoạt kho lưu trữ phát hành cho Percona XtraDB Cluster:
sudo percona-release setup pxc80
Cài đặt Cluster:
sudo apt install -y percona-xtradb-cluster
Trong quá trình cài đặt, bạn được yêu cầu cung cấp mật khẩu cho root người dùng trên Node cơ sở dữ liệu.
Ghi chú
Nếu cần, bạn cũng có thể cài đặt percona-xtradb-cluster-full gói meta, bao gồm các gói bổ sung sau:
+ libperconaserverclient21
+ libperconaserverclient21-dev
+ percona-xtradb-cluster
+ percona-xtradb-cluster-client
+ percona-xtradb-cluster-common
+ percona-xtradb-cluster-dbg
+ percona-xtradb-cluster-full
+ percona-xtradb-cluster-garbd
+ percona-xtradb-cluster-garbd-debug
+ percona-xtradb-cluster-server
+ percona-xtradb-cluster-server-debug
+ percona-xtradb-cluster-source
+ percona-xtradb-cluster-test
Sau khi bạn cài đặt Percona XtraDB Cluster và stop mysql service, hãy cấu hình Node theo quy trình được mô tả trong Cấu hình Node để replication bộ ghi .
Cấu hình Nodes để replication Write-Set
Sau khi cài đặt Percona XtraDB Cluster trên mỗi Node, bạn cần cấu hình Cluster. Trong phần này, chúng tôi sẽ trình bày cách cấu hình Cluster 3 Node:
| Node | Chủ nhà | Địa chỉ IP |
|---|---|---|
| Node 1 | pxc1 | 192.168.70.61 |
| Node 2 | pxc2 | 192.168.70.62 |
| Node 3 | pxc3 | 192.168.70.63 |
Stop máy chủ Percona XtraDB Cluster. Sau khi cài đặt hoàn tất, máy chủ không được khởi động. Bạn cần thực hiện bước này nếu bạn đã khởi động máy chủ theo cách thủ công.
$ sudo service mysql stop
Chỉnh sửa tệp cấu hình của Node đầu tiên để cung cấp cài đặt Cluster.
Nếu bạn sử dụng Debian hoặc Ubuntu, hãy chỉnh sửa /etc/mysql/mysql.conf.d/mysqld.cnf :
wsrep_provider=/usr/lib/galera4/libgalera_smm.so
wsrep_cluster_name=pxc-cluster
wsrep_cluster_address=gcomm://192.168.70.61,192.168.70.62,192.168.70.63
Nếu bạn sử dụng Red Hat hoặc CentOS, hãy chỉnh sửa /etc/my.cnf. Lưu ý rằng trên các hệ thống này, bạn đặt tùy chọn wsrep_provider thành một giá trị khác:
wsrep_provider=/usr/lib64/galera4/libgalera_smm.so
wsrep_cluster_name=pxc-cluster
wsrep_cluster_address=gcomm://192.168.70.61,192.168.70.62,192.168.70.63
Cấu hình Node 1.
wsrep_node_name=pxc1
wsrep_node_address=192.168.70.61
pxc_strict_mode=ENFORCING
Thiết lập node 2 và node 3 theo cùng một cách: Stop máy chủ và cập nhật tệp cấu hình áp dụng cho hệ thống của bạn. Tất cả các thiết lập đều giống nhau ngoại trừ wsrep_node_name và wsrep_node_address .
Đối với Node 2
wsrep_node_name=pxc2
wsrep_node_address=192.168.70.62
Đối với Node 3
wsrep_node_name=pxc3
wsrep_node_address=192.168.70.63
Thiết lập cài đặt mã hóa lưu lượng. Mỗi Node của Cluster phải sử dụng cùng một chứng chỉ SSL.
[mysqld]
wsrep_provider_options=”socket.ssl_key=server-key.pem;socket.ssl_cert=server-cert.pem;socket.ssl_ca=ca.pem”
[sst]
encrypt=4
ssl-key=server-key.pem
ssl-ca=ca.pem
ssl-cert=server-cert.pem
Lưu ý quan trọng:
Trong Percona XtraDB Cluster 8.0, Lưu lượng replication mã hóa được bật theo mặc định (thông qua biến pxc-encrypt-cluster-traffic).
Không thể bật mã hóa lưu lượng replication trên Cluster đang chạy. Nếu nó bị tắt trước khi Cluster được khởi động, Cluster cần phải stop. Sau đó thiết lập mã hóa và khởi động lại.
Template tập tin cấu hình
Sau đây là ví dụ về tệp cấu hình đầy đủ được cài đặt trên CentOS tới /etc/my.cnf.
# Template my.cnf for PXC
# Edit to your requirements.
[client]
socket=/var/lib/mysql/mysql.sock
[mysqld]
server-id=1
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
# Binary log expiration period is 604800 seconds, which equals 7 days
binlog_expire_logs_seconds=604800
######## wsrep ###############
# Path to Galera library
wsrep_provider=/usr/lib64/galera4/libgalera_smm.so
# Cluster connection URL contains IPs of nodes
#If no IP is found, this implies that a new cluster needs to be created,
#in order to do that you need to bootstrap this node
wsrep_cluster_address=gcomm://
# In order for Galera to work correctly binlog format should be ROW
binlog_format=ROW
# Slave thread to use
wsrep_slave_threads=8
wsrep_log_conflicts
# This changes how InnoDB autoincrement locks are managed and is a requirement for Galera
innodb_autoinc_lock_mode=2
# Node IP address
#wsrep_node_address=192.168.70.63
# Cluster name
wsrep_cluster_name=pxc-cluster
#If wsrep_node_name is not specified, then system hostname will be used
wsrep_node_name=pxc-cluster-node-1
#pxc_strict_mode allowed values: DISABLED,PERMISSIVE,ENFORCING,MASTER
pxc_strict_mode=ENFORCING
# SST method
wsrep_sst_method=xtrabackup-v2
Sau khi cấu hình tất cả Nodes, hãy khởi tạo Percona XtraDB Cluster bằng cách khởi động Node đầu tiên theo quy trình được mô tả trong Khởi động Node đầu tiên .
Khởi động Node đầu tiên
Sau khi bạn cấu hình tất cả Nodes PXC , hãy khởi tạo Cluster bằng cách khởi động Node đầu tiên. Node ban đầu phải chứa tất cả dữ liệu mà bạn muốn replication sang Nodes khác.
Khởi động ngụ ý bắt đầu Node đầu tiên mà không có bất kỳ địa chỉ Cluster nào được biết đến: nếu wsrep_cluster_address biến trống, Percona XtraDB Cluster sẽ cho rằng đây là Node đầu tiên và khởi tạo Cluster.
Thay vì thay đổi cấu hình, hãy khởi động Node đầu tiên bằng lệnh sau:
systemctl start [email protected]
Khi bạn khởi động Node bằng lệnh trước đó, nó sẽ chạy ở chế độ khởi động với wsrep_cluster_address=gcomm://. Lệnh này sẽ yêu cầu Node khởi tạo Cluster với wsrep_cluster_conf_id biến được đặt thành 1. Sau khi bạn thêm Nodes khác vào Cluster, bạn có thể khởi động lại Node này như bình thường và nó sẽ sử dụng lại cấu hình chuẩn.
Cấu hình chuẩn một lần nữa.
Ghi chú
A service started with mysql@bootstrap must be stopped using the same command. For example, the systemctl stop mysql command does not stop an instance started with the mysql@bootstrap command.
Để đảm bảo Cluster đã được khởi tạo, hãy chạy lệnh sau:
show status like 'wsrep%';
Đầu ra cho thấy kích thước Cluster là 1 Node, đây là thành phần chính, Node ở Synced trạng thái được kết nối đầy đủ và sẵn sàng để replication tập lệnh ghi.
OUTPUT:
+----------------------------+--------------------------------------+
| Variable_name | Value |
+----------------------------+--------------------------------------+
| wsrep_local_state_uuid | c2883338-834d-11e2-0800-03c9c68e41ec |
| ... | ... |
| wsrep_local_state | 4 |
| wsrep_local_state_comment | Synced |
| ... | ... |
| wsrep_cluster_size | 1 |
| wsrep_cluster_status | Primary |
| wsrep_connected | ON |
| ... | ... |
| wsrep_ready | ON |
+----------------------------+--------------------------------------+
40 rows in set (0.01 sec)
Sau khi khởi tạo Cluster, bạn có thể thêm Nodes khác.
thêm Nodes khác.
Nodes mới được cấu hình đúng sẽ được cung cấp tự động. Khi bạn khởi động một Node với địa chỉ của ít nhất một Node đang chạy khác trong biến wsrep_cluster_address, Node này sẽ tự động tham gia và đồng bộ hóa với Cluster.
Lưu ý:
Any existing data and configuration will be overwritten to match the data and configuration of the DONOR node. Do not join several nodes at the same time to avoid overhead due to large amounts of traffic when a new node joins.
Percona XtraDB Cluster sử dụng Percona XtraBackup để Chuyển ảnh chụp nhanh trạng thái và wsrep_sst_method biến luôn được đặt thành xtrabackup-v2.
Bắt đầu Node thứ hai
Bắt đầu Node thứ hai bằng lệnh sau:
[root@pxc2 ~]# systemctl start mysql
Sau khi máy chủ khởi động, nó sẽ tự động nhận được SST .
Để kiểm tra trạng thái của Node thứ hai, hãy chạy lệnh sau:
mysql@pxc2> show status like 'wsrep%';
OUTPUT:
+----------------------------------+--------------------------------------------------+
| Variable_name | Value |
+----------------------------------+--------------------------------------------------+
| wsrep_local_state_uuid | a08247c1-5807-11ea-b285-e3a50c8efb41 |
| ... | ... |
| wsrep_local_state | 4 |
| wsrep_local_state_comment | Synced |
| ... | |
| wsrep_cluster_size | 2 |
| wsrep_cluster_status | Primary |
| wsrep_connected | ON |
| ... | ... |
| wsrep_provider_capabilities | :MULTI_MASTER:CERTIFICATION: ... |
| wsrep_provider_name | Galera |
| wsrep_provider_vendor | Codership Oy <[email protected]> |
| wsrep_provider_version | 4.3(r752664d) |
| wsrep_ready | ON |
| ... | ... |
+----------------------------------+--------------------------------------------------+
75 rows in set (0.00 sec)
Đầu ra SHOW STATUS cho thấy Node mới đã được thêm thành công vào Cluster. Kích thước Cluster hiện là 2 Node, đây là thành phần chính và được kết nối đầy đủ và sẵn sàng để nhận bản sao tập lệnh ghi.
Nếu trạng thái của Node thứ hai giống Synced như trong ví dụ trước, thì Node nhận được SST đầy đủ sẽ được đồng bộ hóa với Cluster và bạn có thể tiến hành thêm Node tiếp theo.
Lưu ý:
If the state of the node is Joiner, it means that SST hasn’t finished. Do not add new nodes until all others are in Synced state.
Bắt đầu Node thứ ba
Để thêm Node thứ ba, hãy khởi động nó như bình thường:
[root@pxc3 ~]# systemctl start mysql
Để kiểm tra trạng thái của Node thứ ba, hãy chạy lệnh sau:
mysql@pxc3> show status like 'wsrep%';
Đầu ra cho thấy Node mới đã được thêm thành công vào Cluster. Kích thước Cluster hiện là 3 Node, đây là thành phần chính và được kết nối đầy đủ và sẵn sàng để nhận bản sao tập lệnh ghi.
OUTPUT:
----------------------------+--------------------------------------+
| Variable_name | Value |
+----------------------------+--------------------------------------+
| wsrep_local_state_uuid | c2883338-834d-11e2-0800-03c9c68e41ec |
| ... | ... |
| wsrep_local_state | 4 |
| wsrep_local_state_comment | Synced |
| ... | ... |
| wsrep_cluster_size | 3 |
| wsrep_cluster_status | Primary |
| wsrep_connected | ON |
| ... | ... |
| wsrep_ready | ON |
+----------------------------+--------------------------------------+
40 rows in set (0.01 sec)
Khi bạn thêm tất cả Nodes vào Cluster, bạn có thể xác minh quá trình replication bằng cách chạy truy vấn và thao tác dữ liệu trên Nodes để xem những thay đổi này có được đồng bộ hóa trên toàn Cluster hay không.
Xác minh replication
Sử dụng quy trình sau để xác minh bản sao bằng cách tạo cơ sở dữ liệu mới trên Node thứ hai, tạo bảng cho cơ sở dữ liệu đó trên Node thứ ba và thêm một số bản ghi vào bảng trên Node đầu tiên.
Tạo cơ sở dữ liệu mới trên Node thứ hai:
mysql@pxc2> CREATE DATABASE percona;
Đầu ra sau đây xác nhận rằng cơ sở dữ liệu mới đã được tạo:
Query OK, 1 row affected (0.01 sec)
Chuyển sang cơ sở dữ liệu mới được tạo:
mysql@pxc3> USE percona;
Đầu ra sau đây xác nhận rằng cơ sở dữ liệu đã bị thay đổi:
Database changed
Tạo một bảng trên Node thứ ba:
mysql@pxc3> CREATE TABLE example (node_id INT PRIMARY KEY, node_name VARCHAR(30));
Đầu ra sau đây xác nhận rằng bảng đã được tạo:
Query OK, 0 rows affected (0.05 sec)
Chèn bản ghi vào Node đầu tiên:
mysql@pxc1> INSERT INTO percona.example VALUES (1, 'percona1');
Đầu ra sau đây xác nhận rằng các bản ghi đã được chèn vào:
Query OK, 1 row affected (0.02 sec)
Lấy các hàng từ bảng đó trên Node thứ hai:
mysql@pxc2> SELECT * FROM percona.example;
Đầu ra sau đây xác nhận rằng tất cả các hàng đã được truy xuất:
ĐẦU RA:
+---------+-----------+
| node_id | node_name |
+---------+-----------+
| 1 | percona1 |
+---------+-----------+
1 row in set (0.00 sec)
Các bước tiếp theo
- Hãy cân nhắc cài đặt ProxySQL trên Nodes máy khách để quản lý khối lượng công việc hiệu quả trên toàn Cluster mà không cần thay đổi bất kỳ ứng dụng nào tạo truy vấn. Đây là giải pháp có tính khả dụng cao được khuyến nghị cho Percona XtraDB Cluster. Để biết thêm thông tin, hãy xem Cân bằng tải với ProxySQL .
- Percona Monitoring and Management là lựa chọn tốt nhất để quản lý và giám sát hiệu suất của Percona XtraDB Cluster. Nó cung cấp khả năng hiển thị cho Cluster và cho phép khắc phục sự cố hiệu quả.










Add Comment