环境信息:
假设三台机器ip地址是
192.168.1.11
192.168.1.12
192.168.1.13
任选其一为暂时性的主节点,暂时取192.168.1.11这台
搭建步骤:
在所有机器执行:
1、重命名镜像名称,方便阅读
docker tag percona/percona-xtradb-cluster:5.7 pxc:latest
2、创建两个存储卷,一个存储数据库配置文件vconf,一个存储数据库文件vmysql
docker volume create --name vmysql && docker volume create --name vconf
在192.168.1.11执行
3、创建pxc集群的专属swarm网络
docker swarm init --advertise-addr 192.168.1.11
拷贝生成的中间部分的字段
在192.168.1.12、192.168.1.13执行:
4、执行第二步拷贝后的值,提示如下内容则加入成功
This node joined a swarm as a worker.
在192.168.1.11执行:
5、创建swarm网络,启动容器,默认密码passw0rd,节点名称为mysql_node1
docker network create -d overlay --attachable sharednet
docker run -d -p 33060:3306 -p4567:4567 -p4568:4568 -v vmysql:/var/lib/mysql -v vconf:/etc/mysql -e TZ="Asia/Shanghai" -e MYSQL_ROOT_PASSWORD=passw0rd -e CLUSTER_NAME=PXC_cloud -e XTRABACKUP_PASSWORD=syncpassword -e --privileged --restart=always --name=mysql_node1 --net=sharednet pxc:latest
6、进入容器查看MySQL启动状态
docker exec -it mysql_node1 bash
mysql -uroot -p$MYSQL_ROOT_PASSWORD
能登陆进去说明mysql启动成功,若登陆不进去则等待一段时间再试试,一般不超过3分钟。
在192.168.1.12执行:
7、启动容器,节点名称为mysql_node2
docker run -d -p 33060:3306 -p4567:4567 -p4568:4568 -v vmysql:/var/lib/mysql -v vconf:/etc/mysql -e MYSQL_ROOT_PASSWORD=passw0rd -e TZ="Asia/Shanghai" -e CLUSTER_NAME=PXC_cloud -e XTRABACKUP_PASSWORD=syncpassword -e CLUSTER_JOIN=mysql_node1 --privileged --restart=always --name=mysql_node2 --net=sharednet pxc:latest
192.168.1.13执行:
8、启动容器,节点名称为mysql_node3
docker run -d -p 33060:3306 -p4567:4567 -p4568:4568 -v vmysql:/var/lib/mysql -v vconf:/etc/mysql -e MYSQL_ROOT_PASSWORD=passw0rd -e TZ="Asia/Shanghai" -e CLUSTER_NAME=PXC_cloud -e XTRABACKUP_PASSWORD=syncpassword -e CLUSTER_JOIN=mysql_node1 --privileged --restart=always --name=mysql_node3 --net=sharednet pxc:latest
在任意其中一个节点执行,以192.168.1.11节点为例:
9、检查集群搭建状态,
进入容器
docker exec -it mysql_node1 bash
mysql -uroot -p$MYSQL_ROOT_PASSWORD
show status like '%wsrep%';
查看集群状态
wsrep_cluster_weight为3 代表集群内有三个节点
wsrep_ready为ON代表集群正常提供数据库服务
自此,PXC集群就搭建完了,下一节进行haproxy负载配置。