当前位置: 首页 > 工具软件 > XtraDB > 使用案例 >

使用docker-compose 快速搭建Percona XtraDB Cluster(pxc集群)

谭仰岳
2023-12-01

                    使用docker-compose 快速搭建Percona XtraDB Cluster(pxc集群)

Percona XtraDB Cluster(下文简称PXC集群)提供了MySQL高可用的一种实现方法。PXC集群以节点组成(推荐至少3节点,也就是节点数是奇数),每个节点都是基于常规的MySQL/Percona Server,意味着你可以从集群中分离出某节点单独使用。集群中每个节点都包含完整的数据库数据。

pxc与其他的MySQL集群相比,优势明显,不像mha,mycat 这样的需要中间件来组织集群,部署以及后期维护难度比较大,并且是强一致高可用,也就是CAP。(是实时同步,不是异步同步哦)

吹了这么半天的PXC,无疑的,docker部署是最为快速的一个方式,下面介绍实验目的,实验环境,实验步骤,实验验证。

实验目的:

通过编写docker-compose 文件,实现一键启动PXC集群,在任意的集群节点上,操作数据库,比如新增数据库,在其余的节点上都可以立刻看到。

实验环境:

vm虚拟机内,编写compose文件,docker环境可正常使用了,docker的版本为19.03.9,docker-compose的版本为1.25.1,操作系统为centos7,防火墙和Selinux为关闭状态。

需要pull镜像 ,命令为:docker pull percona/percona-xtradb-cluster:5.7 。

实验步骤:

编写文件一: vim   pxc-master.yaml

version: '3'
services:
  pxc1:
    image: percona/percona-xtradb-cluster:5.7
    restart: always
    container_name: node1_master
    privileged: true
    ports:
      - 13306:3306
    environment:
      - MYSQL_ROOT_PASSWORD=123456
      - CLUSTER_NAME=pxc_cluster
    volumes:
      - /var/lib/mysql
    networks:
      default:
        ipv4_address: 172.18.0.2
networks:
  default:
    external:
      name: net1

编写文件二: vim pxc-follow.yaml

version: '3.3'
services:
  pxc2:
    image: percona/percona-xtradb-cluster:5.7
    restart: always
    container_name: node2
    privileged: true
    ports:
      - 13307:3306
    environment:
      - MYSQL_ROOT_PASSWORD=123456
      - CLUSTER_NAME=pxc_cluster
      - CLUSTER_JOIN=172.18.0.2
    volumes:
      - /var/lib/mysql
    networks:
      default:
        ipv4_address: 172.18.0.12
  pxc3:
    image: percona/percona-xtradb-cluster:5.7
    restart: always
    container_name: node3
    privileged: true
    ports:
      - 13308:3306
    environment:
      - MYSQL_ROOT_PASSWORD=123456
      - CLUSTER_NAME=pxc_cluster
      - CLUSTER_JOIN=172.18.0.2
    volumes:
      - /var/lib/mysql
    networks:
      default:
        ipv4_address: 172.18.0.13
  pxc4:
    image: percona/percona-xtradb-cluster:5.7
    restart: always
    container_name: node4
    privileged: true
    ports:
      - 13309:3306
    environment:
      - MYSQL_ROOT_PASSWORD=123456
      - CLUSTER_NAME=pxc_cluster
      - CLUSTER_JOIN=172.18.0.2
    volumes:
      - /var/lib/mysql
    networks:
      default:
        ipv4_address: 172.18.0.14
  pxc5:
    image: percona/percona-xtradb-cluster:5.7
    restart: always
    container_name: node5
    privileged: true
    ports:
      - 13310:3306
    environment:
      - MYSQL_ROOT_PASSWORD=123456
      - CLUSTER_NAME=pxc_cluster
      - CLUSTER_JOIN=172.18.0.2
    volumes:
      - /var/lib/mysql
    networks:
      default:
        ipv4_address: 172.18.0.15
networks:
  default:
    external:
      name: net1

新建docker网络,上述文件使用的networks是需要手动建立的,命令如下:

docker network create --subnet 172.18.0.1/24 net1

 

启动主节点:

docker-compose -f ~/pxc-master.yaml up -d

#这里需要注意,主节点可能会比较慢才完全启动,因此等待1  2分钟再启动剩余节点。

启动集群剩余节点:

docker-compose -f ~/pxc-follow.yaml up -d

 

 类似资料: