容器集群系列(二):使用Docker Swarm结合PXC容器构建MySQL主从模式集群、无自定义MySQL配置文件

艺帆风顺 发布于 2025-04-02 16 次阅读


一、基本情况

    本地虚拟机测试,在3台服务器上使用Docker Swarm搭建Mysql集群,实现一主两从的效果。

    主节点:192.168.1.132

    node-1:192.168.1.139

    node-2:192.168.1.140

    Percona XtraDB Cluster (PXC) 是一个基于 Percona Server for MySQL 的开源、高可用性的 MySQL 集群解决方案。它使用 Galera Cluster 技术,允许多个 MySQL 节点协同工作,提供水平扩展和高可用性。

    PXC 使用 InnoDB 存储引擎作为默认存储引擎。

    Docker Swarm集群节点初始化(略)

二、Master管理节点配置

    1、创建nerwork

    docker network create -d overlay --attachable sharednetdocker network ls

        可以在从节点验证同步添加完成

            docker network ls

      [root@Node1 ~]# docker network lsNETWORK ID NAME DRIVER SCOPEb8ec7ad1fc53 bridge bridge local2b7389a49c3c docker_gwbridge bridge local2f604b57947e host host localov9l5tb6udg3 ingress overlay swarmd9e27827037d none null local0diog40psryu sharednet overlay swarm

      2、拉取pxc镜像并重新标记、删除源镜像(所有节点均需操作)

         docker pull percona/percona-xtradb-cluster:5.7.34 docker tag percona/percona-xtradb-cluster:5.7.34 mysql:5.7.34 docker rmi percona/percona-xtradb-cluster:5.7.34

        3、创建数据卷

          docker volume create v1docker volume create backup

          可以在从节点验证同步添加完成

                  docker volume ls

            [root@Master ~]# docker volume lsDRIVER VOLUME NAMElocal ab088d81b38ece678f9d1e86a36e35cd198f04dc2329d536d2ad7e7538825143local backuplocal d5b2246c7c5bd258924df21f3a266e26e4cc71769bc7f86b710adb480003c832local nginx-configlocal portainer_datalocal v1

            4、主节点创建并运行容器

              docker run --restart=always -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -v v1:/var/lib/mysql -v backup:/data      --privileged=true      --name=node1      --net=sharednet      -d mysql:5.7.34

                  查看容器运行状态:

                [root@Master ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES402e30dbe622 mysql:5.7.34 "/entrypoint.sh mysq…" 50 minutes ago Up 50 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 4567-4568/tcp node1

                三、SLAVE节点配置(2台)

                1、拉取镜像(略);

                2、加入集群

                node 1执行:

                  docker run --restart=always  -p 3306:3306  -e MYSQL_ROOT_PASSWORD=123456  -e CLUSTER_NAME=PXC  -e XTRABACKUP_PASSWORD=123456  -v v1:/var/lib/mysql  -v backup:/data  --privileged=true  --name=node1  --net=sharednet  -d mysql:5.7.34

                  node 2执行:

                    docker run --restart=always  -p 3306:3306  -e MYSQL_ROOT_PASSWORD=123456  -e CLUSTER_NAME=PXC  -e XTRABACKUP_PASSWORD=123456  -e CLUSTER_JOIN=node1  -v v1:/var/lib/mysql  -v backup:/data  --privileged=true  --name=node2  --net=sharednet  -d mysql:5.7.34

                    四、验证

                            在master数据库创建一个test库,并导入sql;可以发现slave库也同步导入。

                        证明主从模式配置无问题,一切使用正常。