Percona XtraDB Cluster(简称PXC)是针对MySQL用户的高可用性和扩展性解决方案,基于Percona Server 。Percona Server是MySQL的改进版本,使用XtraDB存储引擎,在功能和性能上较 MySQL 有着很显著的提升,如提升了在高负载情况下的 InnoDB 的性能,为 DBA 提供了一些非常有用的性能诊断工具,另外有更多的参数和命令来控制服务器行为。
Percona XtraDB Cluster提供了:
- 同步复制,事务可以在所有节点上提交。
- 多主机复制,你可以写到任何节点。
- 从(slave)服务器上的并行应用事件,真正的“并行复制”。
- 自动节点配置。
- 数据一致性,不再有未同步的从服务器。
1. 创建数据卷
创建数据卷(存储路径:/var/lib/docker/volumes),将容器文件映射到虚拟机
docker volume create v1
docker volume create v2
docker volume create v3
2. 拉取镜像
#拉取镜像
docker pull percona/percona-xtradb-cluster:5.7
#重命名
docker tag percona/percona-xtradb-cluster:5.7 pxc
3. 创建网络
docker network create --subnet=172.30.0.0/24 pxc-network
4. 创建容器
#第一节点
docker create -p 13306:3306 -v v1:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e CLUSTER_NAME=pxc --name=pxc_node1 --net=pxc-network --ip=172.30.0.2 --privileged pxc
#第二节点(增加了CLUSTER_JOIN参数)
docker create -p 13307:3306 -v v2:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e CLUSTER_NAME=pxc --name=pxc_node2 -e CLUSTER_JOIN=pxc_node1 --net=pxc-network --ip=172.30.0.3 --privileged pxc
#第三节点(增加了CLUSTER_JOIN参数)
docker create -p 13308:3306 -v v3:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e CLUSTER_NAME=pxc --name=pxc_node3 -e CLUSTER_JOIN=pxc_node1 --net=pxc-network --ip=172.30.0.4 --privileged pxc
–privileged:设置权限,没有这个参数,启动时可能因为权限不够启动失败
5. 启动,测试连接
需要注意的是:先启动第一个节点,等到mysql客户端可以连接到服务后再启动其它节点。
docker start pxc_node1
连接测试
连接成功,再启动pxc_node2和pxc_node3
docker start pxc_node2 pxc_node3
测试另外两个节点都连接成功,则三节点的PXC集群部署成功。