1. PXC (Percona Xtradb Cluster)
Percona : 基于 MySQL 数据库已二次开发的数据库产品
xtradb: 存储引擎
Cluster: 集群
1.1 概念:
PXC 是属于一套比较完美的 MySQL高可用集群解决方案,相比较传统的基于主从复制的架构,基本上可以达到实时同步。且节点与节点之间是相互低等的 ,不存在主从关系。
2. PXC 实现的功能
1) 多主复制: 真正的多点读写集群,在任何时候都写数据都是最新的
2) 同步复制: 集群不同的节点之间的数据同步,没有延迟,在数据库挂掉之后,数据不会消失
3) 并发复制: 从节点在apply 数据时,支持并行执行,有更改的性能表现
4) 故障切换: 因为支持多点写入所以在出现数据库故障时可以很容易进行故障切换
5) 热插拔: 在服务期间,如果数据库挂掉了,只要监控程序发现的够快,不可服务的时间就会少很多,在节点故障时间,节点本身对集群的影响非常小
6) 自动节点克隆: 在新节点或者停机维护时,增量数据或基础数据 不需要人工手动备份提供,galera cluster 会自动拉取在线节点的数据,集群最终会变为 一致
7) 对应用透明: 集群的维护,对应用程序是透明的,几乎感觉不到
3. PXC 优点
1) 实现MySQL数据库集群架构的高可用性和数据的强一致性
2) 完成了真正意义上的多节点读写的集群方案
3) 改善了传统意义上的主从复制延迟问题,基本上达到了实时同步
4) 新加入的节点可以自动部署,无需提供手动备份,维护起来特别方便
5) 由于多节点写入,所以数据库故障切换很容易
4. PXC 缺点
1) 新加入的节点开销大,需要复制完整的数据,采用SST 传输开销太大
2) 任何更新十五都需要全局验证通过,才会在每个节点库上执行,集群性能受限于性能最差的一台
3) 因为需要保证数据的一致性,所以在多节点并发写时,锁冲问题比较严重
4) 存在写扩大的问题,所有的节点上都会发生操作
5) 只支持innodb存储引擎的表
6) 没有表级别锁定,执行DDL语句操作会把整个集群锁住,而且也kill不了
7) 所有的表必须 含有主键,不然操作数据时会报错
5 PXC 传输数据方式
- PXC 有两种节点的数据传输方式
1) SST 全量传输
SST传输有: xtrabackup、mysqldump、rsync三种方法
2) IST增量传输
IST传输有:xtrabackup 一种方法
6. PXC 使用端口
Port | 作用 |
---|---|
3306 | 用于提供数据库服务 |
4567 | 集群中节点之间的通信端口 |
4568 | 节点之间增量复制的端口 |
4444 | 节点之间全量复制的端口 |
7. 部署 PXC 集群
实验环境:
- 要搭建 PXC 集群,至少. 需要三台虚拟机来组成一个集群,且三台不能存在初从关系,而是各自为主,所以三台是对等关系
Host | IP | 环境 |
---|---|---|
Host-A | 192.168.116.101 | 基础环境,可联网 |
Host-B | 192.168.116.102 | 基础环境,可联网 |
Host-C | 192.168.116.103 | 基础环境,可联网 |
1) 在所有节点上部署PXC服务
- 安装网络中的程序
yum install -y http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
- 修改 yum 源
- 关闭秘钥检测
[root@localhost ~]# vim /etc/yum.repos.d/percona-release.repo
# 8 gpgcheck = 1 改为 gpgcheck = 0
# 9 删除掉
# 14 gpgcheck = 1 改为 gpgcheck = 0
# 15 删除掉
# 将以下的内容全部删除
- yum 安装 PXC 服务
- 等待时间较长
yum -y install Percona-XtraDB-Cluster-57
2) 部署 Host-A
- P