说明
仅记录安装部署过程
不保证
ctrl+c
和ctrl+v
可以跑起来,自己判断哪些要改的!操作系统使用的
CentOS-7.6.1810 x86_64
Percona XtraDB Cluster版本使用
【根据自己的环境灵活调整,生产环境请务必提供独立数据盘!】57-5.7.25-31.35.1.el7
集群架构模型
多主复制模型
环境准备
服务器配置
主机名 | IP地址 |
---|---|
db1 | 172.16.80.201 |
db2 | 172.16.80.202 |
db3 | 172.16.80.203 |
关闭SELINUX
1 | sed -i 's,SELINUX=enforcing,SELINUX=disabled,' /etc/selinux/config |
关闭防火墙
1 | systemctl stop firewalld |
添加sysctl参数
1 | cat > /etc/sysctl.d/99-centos.conf <<EOF |
limits参数
1 | cat > /etc/security/limits.d/99-mysql.conf <<EOF |
更新系统软件
1 | yum update -y |
重启服务器
可选
1 | reboot |
安装部署
获取安装包
可以通过配置YUM源或者直接下载RPM包安装
配置YUM源
- YUM源配置方法可以看官方教程
1 | yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm |
下载安装包
- 官方下载页面链接在这里
1 | wget https://www.percona.com/downloads/Percona-XtraDB-Cluster-LATEST/Percona-XtraDB-Cluster-5.7.25-31.35/binary/redhat/7/x86_64/Percona-XtraDB-Cluster-devel-57-5.7.25-31.35.1.el7.x86_64.rpm |
- 手动安装YUM包
1 | yum localinstall -y *rpm |
初始化数据库
注意!这里的初始化操作可以在集群任意节点进行,这里为了方便,在
db1
上进行操作
1 | systemctl start mysql.service |
启动完成后之后,需要获取临时密码
1 | grep 'temporary password' /var/log/mysqld.log |
使用
mysql_secure_installation
初始化MySQL数据库
- 修改root密码
- 修改密码复杂度要求
- 禁止root远程登录
- 删除匿名用户和测试数据
- 刷新权限
1 | mysql_secure_install |
登录数据库
1 | mysql -u root -p |
创建SST用户并授权
1 | CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'sstuser_password'; |
关闭数据库
1 | systemctl stop mysql.service |
配置Galera
配置过程参照官方文档
额外定义一些参数
节点1
清理一下配置文件
1 | find /etc/my.cnf.d/ -type f -name *cnf |
将配置内容合并
1 | Template my.cnf for PXC |
节点2
配置过程跟节点1大体上是一样,区别在于要修改某些配置项
1 | [mysql] |
节点3
配置过程跟节点1一样,区别在于要修改某些配置项
1 | [mysql] |
初始化PXC集群
节点1
作为集群第一个节点引导启动集群,此节点必须包含完整的数据!否则会出现数据不一致
这里以节点1作为bootstrap node
1 | systemctl start mysql@bootstrap.service |
启动完成之后,可以查看日志
1 | tail -f /var/log/mysql/error.log |
在看到ready for connection就可以启动其他节点了
1 | YYYY-MM-DDTHH:mm:ss.534955Z 0 [Note] /usr/sbin/mysqld: ready for connections. |
节点2
启动数据库
1 | systemctl start mysql.service |
节点3
启动数据库
1 | systemctl start mysql.service |
注意
如果提示
WSREP: Failed to prepare for 'xtrabackup-v2' SST. Unrecoverable.
那么可以将配置文件里面的
wsrep_sst_method=xtrabackup-v2
修改为wsrep_sst_method=rsync
然后再重新初始化集群
检查集群启动状态
登录数据库
1 | mysql -u root -p |
检查wsrep节点数量
1 | show global status like 'wsrep_cluster_size'; |
检查wsrep集群信息
1 | show global status like 'wsrep%'; |
简单验证集群
在节点1创建数据库
1 | mysql@db1> CREATE DATABASE percona_test; |
在节点2上创建表
1 | mysql@db2> USE percona_test; |
在节点2上插入数据
1 | mysql@db2> INSERT INTO percona_test.example VALUES (2, 'db2'); |
在节点3上查数据
1 | mysql@db3> SELECT * FROM percona_test.example; |
集群维护操作
集群整体关机
- 按顺序逐台关停,例如db1→db2→db3
集群整体开机
- 启动时,则按照db3→db2→db1
- 其中db3启动时,需要作为bootstrap node引导集群
systemctl start mysql@bootstrap.service
- 其中db3启动时,需要作为bootstrap node引导集群
集群少数节点维护
- PXC集群能容忍少数节点离线而不影响集群数据库服务
- 这里的少数节点是指少于50%,即< 50%
- 少数节点重新上线之后,会自动完成数据同步,在完成同步之后,wsrep状态被设置为true,才对外提供服务