一、拉取镜像
docker pull percona/percona-xtradb-cluster:5.7.21
docker tag percona/percona-xtradb-cluster:5.7.21 pxc
docker rmi percona/percona-xtradb-cluster:5.7.21
二、创建docker集群并创建docker网络
主节点执行:docker swarm init
打印出如下内容后:复制红框内的内容到其他子节点执行
创建docker网络(加粗为网络名称)
docker network create -d overlay --attachable swarm_mysql
三、创建主节点
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=iking.com -e CLUSTER_NAME=PXC1 -e XTRABACKUP_PASSWORD=iking.com -v pxc1:/var/lib/mysql --privileged --restart=always --net=swarm_mysql --name=pxc1 pxc
说明:
3306端口:数据库访问端口
4444端口:sst全量传输
4567端口:pxc cluster 相互通讯端口
4568端口:ist增量传输
2377端口:用户集群通信
7946端口:容器网络发现
4789端口:容器覆盖网络
pxc1为挂载数据卷,不存在时自动创建:采用docker搭建PXC集群时,不支持文件目录的挂载方式,而只支持数据卷的挂载方式
MYSQL_ROOT_PASSWORD:mysql初始密码
XTRABACKUP_PASSWORD:备份密码
CLUSTER_NAME:集群名称
四、docker数据卷操作
docker volume ls 【查看已有的数据卷】
docker volume create pnv1 【创建一个叫做pnv1的数据卷】
docker volume rm 数据卷名字 【删除某个数据卷】、
docker volume inspect pnv1 【查看某个数据卷详情】
五、创建从节点
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=iking.com -e CLUSTER_NAME=PXC1 -e XTRABACKUP_PASSWORD=iking.com -e CLUSTER_JOIN=pxc1 -v pxc2:/var/lib/mysql --privileged --restart=always --net=swarm_mysql --name=pxc2 pxc
建议创建至少2个从节点,如果只是1主1从,当主挂掉后,从无法使用