搭建5个MySQL节点
- 拉取镜像到本地
docker pull percona/percona‐xtradb‐cluster
- 镜像名称太长不方便使用,进行一下改名,改名后删除原来的镜像
docker tag percona/percona‐xtradb‐cluster pxc
docker rmi percona/percona‐xtradb‐cluster
- 创建内网网段net1
创建网段:docker network create --subnet=172.18.0.0/24 net1
查询网段信息: docker inspect net1
删除网段:docker network rm net1
- 创建docker数据卷
创建:docker volume create --name v1
查看数据卷信息:docker inspect v1
删除:docker volume rm v1
重复操作创建v1-v5共5个数据卷
创建备份数据卷:docker volume create --name backup
- 创建容器
- node1启动后一段时间再启动其他节点没如果node1没初始化完成就启动其他节点就会报错
- node如果启动几秒就挂掉了,删除对应的数据卷之后再重新创建数据卷再启动
- 参数说明:
- -d 后台运行
- -p 3307:3306 将容器内的3306端口映射到宿主机3307端口
- -e 初始化MySQL的基本参数
- -v 映射宿主机数据卷和容器目录
- –name 指定容器名
- –net 指定容器的网关
- –ip 指定容器的IP,如果不指定会自动生成
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -v v1:/var/lib/mysql -v backup:/data --privileged --name=node1 --net=net1 --ip 172.18.0.2 pxc
docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v2:/var/lib/mysql -v backup:/data --privileged --name=node2 --net=net1 --ip 172.18.0.3 pxc
docker run -d -p 3308:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v3:/var/lib/mysql --privileged --name=node3 --net=net1 --ip 172.18.0.4 pxc
docker run -d -p 3309:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME