如何在 CentOS 7 上安装 Percona XtraDB 集群
在此页
- 第 1 步 - 设置主机文件
- 第 2 步 - 配置防火墙
- 第 3 步 - 安装 Epel 存储库和 Socat
- 第 4 步 - 安装 Percona XtraDB 集群
- 第 5 步 - 配置 Percona XtraDB 集群
- 第 6 步 - 启动 Percona XtraDB 集群服务器
- 第 7 步 - 测试
- 参考资料
在本教程中,我将向您展示如何在 CentOS 7 服务器上安装和配置 Percona XtraDB Cluster。我们将使用与 MySQL 和 Percona Server 完全兼容的 Percona XtraDB Cluster 5.6。
Percona 是一家由 MySQL 和 MongoDB 数据库专家组成的公司,成立于 2006 年。Percona 为 MySQL 和 MongoDB 构建和维护开源软件:Percona Server(具有高可用性性能增强功能的 MySQL 数据库服务器)、Percona XtraDB Cluster(用于 MySQL 的高可用性解决方案集群)、Percona Server for MongoDB 和其他用于管理数据库的工具,例如 Percona 工具包、Percona 监控工具和 Percona XtraBackup。
先决条件
- 3 个 CentOS 7 服务器节点。
- 根特权。
- 基本的 CentOS 7 知识。
第 1 步 - 设置主机文件
首先要做的是配置所有服务器的主机名。我有 3 台装有 CentOS 7 的服务器,如下所列:
Node Server IP Hostname
Node1 - 192.168.43.36 percona1
Node2 - 192.168.43.166 percona2
Node3 - 192.168.43.148 percona3
使用您的终端连接到所有服务器:
ssh
如果您已登录所有服务器,请使用 vim 编辑每个服务器上的 /etc/hosts 文件:
vim /etc/hosts
粘贴下面的主机配置:
192.168.43.36 percona1
192.168.43.166 percona2
192.168.43.148 percona3
将 IP 地址替换为与您的本地网络配置匹配的 IP 地址。保存并退出。

第 2 步 - 配置 Firewalld
firewalld 是 CentOS 7 上新的默认防火墙界面。 firewall-cmd 命令用于配置防火墙。我们可以定义和配置特定的组或区域,或者我们可以为 ssh、MySQL 数据库、nginx/apache 网络服务器等服务配置防火墙。
在此步骤中,我们将使用 firewalld 进行防火墙配置。我们将使用 firewall-cmd 命令打开 percona 服务器端口和集群所需的其他端口。
使用此 systemctl 命令启动 firewalld:
systemctl start firewalld
然后运行以下命令打开MySQL/percona服务器使用的端口:
firewall-cmd --zone=public --add-service=mysql --permanent
接下来,使用以下命令为集群添加其他端口:
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 --zone=public --add-port=4567/udp --permanent
重新加载防火墙规则:
firewall-cmd --reload
要查看所有防火墙规则的列表,请使用选项 --list-all:
firewall-cm --list-all

