前言

我这里使用三台CentOS Linux release 7.8.2003的虚拟机来作演示

[root@n1 ~]# cat /etc/redhat-release

CentOS Linux release 7.8.2003 (Core)

安装前准备

请确保服务器没有安装MySQL,如果已经安装了请先卸载(后面会起冲突)

删除 MariaDB

这里我的服务器版本为 Centos 7.x ,需要删除自带的 MariaDB 数据库,避免对后面安装造成影响

yum -y remove mari*

开放访问墙端口

#MySQL 对外提供服务的端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent

#请求进行全量同步(SST)的端口

firewall-cmd --zone=public --add-port=4444/tcp --permanent

#集群中各个节点间的通讯端口

firewall-cmd --zone=public --add-port=4567/tcp --permanent

#请求进行增量同步(IST)的端口

firewall-cmd --zone=public --add-port=4568/tcp --permanent

firewall-cmd --reload

关闭SELINUX

SELinux 安全模块可能会限制对 Percona XtraDB Cluster 的数据访问。

此时可以在运行时使用 setenforce 0 命令进行更改.

也可以通过修改 /etc/selinux/config 文件中的 SELINUX 属性的值为 disabled 从而进行永久性的更改:

vi /etc/selinux/config

SELINUX=disabled

c3748c803745b7c623823f0191bd2546.png

修改完成后需要重启服务器:reboot

安装依赖

yum install -y libaio

请记住,PXC软件包其实是带Galera组件的percona server集合,请勿再重复下载percona server,更不要下载其他mysql版本,因为只有percona server可以搭建PXC集群!

安装前请确定你的openssl版本

4abf9d10568f8018ebfe2386c3e4f456.png

我这里的openssl版本为1.0.2

5e9a05912076ce17855ceabbf3c5fcb3.png

开始安装

官网下载链接(MySQL5.7.30):

使用wget命令下载(这里使用的是私有云的链接)

wget http://oss.jiugell.com/toolBox/63a9f0ea7bb98050796b649e85481845/software/pxc/Percona-XtraDB-Cluster-5.7.30-rel33-43.1.Linux.x86_64.ssl102.tar.gz

下载完成后解压

tar -zxvf Percona-XtraDB-Cluster-5.7.30-rel33-43.1.Linux.x86_64.ssl102.tar.gz -C /opt

ln -s /opt/Percona-XtraDB-Cluster-5.7.30-rel33-43.1.Linux.x86_64.ssl102/ /usr/local/mysql

groupadd mysql

useradd -M -g mysql -s /sbin/nologin -d /usr/local/mysql mysql

mkdir -p /database/mysql/data/3306

chown mysql:mysql /database/mysql/data/3306 -R

echo 'export PATH=/usr/local/mysql/bin/:$PATH' >>/etc/profile

source /etc/profile

d19c8ff3cb8aaa71723077ba75c98686.png

以上的操作每台机器都要配置

配置文件

编辑my.cnf : vim /etc/my.cnf

192.168.1.71的配置内容如下:

### pxc1 | 192.168.1.71

### 右边#号的是percona server默认值

[mysqld]

####: mysqld基本设置

user =mysql # mysql

basedir =/usr/local/mysql/ # /usr/local/mysql/

datadir =/database/mysql/data/3306 # /usr/local/mysql/data

character_set_server =utf8 # latin1

log_timestamps =system # utc

skip_name_resolve =1 # 0

lower_case_table_names =1 # 0

####: pxc必须满足的

server-id =71 # 0 #注意三台服务器的设置不同

binlog_format =row # row

default_storage_engine =InnoDB # InnoDB

innodb_autoinc_lock_mode =2 # 1

#### pxc配置

wsrep_node_name=pxc1 #注意三台服务器的设置不同。可以不配置,不配置时默认取hostname

wsrep_node_address=192.168.1.71:4567 #注意三台服务器的设置不同。可以不加端口,默认就是4567的pxc通讯端口,请注意不是mysql的3306监听端口!

wsrep_provider=/usr/local/mysql/lib/libgalera_smm.so

wsrep_cluster_name=pxc-cluster

wsrep_cluster_address=gcomm://192.168.1.71:4567,192.168.1.72:4567,192.168.1.73:4567

wsrep_sst_method=xtrabackup-v2

wsrep_sst_auth=sstuser:passw0rd

pxc_strict_mode=ENFORCING

192.168.1.72的配置内容如下:

