Database Kiến Thức Linux

Hướng dẫn cài đặt Percona XtraDB Cluster trên Ubuntu – Debian

Percona XtraDB logo

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:

NodeChủ nhàĐịa chỉ IP
Node 1pxc1192.168.70.61
Node 2pxc2192.168.70.62
Node 3pxc3192.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

Click here to post a comment