docker 中搭建 mysql pxc 集群
一、docker中创建pxc 容器
1.拉取PXC 镜像  pull
docker pull percona/percona-xtradb-cluster:5.7.21
2.更改镜像名称为pxc   tag 
docker tag percona/percona-xtradb-cluster:5.7.21 pxc
3.删除旧名称的镜像 rmi
docker rmi percona/percona-xtradb-cluster:5.7.21e
二、容器内部创建网段
1.创建容器内部网段  通过映射方式事项外部访问  network create
docker   network create net1
2.查看网段的信息  inspect 
docker network inspect net1
3.删除网段信息
docker  network  rm  net1
4.自定义创建网段 参数  --subnet
docker network create --subnet=172.18.0.0.1/24 net1
5.查看net1网段信息 inspect
 ![]()
三、创建docker 卷
1.创建docker 数据卷  (pxc  数据不能储存在容器里,必须储存在宿主机上,所以集群不能直接使用路径映射,必选创建数据券,再将数据券映射到宿主机的目录)
docker  volume create  --name  v1
2.查看数据卷位置
docker  inspect  v1
![]()
可以看到数据券创建成功,"Mountpoint": "/var/lib/docker/volumes/v1/_data", 
创建PXC 数据库节点时只需要把这个是数据券在宿主机上的位置,只需要把v1 映射到宿主机的数据卷上就可以了
4.创建PXC 第一个容器
docker run -d -p 3306:3306 -v v1:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 --privileged --name=node1 --net=net1 --ip172.20.0.2 pxc
参数解释:
docker   run  -d  (启动容器在后台运行)
 -p 3306:3306   (断后映射前面为宿主机端口,后为容器端口)
 -v  v1:var/lib/mysql  (路径映射卷) 
-e MYSQL_ROOT_PASSWORD=abc123456  (数据库ROOT 用户密码)
 -e  CLUSTER_NAME=PXC  (容器名称)
 -e XTRABACKUP_PASSWORD=abc123456    (数据同步密码)
--privileged  (最高权限) --name=node1 (容器节点名称)
 --net=net1 (容器内部网段)
--ip172.18.0.2 (内部网段对应的ip)
pxc   容器名
4.1创建PXC 第二个容器
docker run -d -p 3307:3306 -v v2:/var/lib/mysql -e CLUSTER_JOIN=node1 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 --privileged --name=node2 --net=net1 --ip=172.20.0.3 pxc
参数解释:
docker   run  -d  (启动容器在后台运行)
 -p 3307:3306   (宿主机端口需要错开,后为容器端口)
 -v  v2:var/lib/mysql  (路径映射卷) 
-e MYSQL_ROOT_PASSWORD=abc123456  (数据库ROOT 用户密码)
-e CLUSTER_JOIN=node1   加入集群 和第一个容器节点数据库同步
 -e  CLUSTER_NAME=PXC  (容器名称)
 -e XTRABACKUP_PASSWORD=abc123456    (数据同步密码)
--privileged  (最高权限) 
--name=node2 (容器节点名称)
 --net=net1 (容器内部网段)
--ip172.18.0.3 (内部网段对应的ip  需要错开)
pxc   容器名
4.2创建PXC 第三个容器
docker run -d -p 3308:3306 -v v3:/var/lib/mysql -e CLUSTER_JOIN=node1 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 --privileged --name=node3 --net=net1 --ip=172.20.0.4 pxc
参数解释:
docker   run  -d  (启动容器在后台运行)
 -p 3308:3306   (宿主机端口需要错开,后为容器端口)
 -v  v3:var/lib/mysql  (路径映射卷) 
-e MYSQL_ROOT_PASSWORD=abc123456  (数据库ROOT 用户密码)
-e CLUSTER_JOIN=node1   加入集群 和第一个容器节点数据库同步
 -e  CLUSTER_NAME=PXC  (容器名称)
 -e XTRABACKUP_PASSWORD=abc123456    (数据同步密码)
--privileged  (最高权限) 
--name=node3 (容器节点名称)
 --net=net1 (容器内部网段)
--ip172.18.0.4 (内部网段对应的ip  需要错开)
pxc   容器名
5,第三个第四个容器
docker run -d -p 3309:3306 -v v4:/var/lib/mysql -e CLUSTER_JOIN=node1 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 --privileged --name=node4 --net=net1 --ip=172.20.0.5 pxc
 
docker run -d -p 3310:3306 -v v5:/var/lib/mysql -e CLUSTER_JOIN=node1 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 --privileged --name=node5 --net=net1 --ip=172.20.0.6 pxc
 
                    
                


 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号