第 1 步:禁用 SELinux

在所有 3 个 Percona 节点上,我们必须禁用 SELinux

[jack@onitroad ~]# sed -i -e 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config

第 4 步:安装 Percona XtraDB 集群

  1. 安装 Percona 仓库包:
[jack@onitroad ~]# yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
  1. 现在使用以下命令安装 Percona XtraDB Cluster 包:
[jack@onitroad ~]# yum install Percona-XtraDB-Cluster-56 -y

安装完成后 Percona XtraDB Cluster 使用 mysql_secure_installation 工具设置 root 密码。

[jack@onitroad ~]# mysql_secure_installation

第 3 步:删除冲突包

为避免安装 Percona XtraDB Cluster 过程中发生任何冲突,我们需要使用以下命令删除所有 3 个节点上的 mysql-libs 或者 mariadb-libs 包:

[jack@onitroad ~]# yum remove mariadb-libs -y

第 6 步:在第二个节点上配置 Percona XtraDB Cluster

确保 Percona XtraDB Cluster 服务器没有运行并在 /etc/my.cnf 文件中添加以下 Write-Set Replication 配置变量

[jack@onitroad ~]# cp /etc/my.cnf{,.org}
[jack@onitroad ~]# vi /etc/my.cnf
user=mysql
wsrep_provider=/usr/lib64/libgalera_smm.so
wsrep_cluster_address=gcomm://192.168.1.10,192.168.1.11,192.168.1.12
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
wsrep_node_address=192.168.1.11
# SST method
wsrep_sst_method=xtrabackup-v2
# Cluster name
wsrep_cluster_name=cluster
# Authentication for SST method
wsrep_sst_auth="sstuser:s3cret"

使用以下命令启动第二个节点:

[jack@onitroad ~]# systemctl start mysql

使用以下命令检查集群状态:

[jack@onitroad ~]# mysql -u root -p
mysql> show global status like 'wsrep%';

环境

该实验室将由三个 CentOS 7 服务器/节点和一个 HAProxy 负载均衡器组成。

  • 节点 1
  • 主机名:pxc01.onitroad.com
  • IP 地址:192.168.1.10
  • 节点 2
  • 主机名:pxc02.onitroad.com
  • IP 地址:192.168.1.11
  • 节点 3
  • 主机名:pxc03.onitroad.com
  • IP地址:192.168.1.12
  • 节点 1
  • 主机名:lb01.onitroad.com
  • IP 地址:192.168.1.5

第 2 步:防火墙调整

在所有 3 个 Percona 节点上,我们必须配置防火墙以允许连接到端口 3306、4444、4567 和 4568

[jack@onitroad ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
success
[jack@onitroad ~]# firewall-cmd --zone=public --add-port=4567/tcp --permanent
success
[jack@onitroad ~]# firewall-cmd --zone=public --add-port=4567/udp --permanent
success
[jack@onitroad ~]# firewall-cmd --zone=public --add-port=4568/tcp --permanent
success
[jack@onitroad ~]# firewall-cmd --zone=public --add-port=4444/tcp --permanent
success
[jack@onitroad ~]# firewall-cmd --reload
success

第 8 步:复制测试

为了测试复制,我们将在第一个节点上创建一个新数据库,在第二个节点上为该数据库创建一个表,并将一些记录添加到第三个节点上的表中。

1在第一个节点上创建clustertest数据库:

[jack@onitroad ~]# mysql -u root -p
mysql> CREATE DATABASE clustertest;
Query OK, 1 row affected (0.01 sec)

2在第二个节点上为clustertest数据库创建一个employees表:

[jack@onitroad ~]# mysql -u root -p
mysql> CREATE TABLE clustertest.employees(number int, name varchar(50));
Query OK, 1 row affected (0.01 sec)

3在第三个节点的employees表中添加一些记录:

[jack@onitroad ~]# mysql -u root -p
mysql> INSERT INTO clustertest.employees values(1,'Waderni Lotfi');
Query OK, 1 row affected (0.01 sec)

4使用以下查询检查所有 3 个节点上的复制数据:

mysql> SHOW DATABASES;
mysql> SELECT * FROM clustertest.employees;

第 7 步:在第三个节点上配置 Percona XtraDB Cluster

打开 /etc/my.cnf 文件并添加以下 Write-Set Replication 配置变量

[jack@onitroad ~]# cp /etc/my.cnf{,.org}
[jack@onitroad ~]# vi /etc/my.cnf
user=mysql
wsrep_provider=/usr/lib64/libgalera_smm.so
wsrep_cluster_address=gcomm://192.168.1.10,192.168.1.11,192.168.1.12
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
wsrep_node_address=192.168.1.12
# SST method
wsrep_sst_method=xtrabackup-v2
# Cluster name
wsrep_cluster_name=cluster
# Authentication for SST method
wsrep_sst_auth="sstuser:s3cret"

使用以下命令启动第三个节点:

[jack@onitroad ~]# systemctl start mysql
在 CentOS 7/RHEL 7 上安装和配置 Percona XtraDB 集群高可用性(1)

为 MySQL 选择高可用性解决方案以防止停机和数据丢失,确实是 IT 系统管理员需要处理的重要课题之一。
今天,我们将介绍 Percona XtraDB Cluster,这是市场上的 MYSQL 高可用性解决方案之一。

我们将介绍如何在 3 个 CentOS 7/RHEL 7 节点上安装和配置 Percona XtraDB 集群。

第 5 步:在第一个节点上配置 Percona XtraDB Cluster

在开始配置之前确保 Percona XtraDB Cluster 服务器没有运行

[jack@onitroad ~]# systemctl stop mysql

打开 /etc/my.cnf 文件并添加以下 Write-Set Replication 配置变量

[jack@onitroad ~]# cp /etc/my.cnf{,.org}
[jack@onitroad ~]# vi /etc/my.cnf
user=mysql
wsrep_provider=/usr/lib64/libgalera_smm.so
wsrep_cluster_address=gcomm://192.168.1.10,192.168.1.11,192.168.1.12
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
wsrep_node_address=192.168.1.10
# SST method
wsrep_sst_method=xtrabackup-v2
# Cluster name
wsrep_cluster_name=cluster
# Authentication for SST method
wsrep_sst_auth="sstuser:s3cret"

使用以下命令启动第一个节点:

[jack@onitroad ~]# systemctl start jack@onitroad

在第一个节点启动后,我们可以使用以下命令检查集群状态:

[jack@onitroad ~]# mysql -u root -p
mysql> show global status like 'wsrep%';
+----------------------------+--------------------------------------+
| Variable_name              | Value                                |
+----------------------------+--------------------------------------+
| wsrep_local_state_uuid     | c2883338-834d-11e2-0800-03c9c59e41ec |
...
| 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)

现在让我们为 XtraBackup 复制创建 SST(状态快照传输)用户:

mysql> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 's3cret';
mysql> GRANT PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> exit
日期:2020-06-02 22:18:35 来源:oir作者:oir