如何在 Debian 11 上安装 Percona XtraDB 集群如何在 Debian 11 上安装 Percona XtraDB 集群如何在 Debian 11 上安装 Percona XtraDB 集群如何在 Debian 11 上安装 Percona XtraDB 集群
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

如何在 Debian 11 上安装 Percona XtraDB 集群

发表 admin at 2025年2月28日
类别
  • 未分类
标签

Percona XtraDB Cluster 是一个完全开源的 MySQL 数据库集群解决方案。它允许您创建一个强大的、高可用性的 MySQL 服务器部署,以提供高性能。 Percona XtraDB Cluster 的最新版本是 8.0,与 MySQL Server Comunity Edition 8.0 完全兼容。

Percona XtraDB Cluster 提供同步复制、多源复制、自动节点配置、自动 SSL 加密配置和优化性能等功能。

Percona XtraDB Cluster 可确保数据库服务器的高可用性、提供线性可扩展性并防止停机和数据丢失。

在本教程中,您将通过 Percona XtraDB Cluster (PXC) 在 Debian 11 服务器上安装和设置 MySQL 集群。您将安装 Percona XtraDB Cluster - MySQL 集群的开源解决方案 - 到多个 Debian 服务器,然后设置 MySQL 集群以启用多个 MySQL 服务器之间的复制。

先决条件

要完成本教程,您将需要两台或更多运行 Debian 11 的服务器。此外,您必须在所有服务器上拥有一个具有 sudo/root 管理员权限的非 root 用户。

此示例使用三台 Debian 11 服务器,详细信息如下:

Hostname       IP Address
--------------------------
pxc01       192.168.5.15
pxc02       192.168.5.16
pxc03       192.168.5.17

当所有服务器准备就绪后,您可以开始安装 Percona XtraDB Cluster。

设置主机和防火墙

首先,您必须在每台服务器上设置 /etc/hosts 文件,以确保每个主机名都解析为正确的 IP 地址,然后设置防火墙以打开 Percona XtraDB Cluster 将使用的一些端口。您必须在所有服务器上执行此操作。

以下是您必须在防火墙上打开的 Percona XtraDB Cluster 端口的详细信息。

Ports   Used for
---------------------------
3306    MySQL client connection and SST (State Snapshot Transfer)
4444    SST via Percona XtraBackup
4567    write-set replication traffic (over TCP) and multicast replication (over TCP and UDP)
4568    IST (Incremental State Transfer)

首先,使用以下 Nano 编辑器打开配置文件“/etc/hosts”。

sudo nano /etc/hosts

将以下行添加到文件中,并确保根据您的环境更改 IP 地址和主机名的详细信息。

192.168.5.15  pxc01
192.168.5.16  pxc02
192.168.5.17  pxc03

完成后保存并退出文件。

现在输入以下“apt install”命令来安装 ufw 防火墙软件包。出现提示时,输入 y 进行确认,然后按 ENTER 继续。

sudo apt install ufw

安装ufw后,运行以下ufw命令添加OpenSSH服务。这将确保您不会被服务器锁定。如果您有自定义 SSH 端口,则只需使用您的 SSH 端口更改“OpenSSH”参数即可。

sudo ufw allow OpenSSH

接下来,输入以下 ufw 命令以打开 Percona XtraDB Cluster 将使用的一些端口。请务必根据您当前的环境更改内部 IP 地址的子网。

sudo ufw allow from 192.168.5.1/24 proto tcp to any port 3306
sudo ufw allow from 192.168.5.1/24 proto tcp to any port 4444
sudo ufw allow from 192.168.5.1/24 proto tcp to any port 4567
sudo ufw allow from 192.168.5.1/24 proto udp to any port 4567
sudo ufw allow from 192.168.5.1/24 proto tcp to any port 4568

