目录
一、环境介绍
本次安装使用3台centons7.5虚拟机
ip分别为192.168.1.141~143
二、安装包下载
下载地址:
percona-xtradb-cluster8.0:https://www.percona.com/downloads/Percona-XtraDB-Cluster-LATEST
安装中可能需要的依赖qpress:https://repo.percona.com/yum/release/7/RPMS/x86_64/qpress-11-1.el7.x86_64.rpm
若以yum方式安装,请自行配置percona的yum源
sudo yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
若如法安,请参考官方安装yum源的方法,链接:https://www.percona.com/doc/percona-repo-config/percona-release.html
三、开始安装
将下载的tar包解压,解压过程就不多赘述了,我本次解压路径为:
使用yum进行安装
[root@localhost mysql]# yum -y install /opt/mysql/*
若出现上方提示为缺少依赖包导致的,下载qpress进行安装方可解决,下载地址上方有,这里再次贴出:https://repo.percona.com/yum/release/7/RPMS/x86_64/qpress-11-1.el7.x86_64.rpm,可将该安装安包装后再进行mysql安装或将安装包下载后放入percona-xtradb-cluster解压的目录重新执行上方操作
[root@localhost mysql]# yum -y install /opt/mysql/*
安装完成
其他两台与这一台安装方式相同进行安装即可。
四、初始化数据库
应为使用的是8.0版本,部分配置需要在初始化数据库前进行配置,如忽略表名大小写等
[client]
socket=/data/mysql/mysql.sock
[mysqld]
lower_case_table_names = 1 #忽略表名大小写
server-id=141 #每台mysql的id不能相同
datadir=/data/mysql #数据库报错路径,原为/var/lib/mysql,根据实际情况修改
socket=/data/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
#二进制日志过期时间为604800秒,等于7天
binlog_expire_logs_seconds=604800
######## wsrep ###### #########
Galera 库的路径
wsrep_provider=/usr/lib64/galera4/libgalera_smm.so
# 集群连接 URL 包含节点的 IP #
如果没有找到 IP,这意味着需要一个新的集群创建,
#为了做到这一点,你需要引导这个节点
wsrep_cluster_address =的gcomm://
#为了加莱拉工作正确的二进制日志格式应该是ROW
binlog_format = ROW
#从服务器线程使用
wsrep_slave_threads = 8个
wsrep_log_conflicts
#这个变化的InnoDB自动增量锁是如何管理的,是要求加莱拉
innodb_autoinc_lock_mode = 2
#节点 IP 地址
#wsrep_node_address=192.168.70.63
# 集群名称
wsrep_cluster_name=pxc-cluster #
如果未指定 wsrep_node_name,则使用系统主机名
wsrep_node_name=pxc-cluster-node-1
#pxc_strict_mode, allowed values:RCMISSABLE,EN MASTER
pxc_strict_mode=ENFORCING
# SST 方法
wsrep_sst_method=xtrabackup-v2
若修改mysql目录需要创建相应的目录并授权
[root@localhost mysql]# mkdir -p /data/mysql
[root@localhost mysql]# chown mysql.mysql /data/mysql/
[root@localhost mysql]# ls -ld /data/mysql/
drwxr-xr-x 2 mysql mysql 6 7月 28 10:34 /data/mysql/
启动成功后进行数据库密码的重置,注意启动是systemctl start mysql 不是mysqld
其他2台服务器需要进行初始化操作,并且配置文件需要一致,只改其中的server-id,建议直接将配置文件复制到其他两台服务器进行覆盖,然后启动,再修改密码。
重要的事情说3遍,改server-id,改server-id,改server-id!!!!
五、创建集群
1、任意找一台服务器作为引导机,本次选用141.
停止MySQL,服务,修改配置文件
其他两台服务器同理修改。
2、将引导服务mysql目录下的*.pem拷贝给其他服务器
[root@localhost ~]# for i in 142 143; do rsync -avh /data/mysql/*.pem 192.168.1.$i:/data/mysql/; done
3、启动引导服务
[root@localhost ~]# systemctl start mysql@bootstrap.service
4、登录mysql查看集群服务,参数就不多 赘述了。
mysql> show status LIKE 'wsrep%';
5、启动其他服务器加入集群(必须修改配置,拷贝*.pem后进行)
[root@localhost ~]# systemctl start mysql
6、启动后再次查看集群信息
数量为3,创建成功
六、关闭所有服务器的后启动集群
整个集群关闭后想以某个节点作为第一个启动节点启动,但节点使用systemctl start mysql@bootstrap.service无法启动,一般是由于该节点关闭的时间不是集群中最晚的一个关闭时间,如果强制启动可能会有数据差异不安全,所以一种办法是找集群最后一个关闭的节点作为第一个启动节点重启整个集群,或者在确保不会有数据丢失的情况下修改mysql安装文件夹下的grastate.dat文件,将其中的safe_to_boostrap设置为1后强行启动。