1、什么是PXC
PXC 是一套 MySQL 高可用集群解决方案,与传统的基于主从复制模式的集群架构相比 PXC 最突出特点就是解决了诟病已久的数据复制延迟问题,基本上可以达到实时同步。而且节点与节点之间,他们相互的关系是对等的。PXC 最关注的是数据的一致性,对待事物的行为时,要么在所有节点上执行,要么都不执行,它的实现机制决定了它对待一致性的行为非常严格,这也能非常完美的保证 MySQL 集群的数据一致性;
2、实践
首先准备三台实验机
|--------------|------|------|
| IP | 端口 | 角色 |
| 192.168.1.51 | 3306 | pxc1 |
| 192.168.1.52 | 3306 | pxc2 |
| 192.168.1.53 | 3306 | pxc3 |
1、从Percona 软件仓库安装(三台主机都要做)
RHEL 8 和其他 EL8 系统默认启用 MySQL 模块。此模块隐藏了 Percona 提供的软件包,并且必须禁用该模块才能使这些软件包可见。以下命令将禁用该模块:
yum module disable mysql
在Red Hat 8 或更高版本上安装
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
percona-release setup pxc-80
yum install percona-xtradb-cluster
修改root用户密码和创建用于远程登录测试的用户:
systemctl start mysqld
tmp_pwd=$(awk '/temporary password/ {print $NF}'
mysql -uroot -p$tmp_pwd
登录之后修改root用户密码:alter user root@localhost identified with mysql_native_password by 'MySQL@123';
创建新用户:create user 'test'@'%' identified with mysql_native_password by 'MySQL@123';
赋予权限:grant all privileges on *.* to 'test'@'%' ;
记得在所有主机都需要执行一遍
systemctl stop mysqld
配置
1、不用登陆时输密码
user=root
password=MySQL@123
2、集群的所有IP地址
wsrep_cluster_address=gcomm://192.168.1.51,192.168.1.52,192.168.1.53
3.当前节点的IP地址
wsrep_node_address=192.168.40.52
4.集群名称
wsrep_cluster_name=pxc-cluster
5.当前节点名称
wsrep_node_name=pxc2
6.服务id(这里不能相同和其他节点),这里取IP主机号
server-id=52
启动pxc
#各个节点
rm -rf /var/lib/mysql/*.pem
#启动节点
for i in {51,53} ; do scp /var/lib/mysql/*.pem root@192.168.1.$i:/var/lib/mysql/; done
chown mysql:mysql /var/lib/mysql*.pem
以上准备工作就做好了,现在可以启动mysql了
systemctl start mysql@bootstrap.service
其他节点正常启动即可:systemctl start mysqld
然后可以登入pxc,然后可以使用以下命令验证结果
查询集群信息
show status like 'wsrep%';