MySQL集群方案:replication 和 pxc
replication :速度快、弱一致性、数据同步单向,异步复制
pxc : 速度慢、强一致性、数据同步双向,同步复制
模拟搭建5个节点集群
安装:
docker pull perconalab/percona-xtradb-cluster
docker tag perconalab/percona-xtradb-cluster pxc
处于安全考虑,给pxc集群创建docker内部网络
docker network create —subnet 172.18.0.0/24 net1
docker network inspect net1
目录映射:将数据保存在宿主机上
容器中pxc节点映射数据目录的解决办法:
docker卷创建:
docker volume create —name v1
docker volume create —name v2
docker volume create —name v3
docker volume create —name v4
docker volume create —name v5
创建pxc容器:
node1:
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 —ip 172.18.0.2 pxc
node2:
docker run -d -p 3307:3306 -v v2:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 —privileged —name=node2 —net=net1 —ip 172.18.0.3 pxc
node3:
docker run -d -p 3308:3306 -v v3:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 —privileged —name=node3 —net=net1 —ip 172.18.0.4 pxc
node4:
docker run -d -p 3309:3306 -v v4:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 —privileged —name=node4 —net=net1 —ip 172.18.0.5 pxc
node5:
docker run -d -p 3310:3306 -v v5:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 —privileged —name=node5 —net=net1 —ip 172.18.0.6 pxc
5个节点创建完成后,可以用MySQL客户端连接进行测试,在任一个mysql节点进行操作,都会同步到其他四个节点