第 1 步:禁用 SELinux
在所有 3 个 Percona 节点上,我们必须禁用 SELinux
[jack@onitroad ~]# sed -i -e 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config
第 4 步:安装 Percona XtraDB 集群
- 安装 Percona 仓库包:
[jack@onitroad ~]# yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
- 现在使用以下命令安装 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
为 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