之后,通过输入“ufw enable”命令运行并启用 ufw 防火墙。出现提示时,输入 y 进行确认,然后按 ENTER 继续。输出“防火墙处于活动状态并在系统启动时启用”确认 ufw 防火墙正在运行并将在系统启动时自动启动。

sudo ufw enable

最后,使用以下命令验证 ufw 防火墙状态。

sudo ufw status

您应该收到这样的输出。

安装 Percona XtraDB 集群

在本部分中,您将为基于 Debian 的发行版添加并设置 Percona XtraDB 存储库。然后,您将在所有服务器上安装 Percona XtraDB。

此外,在安装过程中,系统将提示您设置 MySQL root 密码并设置 Percona XtraDB Cluster 的默认身份验证插件。最后,您将通过您配置的 MySQL root 用户和密码登录 MySQL shell 来验证 Percona XtraDB Cluster 安装。

首先,输入以下 apt 命令来安装一些基本依赖项。出现提示时输入 y,然后按 ENTER 继续。

sudo apt install wget gnupg2 lsb-release curl -y

接下来,通过以下 wget 命令下载 Percona XtraDB 存储库包。下载后,通过下面的“dpkg -i”命令安装它。

wget -q https://repo.percona.com/apt/percona-release_latest.generic_all.deb
sudo dpkg -i percona-release_latest.generic_all.deb

现在更新并刷新您的 Debian 软件包索引并运行“percona-release”命令来设置 Percona XtraDB Cluster 存储库。在此示例中,您将启用 Percona XtraDB Cluster 软件包 v8.0,它相当于 MySQL 服务器 v8.0。

sudo apt update
sudo percona-release setup pxc80

更新存储库。

启用 Percona XtraDB Cluster v8.0 存储库。

启用存储库后,输入“apt install” 命令将“percona-xtradb-cluster” 软件包安装到您的系统中。输入 y 确认安装,然后按 ENTER 继续。

sudo apt install percona-xtradb-cluster

在 Percona XtraDB Cluster 安装过程中,系统会要求您设置 MySQL root 密码。

输入新的强密码并选择确定。

重复您的密码并再次选择确定。

对于默认的 MySQL 身份验证插件,选择选项“使用强密码加密(推荐)”,然后选择确定。

现在 Percona XtraDB Cluster 应该已安装,它将自动启动并启用。

安装 Percona XtraDB Cluster 后,输入以下命令来验证 MySQL 服务的状态。

sudo systemctl is-enabled mysql
sudo systemctl status mysql

输出“enabled”确认 MySQL 服务器已启用,并将在系统启动时自动启动。输出“活动(正在运行)”确认 MySQL 服务器正在运行。

要验证您的 MySQL root 密码,请通过下面的“mysql”命令登录 MySQL shell。当要求输入密码时,输入您的 MySQL root 密码。

sudo mysql -u root -p

成功后,您应该获得 MySQL shell。

您还可以通过输入以下查询来验证 MySQL 服务器的详细状态。

sudo systemctl status mysql

您应该收到与此类似的输出 - 您已登录到 MySQL 8.0 Percona XtraDB Cluster。

至此,您已经配置了系统 /etc/hosts 文件,安装并配置了 ufw 防火墙,并在所有服务器上安装了 Percona XtraDB Cluster MySQL 8.0。您已准备好开始配置 Percona XtraDB Cluster。

停止 Percona XtraDB 集群服务

在开始配置 Percona XtraDB 集群之前,必须确保 MySQL 服务器已停止。

输入以下 systemctl 命令实用程序以停止服务器上的 MySQL 服务器。然后,验证MySQL服务器状态以确保该服务已停止。

sudo systemctl stop mysql

输出“inactive (dead)”确认 MySQL 服务器已停止。

您现在可以开始为第一个节点“pxc01”初始化 Percona XtraDB Cluster。

复制 SSL/TLS 证书

Percona XtraDB Cluster 有两种流量加密:客户端-服务器连接和复制流量。在最新的 Percona XtraDB Cluster v8.0 上,默认情况下启用所有复制流量以增强安全性。

