在本教程中,我将向您介绍如何在CentOS 7服务器上安装和配置Percona XtraDB Cluster。 我们将使用与MySQL和Percona Server完全兼容的Percona XtraDB Cluster 5.6。
Percona是MySQL和MongoDB数据库专家公司,成立于2006年。Percona为MySQL和MongoDB构建和维护开源软件:Percona服务器(MySQL数据库服务器,具有高可用性性能增强),Percona XtraDB集群(MySQL的高可用性解决方案集群),用于MongoDB的Percona服务器和用于管理数据库的其他工具,如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 root@serverip
如果您已登录所有服务器,请使用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 web服务器等服务配置防火墙。
在这一步中,我们将使用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 Repository和Socat
要在服务器上运行Percona XtraDB集群,我们需要安装socat,并且可以在epel-repository中使用。 所以我们需要首先安装Epel存储库,然后安装socat。 此外,我们必须从服务器中删除mariadb-lib,因为它们与Percona XtraDB集群冲突。
安装epel-repository和socat:
yum -y install epel-release
yum -y install socat
删除mariadb-libs以避免mariadb-lib和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集群,使用zhis systemctl命令启动Percona服务器:
systemctl start mysql
接下来,配置所有percona / mysql服务器的根密码:
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集群,并为所有Percona / Mysql服务器节点配置了root密码。 在此步骤中,我们将为SST身份验证创建一个新用户,并在每个服务器上编辑MySQL配置my.cnf。
SST(状态快照传输)是作为提供者的一个服务器作为连接器的完整数据副本。 对于SST身份验证,我们需要创建一个名为'sstuser'
的新用户,密码为'sstuser @'
。 对于SST方法,我们将使用xtrabackup-v2而不是rsync。 请为您的群集使用不同且安全的密码!
登录到每个服务器上的percona / mysql shell:
mysql -u root -p
TYPE YOUR PASSWORD
并用密码'sstuser @'
创建新的'sstuser
'
:
create user sstuser@'%' identified by 'mypass@';
grant all on *.* to sstuser@'%';
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:mypass@
保存并退出。
在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:mypass@
保存并退出。
在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:mypass@
保存并退出。
percona2服务器的屏幕截图 。
第6步 - 启动Percona XtraDB群集服务器
我们已经在所有服务器上配置了Percona XtraDB集群,现在我们可以启动服务器。
在Percona1服务器上,启动或启动集群并运行:
systemctl start mysql@bootstrap
接下来,使用以下命令在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%';