前言
在上一篇文章介绍了时下流行的几种数据库产品后(公众号发送"NewSQL"查看),有不少小伙伴表示对自动集群的数据库感兴趣,特别是CockroachDB数据库,但是现有的业务使用的是MySQL,更换数据库产品业务要重新处理,风险太大,只能在未来新的业务里尝试。所以,今天我们介绍一款自带集群的MySQL解决方案,就是Percona XtraDB Cluster,简称PXC。
一、pxc介绍PXC(Percona XtraDB Cluster)是一个开源的MySQL高可用解决方案。他将Percona Server和XtraBackup与Galera库集成,以实现同步多主复制。基于Galera的高可用方案主要有MariaDB Galera Cluster和Percona XtraDB Cluster,目前PXC架构在生产线上用的更多而且更成熟一些。PXC相比那些传统的基于主从模式的集群架构MHA和双主,Galera Cluster 最突出的特点就是解决了诟病已久的复制延迟问题,基本上可以达到实时同步。而且节点与节点之间,它们互相的关系是对等的。本身Galera Cluster也是一种多主架构。PXC是在存储引擎层实现的同步复制,而非异步复制,所以其数据的一致性是相当高的。
PXC优缺点
优点:实现了MySQL集群的高可用性和数据的强一致性;
完成了真正的多节点读写的集群方案;
改善了主从复制延迟问题,基本上达到了实时同步;
新加入的节点可以自动部署,无需提交手动备份,维护方便;
由于是多节点写入,所以DB故障切换很容易。
缺点:加入新节点时开销大。添加新节点时,必须从现有节点之一复制完整数据集。如果是100GB,则复制100GB。
任何更新的事务都需要全局验证通过,才会在其他节点上执行,集群性能受限于性能最差的节点,也就说常说的木桶定律。
因为需要保证数据的一致性,PXC采用的实时基于存储引擎层来实现同步复制,所以在多节点并发写入时,锁冲突问题比较严重。
存在写扩大的问题。所以节点上都会发生写操作,对于写负载过大的场景,不推荐使用PXC。
只支持InnoDB存储引擎。
二、PXC安装
本文使用docker进行安装,主机间通过docker swarm网络进行通讯。不了解Docker的请自行先网上看以下教程入门一下。这里没有深入的Docker知识,只要跟着命令做就可以了。
三台主机都安装好了docker:
| 主机 | IP | | ----- | ------------- | | node1 | 192.168.0.101 | | node2 | 192.168.0.102 | | node3 | 192.168.0.103 |
1. 在3台主