简介
Percona XtraDB Cluster(简称PXC)是针对MySQL用户的高可用性和扩展性解决方案,基于Percona Server 。其 包括了Write Set REPlication补丁,使用Galera 2.0库,这是一个针对事务性应用程序的同步多主机复制插件。
Percona Server是MySQL的改进版本,使用 XtraDB 存储引擎,在功能和性能上较 MySQL 有着很显著的提升,如提升了在高负载情况下的 InnoDB 的性能,为 DBA 提供了一些非常有用的性能诊断工具,另外有更多的参数和命令来控制服务器行为。
Percona XtraDB Cluster提供了:
- 同步复制,事务可以在所有节点上提交。
- 多主机复制,你可以写到任何节点。
- 从(slave)服务器上的并行应用事件,真正的“并行复制”。
- 自动节点配置。
- 数据一致性,不再有未同步的从服务器。
官网:https://www.percona.com/software/mysql-database/percona-xtradb-cluster
部署安装
我们部署安装两节点的PXC。
节点 | 端口 | 容器名称 | 数据卷 |
---|---|---|---|
node1 | 13306 | pxc_node1 | v1 |
node2 | 13307 | pxc_node2 | v2 |
#创建数据卷(存储路径:/var/lib/docker/volumes)
docker volume create v1
docker volume create v2
#拉取镜像
docker pull percona/percona-xtradb-cluster:5.7
#重命名
docker tag percona/percona-xtradb-cluster:5.7 pxc
#创建网络
docker network create --subnet=192.168.0.0/24 pxc-network
#创建容器
#第一节点
docker create -p 13306:3306 -v v1:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=qwe123 -e CLUSTER_NAME=pxc --name=pxc_node1 --net=pxc-network --ip=192.168.0.2 pxc
#第二节点(增加了CLUSTER_JOIN参数)
docker create -p 13307:3306 -v v2:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=qwe123 -e CLUSTER_NAME=pxc --name=pxc_node2 -e CLUSTER_JOIN=pxc_node1 --net=pxc-network --ip=192.168.0.3 pxc
docker start pxc_node1
docker start pxc_node2
navicat连接两个节点
在pxcnode1创建一个数据库my_test,pxcnode2刷新,发现数据库已经同步了。(在pxcnode2上进行操作也会同步到pxcnode1中)
#查看集群节点
show status like 'wsrep_cluster%';
集群的说明
- 尽可能的控制PXC集群的规模,节点越多,数据同步速度越慢
- 所有PXC节点的硬件配置要一致,如果不一致,配置低的节点将拖慢数据同步速度
- PXC集群只支持InnoDB引擎,不支持其他的存储引擎
PXC集群方案与Replication区别
- PXC集群方案所有节点都是可读可写的,Replication从节点不能写入,因为主从同步是单向的,无法从slave节点向master点同步。
- PXC同步机制是同步进行的,这也是它能保证数据强一致性的根本原因,Replication同步机制是异步进行的, 它如果从节点停止同步,依然可以向主节点插入数据,正确返回,造成数据主从数据的不一致性。
- PXC是用牺牲性能保证数据的一致性,Replication在性能上是高于PXC的。所以两者用途也不一致。PXC是用于重要信息的存储,例如:订单、用户信息等。Replication用于一般信息的存储,能够容忍数据丢失。