### pxc2 | 192.168.1.72

### 右边#号的是percona server默认值

[mysqld]

####: mysqld基本设置

user =mysql # mysql

basedir =/usr/local/mysql/ # /usr/local/mysql/

datadir =/database/mysql/data/3306 # /usr/local/mysql/data

character_set_server =utf8 # latin1

log_timestamps =system # utc

skip_name_resolve =1 # 0

lower_case_table_names =1 # 0

####: pxc必须满足的

server-id =72 # 0 #注意三台服务器的设置不同

binlog_format =row # row

default_storage_engine =InnoDB # InnoDB

innodb_autoinc_lock_mode =2 # 1

#### pxc配置

wsrep_node_name=pxc2 #注意三台服务器的设置不同。可以不配置,不配置时默认取hostname

wsrep_node_address=192.168.1.72:4567 #注意三台服务器的设置不同。可以不加端口,默认就是4567的pxc通讯端口,请注意不是mysql的3306监听端口!

wsrep_provider=/usr/local/mysql/lib/libgalera_smm.so

wsrep_cluster_name=pxc-cluster

wsrep_cluster_address=gcomm://192.168.1.71:4567,192.168.1.72:4567,192.168.1.73:4567

wsrep_sst_method=xtrabackup-v2

wsrep_sst_auth=sstuser:passw0rd

pxc_strict_mode=ENFORCING

192.168.1.73的配置内容如下:

### pxc3 | 192.168.1.73

### 右边#号的是percona server默认值

[mysqld]

####: mysqld基本设置

user =mysql # mysql

basedir =/usr/local/mysql/ # /usr/local/mysql/

datadir =/database/mysql/data/3306 # /usr/local/mysql/data

character_set_server =utf8 # latin1

log_timestamps =system # utc

skip_name_resolve =1 # 0

lower_case_table_names =1 # 0

####: pxc必须满足的

server-id =73 # 0 #注意三台服务器的设置不同

binlog_format =row # row

default_storage_engine =InnoDB # InnoDB

innodb_autoinc_lock_mode =2 # 1

#### pxc配置

wsrep_node_name=pxc3 #注意三台服务器的设置不同。可以不配置,不配置时默认取hostname

wsrep_node_address=192.168.1.73:4567 #注意三台服务器的设置不同。可以不加端口,默认就是4567的pxc通讯端口,请注意不是mysql的3306监听端口!

wsrep_provider=/usr/local/mysql/lib/libgalera_smm.so

wsrep_cluster_name=pxc-cluster

wsrep_cluster_address=gcomm://192.168.1.71:4567,192.168.1.72:4567,192.168.1.73:4567

wsrep_sst_method=xtrabackup-v2

wsrep_sst_auth=sstuser:passw0rd

pxc_strict_mode=ENFORCING

b51ce73d182bfbf8a0a1b9e98575b9ff.png

安装xtrabackup

选择对应系统的版本

d5399370b42dc6cac24cfcb2cf00f154.png

下载完成后安装

wget http://oss.jiugell.com/toolBox/63a9f0ea7bb98050796b649e85481845/software/pxc/percona-xtrabackup-24-2.4.20-1.el7.x86_64.rpm

yum -y install percona-xtrabackup-24-2.4.20-1.el7.x86_64.rpm

yum -y install qpress socat

各节点MySQL初始化

mysqld --defaults-file=/etc/my.cnf --initialize-insecure

b9f99602ac8edde03f0c1dc2335620f7.png

引导第一个节点(192.168.1.71)

尝试后台启动mysql

mysqld_safe --defaults-file=/etc/my.cnf --wsrep-new-cluster &

启动成功后开始配置MySQL

mysql> set password='passw0rd';

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'passw0rd' WITH GRANT OPTION;

mysql> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'passw0rd';

mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';

mysql> FLUSH PRIVILEGES;

# 账号、密码,要和配置文件的wsrep_sst_auth=sstuser:passw0rd 对应

9e49338f93137bd13170afa8ae34bd6c.png

引导第二、三个节点

尝试后台启动mysql

mysqld_safe --defaults-file=/etc/my.cnf &

520f07e6bde6a6b0e0a53e6568a983fb.png

查看一下关于Write-Set Replication的参数:

show status like 'wsrep%';

8a5775d5ea146d1d4f5d8bbe3c2e3892.png

这里的 wsrep_cluster_status 为集群状态 ,wsrep_cluster_size 为集群数量

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