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节点进行操作,都会同步到其他四个节点