学习目标:
- 掌握PXC集群MySQL方案的原理
- 掌握PXC集群的强一致性
- 掌握PXC集群的高可用方案
首先对于单机单节点数据库来说,在高并发的情况下性能会变得很差。下面是一段性能测试代码:
1 | mysqlslap -hlocalhost -uroot -pabc123456 -P3306 |
我们可以按照不同指标执行压力测试。
参数解释:
1 | -concurrency 代表并发数量,多个可以用逗号隔开,concurrency=10,50,100, 并发连接线程数分别是10、50、100个并发。 |
MySQL高性能高可用集群方案
方案一:PXC集群方案
PXC集群方案如上图所示,底层为pxc搭建MySQL集群,使用HA进行负载均衡分配查询,上层使用MyCat按照一定算法进行SQL数据切分。为什么要进行数据切分呢?(是因为当单个数据表达到两千万行之后就会出现性能瓶颈)PXC集群是以性能换取数据强一致性。
PXC(Percona XtraDB Cluster)原理:
建议PXC使用PerconaServer
方案二:Replication集群方案
Replication集群方案如上图所示,与PXC集群采用的强一致性不同的是Replication采用的是同步机制。这种非强一致性可能存在同步未及时(网络影响等)导致客户端查询数据不一致。
适合保存一些日志数据。
联合使用:
我们可以将两种集群方案一起使用,高价值数据使用PXC集群,海量低价值使用Replication集群,通过MyCat切片数据。同时我们也可以使用缓存进行数据的临时存储。
PXC方案与Replication方案对比
PXC方案
PXC的数据同步是双向的,在任何一个节点写入数据都会同步到其他节点之中。也就是说在任何一个MySQL节点上我们可以同时读写数据。
Replication方案
Replication的数据同步是单向的,在Master中写入数据是可以在Slave中读取,然而在Slave中写入数据是不能在Master中读取不到的。也就是说不能再一个节点同时读取数据。
同步机制示意图
我们在一个节点中写入数据,需要根据同步机制将数据同步到其他节点,并且在其他节点成功提交事务,才算写入成功,然后第一个节点再把写入成功的结果告诉客户端。
异步复制示意图
我们在一个节点写入数据,当提交事务成功后会返回给客户端成功,但是在同步第二个节点的时候万一出现同步失败,我们是无法从第二个节点读取到数据的。
总结:
PXC的数据强一致性是因为采用了同步复制,事务在所有集群节点要么同时提交,要么不提交。
Replication采用异步复制,无法保证数据的一致性。