原作者:Muhammad Arul 转载&翻译来源:https://www.howtoforge.com/tutorial/how-to-install-percona-xtradb-cluster-on-centos-7/
在本教程中,我将向您展示如何在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 Server和用于管理数据库的其他工具,如Percona工具包,Percona监控工具和Percona XtraBackup。
首先要做的是配置所有服务器的主机名。我有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连接成功
ssh -p 22 root@serverip
如果您已登录所有服务器,请 使用vim 编辑每个服务器上的“/ etc / hosts”文件:
vim /etc/hosts
粘贴下面的主机配置:
# 在三台服务器上,配置您的hosts文件,这样可以通过hostname来连接目标主机
192.168.43.36 percona1
192.168.43.166 percona2
192.168.43.148 percona3
将IP地址替换为与本地网络配置匹配的IP地址。保存并退出。
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
要在服务器上运行Percona XtraDB集群,我们需要安装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。
在此步骤中,我们将安装具有所有程序包依赖性的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。
在第4步中,我们已经安装了Percona XtraDB Cluster并为所有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服务器的屏幕截图。
我们在所有服务器上配置了Percona XtraDB集群,现在我们可以启动服务器了。
在Percona1服务器上,启动或启动并运行集群:
systemctl start mysql@bootstrap
接下来,使用以下命令在percona2和percona3服务器上启动Percona / MySQL服务器:
systemctl start mysql
确保没有错误消息。如果在键入以启动MySQL后出现错误,请检查日志文件 '/ var / log / messages'。
我们必须登录每台服务器上的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%';