1.简介
1.1 PXC 简介
PXC 是一套 MySQL 高可用集群解决方案,与传统的基于主从复制模式的集群架构相比 PXC 最 突出特点就是解决了诟病已久的数据复制延迟问题,基本上可以达到实时同步。而且节点与节点之间,他们相互的关系是对等的。PXC 最关注的是数据的一致性,对待事物的行为时,要么在所有节点上执行,要么都不执行,它的实现机制决定了它对待一致性的行为非常严格,这也能非常完美的保证 MySQL 集群的数据一致性;
1.2 PXC特性和优点
- 完全兼容 MySQL。
- 同步复制,事务要么在所有节点提交或不提交。
- 多主复制,可以在任意节点进行写操作。
- 在从服务器上并行应用事件,真正意义上的并行复制。
- 节点自动配置,数据一致性,不再是异步复制。
- 故障切换:因为支持多点写入,所以在出现数据库故障时可以很容易的进行故障切换。
- 自动节点克隆:在新增节点或停机维护时,增量数据或基础数据不需要人工手动备份提供,galera cluster会自* 动拉取在线节点数据,集群最终会变为一致;
PXC最大的优势:强一致性、无同步延迟
1.3 PXC的局限和劣势
- 复制只支持InnoDB 引擎,其他存储引擎的更改不复制
- 写入效率取决于节点中最慢的一台
2.安装
percona-release setup pxc57
2.1安装yum源
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
2.2安装pxc
yum install Percona-XtraDB-Cluster-57
-- 如果下载不下来 可以直接从管网下载
-- https://www.percona.com/downloads/Percona-XtraDB-Cluster-57/LATEST/
-- Percona-XtraDB-Cluster-server-57-5.7.28-31.41.2.el7.x86_64.rpm
下载后本地直接安装
yum localinstall ****.rpm
3 配置集群
注:以下用到的节点均为hostName(需要配置hosts文件),当然也可以直接写节点的ip
参考环境配置:centos常用集群搭建配置参考
3.1 修改pxc配置文件
vi /etc/percona-xtradb-cluster.conf.d/wsrep.cnf
--
-- 重点修改wsrep_node_name=node08,wsrep_node_address=node09,确保每台机器不同
-- 修改集群节点的配置
wsrep_cluster_address=gcomm://node08,node09,node10
-- 当前节点名称
wsrep_node_name=node08
-- 当前节点地址 -- add
wsrep_node_address=node08
3.2 修改mysql配置
vi /etc/percona-xtradb-cluster.conf.d/mysqld.cnf
-- 重点修改server-id,确保每台机器不同
3.3 删除原有/etc/my.cnf 将以下配置写入my.cnf 节点信息对应修改
[client]
socket=/var/lib/mysql/mysql.sock
[mysqld]
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
wsrep_cluster_name=pxc-cluster
wsrep_cluster_address=gcomm://node08,node09,node10 #集群三个节点的ip
wsrep_node_name=node10 #当前节点的名称
wsrep_node_address=node10 #当前节点的Ip
wsrep_sst_method=xtrabackup-v2
wsrep_sst_auth=sstuser:passw0rd #sst同步的用户和密码
pxc_strict_mode=ENFORCING
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
4.启动集群
4.1 启动前的配置
pxc本身相当于对mysql的一次高度修改和包装,所以本身也可以作为一个mysql服务端来启动
- 先单独在一个节点以普通mysql启动方式启动一个mysql服务:
service mysqld start
- 登陆mysql进行用户设置
- 启动成功后查询mysql的临时密码:
cat /var/log/mysqld.log | grep "A temporary password"
- 用临时密码以命令行形式登陆mysql进行如下配置
mysql -u root -p
-- 修改root密码
alter user 'root'@'localhost' identified with mysql_native_password by 'root';
-- 设置远程登录
use mysql;
update user set host='%' where user = 'root';
-- 创建SST用户 这个就是上文3.3中对应的 `wsrep_sst_auth`用户,用于做节点间同步的用户
create user 'sstuser'@'%' identified by 'passw0rd';
grant reload, lock tables, process, replication client on *.* to 'sstuser'@'%';
flush privileges;
-- 修改好配置后停止这个MySQL服务
service mysqld stop
4.2 启动主(引导)节点
注意:这个引导节点主要用于初始化集群,并不是字面上的主节点,pxc理论上不分主从
主(引导)节点启动命令:systemctl start mysql@bootstrap.service
4.3 集群其他节点启动
命令:systemctl start mysql.service
当做普通mysql服务启动就可以
5.集群状态查看
从任意一个节点上登陆mysql
mysql -uroot -p
查询集群状态语句:show status like 'wsrep%';
可以看到集群的节点数量:wsrep_cluster_size | 3
网友评论