在 Percona XtraDB Cluster 安装期间,会在数据目录“/var/lib/mysql” 中自动生成 SSL/TLS。输入以下命令以检查“/var/lib/mysql” 目录中的 SL/TLS 证书列表。

ls /var/lib/mysql/*.pem

您应该看到三种类型的 SSL/TLS 证书:客户端、服务器和 CA。

要创建和设置 Percona XtraDB Cluster,所有服务器必须具有相同的 CA 和服务器证书。因此,您必须将默认证书 CA 和服务器证书从“pxc01”复制到“pxc02”和“pxc03”。

在“pxc01”服务器上,将工作目录移动到“/var/lib/mysql” 目录。

cd /var/lib/mysql

输入以下 scp 命令将 CA 和服务器证书复制到“pxc02”和“pxc03”服务器。

scp server-key.pem server-cert.pem ca.pem root@pax02:/var/lib/mysql
scp server-key.pem server-cert.pem ca.pem root@pax03:/var/lib/mysql

您将收到与此类似的输出 - 将 CA 和服务器证书从“pxc01”复制到“pxc02”和“pxc03”服务器。

复制 SSL/TLS 证书后,您可以初始化 Percona XtraDB 集群。

在第一个节点上初始化 Percona XtraDB 集群

在本部分中,您将从第一个节点服务器“pxc01”初始化 Percona XtraDB 集群。确保在“pxc01”服务器上运行以下步骤。

使用以下 nano 编辑器命令打开 MySQL 配置文件'/etc/mysql/my.cnf'。

sudo nano /etc/mysql/my.cnf

将以下行添加到文件中。请务必使用所有服务器的 IP 地址更改“wsrep_cluster_address”的值。此外,在“wsrep_node_address”上,您必须输入“pxc01”IP 地址。

[mysqld]
datadir=/var/lib/mysql
user=mysql
# Path to Galera library
wsrep_provider=/usr/lib/libgalera_smm.so
# Cluster connection URL contains the IPs of pxc01, pxc02, and pxc03
wsrep_cluster_address=gcomm://192.168.5.15,192.168.5.16,192.168.5.17
# In order for Galera to work correctly binlog format should be ROW
binlog_format=ROW
# Using the MyISAM storage engine is not recommended.
default_storage_engine=InnoDB
# This InnoDB autoincrement locking mode is a requirement for Galera
innodb_autoinc_lock_mode=2
# Node 1 address
wsrep_node_address=192.168.5.15
# SST method
wsrep_sst_method=xtrabackup-v2
# Cluster name
wsrep_cluster_name=pxc_cluster
#pxc_strict_mode allowed values: DISABLED,PERMISSIVE,ENFORCING,MASTER
pxc_strict_mode=ENFORCING
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

完成后保存并关闭文件'/etc/mysql/my.cnf'。

接下来,运行以下 systemctl 命令来引导并初始化 Percona XtraDB 集群。

“mysql@bootstrap”是一个 systemd 服务,用于运行 Percona XtraDB Cluster,这与“mysql”服务不同。使用 percona XtraDB Cluster 构建 MySQL 服务器时,第一个节点必须使用“mysql@bootstrap”服务运行。

systemctl start [email 

完成后,输入以下 mysql 命令登录 MySQL shell。输入 MySQL 服务器的 root 密码。

sudo mysql -u root -p

输入以下 MySQL 查询以确保集群已初始化。

show status like 'wsrep%';

您应该收到如下输出 - 在“wsrep_cluster_size”部分,您将看到值“1”,这意味着 Percona XtraDB 集群已使用 1 台服务器进行初始化。您还可以在“wsrep_incoming_address”部分获取服务器 IP 地址。最后,节点处于已同步状态,这意味着它已完全连接并准备好进行写集复制。

第一个节点初始化后,您就可以将第二个和第三个节点“pxc02”和“pxc03”添加到 Percona XtraDB 集群。

将 Node2 和 Node3 添加到集群

向 percona XtraDB Cluster 添加新节点与第一个节点上的初始化类似。以下是您需要执行的简单步骤:

  • 修改MySQL配置文件'/etc/mysql/my.cnf'。
  • 启动MySQL服务器
  • 登录 MySQL shell 并验证 Percona XtraDB Cluster。

现在,让我们开始将“pxc02”和“pxc03”添加到 Percona XtraDB Cluster。

添加节点 pxc02

登录到“pxc02”服务器并使用以下 nano 编辑器命令打开 MySQL 配置文件“/etc/mysql/my.cnf”。

sudo nano /etc/mysql/my.cnf

将以下行添加到文件中,并确保将 'wsrep_cluster_address' 的值更改为所有服务器的 IP 地址。此外,在'wsrep_node_address'上,您必须输入“pxc02”IP 地址。

[mysqld]
datadir=/var/lib/mysql
user=mysql
# Path to Galera library
wsrep_provider=/usr/lib/libgalera_smm.so
# Cluster connection URL contains the IPs of pxc01, pxc02, and pxc03
wsrep_cluster_address=gcomm://192.168.5.15,192.168.5.16,192.168.5.17
# In order for Galera to work correctly binlog format should be ROW
binlog_format=ROW
# Using the MyISAM storage engine is not recommended
default_storage_engine=InnoDB
# This InnoDB autoincrement locking mode is a requirement for Galera
innodb_autoinc_lock_mode=2
# Node #2 address
wsrep_node_address=192.168.5.16
# Cluster name
wsrep_cluster_name=pxc_cluster
# SST method
wsrep_sst_method=xtrabackup-v2
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

完成后保存并关闭文件“/etc/mysql/my.cnf”。

接下来,通过输入以下 systemctl 命令实用程序来启动 MySQL 服务器。然后验证 MySQL 服务器状态以确保其正在运行。

这将启动 MySQL 服务并加入“pxc01”服务器上已初始化的 Percona XtraDB 集群。

sudo systemctl start mysql
sudo systemctl status mysql

要验证该过程是否成功,您应该登录 MySQL shell。输入以下命令以root用户登录MySQL shell。出现提示时,输入您的 MySQL root 密码。

sudo mysql -u root -p

登录后,输入以下 MySQL 查询来验证 Percona XtraDB Cluster 状态。

show status like 'wsrep%';

您应该收到如下输出 - 在“wsrep_cluster_size”部分,您将看到值“2”,,这意味着 Percona XtraDB 集群上有两台可用的服务器。您还将在“wsrep_incoming_address”部分获取服务器 IP 地址,即 pxc01 和 pxc02 服务器 IP 地址。最后,节点处于已同步状态,这意味着它已完全连接并准备好进行写集复制。

这样,Percona XtraDB 集群现在正在使用两个节点/服务器 pxc01 和 pxc02 运行。接下来,移动到 pxc03 服务器以将其添加到 Percona XtraDB 集群。

添加节点 pxc03

登录到“pxc03”服务器并使用以下 nano 编辑器命令打开 MySQL 配置文件“/etc/mysql/my.cnf”。

sudo nano /etc/mysql/my.cnf

将以下行添加到文件中,并确保将“wsrep_cluster_address”的值更改为所有服务器的 IP 地址。此外,在“wsrep_node_address”上,您必须输入“pxc03”IP 地址。

[mysqld]
datadir=/var/lib/mysql
user=mysql
# Path to Galera library
wsrep_provider=/usr/lib/libgalera_smm.so
# Cluster connection URL contains the IPs of pxc01, pxc02, and pxc03
wsrep_cluster_address=gcomm://192.168.5.15,192.168.5.16,192.168.5.17
# In order for Galera to work correctly binlog format should be ROW
binlog_format=ROW
# Using the MyISAM storage engine is not recommended
default_storage_engine=InnoDB
# This InnoDB autoincrement locking mode is a requirement for Galera
innodb_autoinc_lock_mode=2
# Node #2 address
wsrep_node_address=192.168.5.17
# Cluster name
wsrep_cluster_name=pxc_cluster
# SST method
wsrep_sst_method=xtrabackup-v2
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

完成后保存并关闭文件“/etc/mysql/my.cnf”。

接下来,通过输入以下 systemctl 命令实用程序来启动 MySQL 服务器。然后验证 MySQL 服务器状态以确保其正在运行。

这将启动 MySQL 服务并加入 Percona XtraDB 集群。

sudo systemctl start mysql

要验证该过程是否成功,您应该登录 MySQL shell。输入以下命令以root用户登录MySQL shell。出现提示时,输入您的 MySQL root 密码。

sudo mysql -u root -p

登录后,输入以下 MySQL 查询来验证 Percona XtraDB Cluster 状态。

show status like 'wsrep%';

您应该收到如下输出 - 在“wsrep_cluster_size”部分,您将看到值“3”,这意味着 Percona XtraDB 集群上有三台服务器可用。您还将在“wsrep_incoming_address”部分获取服务器 IP 地址,即 pxc01、pxc02 和 pxc03 > 服务器 IP 地址。最后,节点处于已同步状态,这意味着它已完全连接并准备好进行写集复制。

至此,Percona XtraDB 集群现在在三台 Debian 服务器 pxc01、pxc02 和 pxc03 上运行。您现在已经完成了具有三台 Debian 11 服务器的 Percona XtraDB 集群的部署。在下一步中,您将验证 Percona XtraDB Cluster 服务器之间的数据库复制。

测试复制

从“pxc02”服务器登录到 MySQL shell,并创建一个新数据库“percona”。

sudo mysql -u root -p
CREATE DATABASE percona;

现在转到“pxc03”服务器,通过 MySQL root 用户登录 MySQL shell,然后切换到您从“”创建的数据库“percona” pxc02'服务器。

sudo mysql -u root -p
USE percona;

成功后,您应该收到诸如“数据库已更改”之类的输出。这也证实了数据库“percona”是跨 Percona XtraDB Cluster 服务器复制的。

接下来,运行以下 MySQL 查询以从“pxc03”服务器创建新表“example”。

CREATE TABLE example (node_id INT PRIMARY KEY, node_name VARCHAR(30));

然后,再次移至“pxc01”服务器并运行以下查询以将新数据插入“percona”数据库。

INSERT INTO percona.example VALUES (1, 'pxc01');
INSERT INTO percona.example VALUES (2, 'pxc02');
INSERT INTO percona.example VALUES (3, 'pxc03');

最后,返回“pxc02”服务器并运行以下查询以从数据库“percona”和表“example”检索数据'。

SELECT * FROM percona.example;

您应该收到如下输出 - The data is available on the 'pxc02' Percona XtraDB Cluster。这样,percona XtraDB Cluster 服务器之间的复制就可以正常工作,这意味着您在 Debian 11 服务器上的 Percona XtraDB Cluster 部署也成功了。

结论

在本教程中,您已经安装并配置了具有三台 Debian 11 服务器的 Percona XtraDB Cluster。您已初始化 Percona XtraDB 集群并向 Percona XtraDB 集群添加两个节点/服务器。此外,您还通过 ufw 防火墙保护 Percona XtraDB Cluster 的安全。

除此之外,您还通过使用 SSL/TLS 证书加密所有服务器之间的流量来保护 Percona XtraDB Cluster。这是通过默认启用的选项“pxc-encrypt-cluster-traffic”来实现的。

有了这个,您现在可以开始使用您学到的步骤向 Percona XtraDB 集群添加更多服务器,并添加其他节点,以在 Percona XtraDB 集群上实现高可用性和负载平衡。要了解更多信息,请访问 Percona XtraDB Cluster 官方文档。

©2015-2025 Norria support@norria.com