本文共 3128 字,大约阅读时间需要 10 分钟。
MySQL集群通过PXC 集群方案( Percona XtraDB Cluster )搭建
docker pull percona/percona-xtradb-cluster
出于安全考虑,将PXC集群放置于docker内部网络中。只需将宿主的端口与之映射并开放出来即可
docker network create --subnet=172.18.0.0/24 net1
执行成功后,查看net1详细信息执行如下命令
docker inspect net1
返回结果
[ { "Name": "net1", "Id": "cfe8279ff4bff1561c33bc2aec88f37800829f7fd5377ac284005c4c8a275e07", "Created": "2020-04-27T00:12:30.448769804+08:00", "Scope": "local", "Driver": "bridge", "EnableIPv6": false, "IPAM": { "Driver": "default", "Options": {}, "Config": [ { "Subnet": "172.18.0.0/24" } ] }, "Internal": false, "Attachable": false, "Ingress": false, "ConfigFrom": { "Network": "" }, "ConfigOnly": false, "Containers": {}, "Options": {}, "Labels": {} }]
PXC较为特殊,无法直接使用映射目录的方法做映射(使用后会闪退),故使用docker卷
docker volume create --name volume1
执行成功后,想查看映射的地址执行如下命令
docker inspect volume1
返回结果
[ { "CreatedAt": "2020-05-15T13:04:24+08:00", "Driver": "local", "Labels": {}, "Mountpoint": "/var/lib/docker/volumes/volume1/_data", "Name": "volume1", "Options": {}, "Scope": "local" }]
docker volume create --name volume2docker volume create --name volume3docker volume create --name volume4docker volume create --name volume5
docker run -d -p 3306:3306 -v volume1:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 --privileged --name=node1 --net=net1 --ip 172.18.0.2 percona/percona-xtradb-cluster
-d:默认在后台运行,为守护进程-p:3306(宿主):3306(容器)端口映射,将容器3306端口映射到宿主3306坤口-v v1:/var/lib/mysql:目录映射,将第三步创建的v1映射到容器/var/lib/mysql-e MYSQL_ROOT_PASSROWD:创建的用户实例的密码,默认实例root-e CLUSTER_NAME:集群名称-e XTRABACKUP_PASSWORD:数据库之间同步使用的密码--privileged:权限给予最高权限--name:给容器容命名--net:使用内部网段--ip:内部网段分到的地址percona:percona镜像
docker run -d -p 3307:3306 -v volume2:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -e CLUSTER_JOIN=node1 --privileged --name=node2 --net=net1 --ip 172.18.0.3 percona/percona-xtradb-clusterdocker run -d -p 3308:3306 -v volume3:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -e CLUSTER_JOIN=node1 --privileged --name=node3 --net=net1 --ip 172.18.0.4 percona/percona-xtradb-clusterdocker run -d -p 3309:3306 -v volume4:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -e CLUSTER_JOIN=node1 --privileged --name=node4 --net=net1 --ip 172.18.0.5 percona/percona-xtradb-clusterdocker run -d -p 3310:3306 -v volume5:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -e CLUSTER_JOIN=node1 --privileged --name=node5 --net=net1 --ip 172.18.0.6 percona/percona-xtradb-cluster
用Navicat for mysql连接到之前四个节点的数据库,在四个节点数据库中 在任意一个数据库进行建库、建表、增删改查数据等操作后,再查看其它节点进行查看,或者在其它不同的节点进行操作看是否数据能成功进行同步
转载地址:http://nenk.baihongyu.com/