第 3 步 - 安装 Epel 存储库和 Socat
为了让 Percona XtraDB Cluster 在服务器上运行,我们需要安装 socat,它在 epel-repository 中可用。所以我们需要先安装epel仓库,再安装socat。此外,我们必须从服务器中删除 mariadb-libs,因为它们与 Percona XtraDB 集群冲突。
安装 epel-repository 和 socat:
yum -y install epel-release
yum -y install socat
删除 mariadb-libs 以避免 mariadb-libs 和 Percona XtraDB Cluster 之间的包冲突:
yum -y remove mariadb-libs
Epel 存储库和 socat 已安装。
第 4 步 - 安装 Percona XtraDB 集群
在此步骤中,我们将安装 Percona xtradb 集群以及所有包依赖项。我们需要为安装添加 Percona 存储库,然后我们启动 Percona 服务器并为数据库服务器配置 root 用户和密码。
使用 yum 安装 Percona 存储库:
yum -y install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
现在安装 Percona XtraDB 集群和本教程所需的其他包:
yum install Percona-XtraDB-Cluster-server-56 Percona-XtraDB-Cluster-client-56 Percona-XtraDB-Cluster-shared-56 percona-toolkit percona-xtrabackup Percona-XtraDB-Cluster-galera-3 rsync nc
安装 Percona XtraDB Cluster,使用 zhis systemctl 命令启动 Percona 服务器:
systemctl start mysql
接下来,为所有 percona/mysql 服务器配置 root 密码:
mysql_secure_installation
设置 percona/mysql 密码:
Enter current password for root (enter for none): PRESS ENTER
Set root password? [Y/n] Y
New password: TYPE YOUR PASSWORD
Re-enter new password: REPEAT PASSWORD
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Reload privilege tables now? [Y/n] Y
笔记:
在所有 3 CentOS 服务器上运行步骤 1 - 4。
第 5 步 - 配置 Percona XtraDB 集群
在第 4 步中,我们已经安装了 Percona XtraDB Cluster 并为所有 Percona/Mysql 服务器节点配置了 root 密码。在这一步中,我们将为 SST 身份验证创建一个新用户,并在每个服务器上编辑 MySQL 配置 my.cnf。
SST(State Snapshot Transfer)是从一台服务器作为捐赠者到另一台服务器作为加入者的完整数据副本。对于 SST 身份验证,我们需要创建一个名为 sstuser 的新用户,密码为 [email 。对于 SST 方法,我们将使用 xtrabackup-v2 而不是 rsync。请为您的集群使用不同的安全密码!
登录到每台服务器上的 percona/mysql shell:
mysql -u root -p
TYPE YOUR PASSWORD
并使用密码 [email 创建新的 sstuser:
create user '%';
flush privileges;

然后在编辑配置文件之前停止每台服务器上的 MySQL 服务:
systemctl stop mysql
接下来,用vim编辑器编辑每台服务器上的mysql配置文件my.cnf。
在 Percona1 服务器上:
vim /etc/my.cnf
使用以下配置更改所有 wsrep 行:
wsrep_cluster_address = gcomm://
wsrep_provider = /usr/lib64/galera3/libgalera_smm.so
wsrep_slave_threads = 8
wsrep_cluster_name = Cluster Percona XtraDB
wsrep_node_name = percona1
wsrep_node_address = percona1
wsrep_sst_method = xtrabackup-v2
wsrep_sst_auth = sstuser:
保存并退出。
在 Percona2 服务器上:
vim /etc/my.cnf
使用以下配置更改所有 wsrep 行:
wsrep_cluster_address = gcomm://percona1,percona3
wsrep_provider = /usr/lib64/galera3/libgalera_smm.so
wsrep_slave_threads = 8
wsrep_cluster_name = Cluster Percona XtraDB
wsrep_node_name = percona2
wsrep_node_address = percona2
wsrep_sst_method = xtrabackup-v2
wsrep_sst_auth = sstuser:
保存并退出。
在 Percona3 服务器上:
vim /etc/my.cnf
使用以下配置更改所有 wsrep 行:
wsrep_cluster_address = gcomm://percona1,percona2
wsrep_provider = /usr/lib64/galera3/libgalera_smm.so
wsrep_slave_threads = 8
wsrep_cluster_name = Cluster Percona XtraDB
wsrep_node_name = percona3
wsrep_node_address = percona3
wsrep_sst_method = xtrabackup-v2
wsrep_sst_auth = sstuser:
保存并退出。
来自 percona2 服务器的屏幕截图。

第 6 步 - 启动 Percona XtraDB 集群服务器
我们已经在所有服务器上配置了 Percona XtraDB 集群,现在我们可以启动服务器了。
在 Percona1 服务器上,引导或启动并运行集群:
systemctl start
接下来,使用以下命令在 percona2 和 percona3 服务器上启动 Percona/MySQL 服务器:
systemctl start mysql
确保没有错误消息。如果在键入启动 MySQL 后出现错误,请检查日志文件 /var/log/messages。
第 7 步 - 测试
我们必须登录到每台服务器上的 percona/mysql shell 以测试 Percona XtraDB 集群。
在所有服务器/节点上登录到 Percona/MySQL shell:
mysql -u root -p
TYPE YOUR PASSWORD
使用 mysql 命令测试高可用性:
SHOW STATUS LIKE 'wsrep_local_state_comment';
在每个节点上尝试该命令,如果您看到“已同步”作为结果,则该节点已准备好处理流量。
测试集群的可用节点:
show global status like 'wsrep_cluster_size';
您将获得 Percona 集群中的当前节点数。

要获得完整结果,您可以使用以下命令:
show global status like 'wsrep%';
参考
- <李>
- http://galeracluster.com/documentation-webpages/firewalld.html