docker-compose来搭建PXC集群

1. 说明

当我们使用MySQL主从复制时候,你可能已经意识到数据同步并没有强一致性,是异步执行。那么这样就会可能出现数据的丢失以及查询数据的时候,从库还没有复制成功的情况
正对这样的情况,我采用了PXC集群,它具有强一致性、无同步延迟。

2. 创建文件目录结构

# 创建文件结构
cd /usr/local/docker
mkdir pxc
cd pxc
mkdir data master follower
# 创建数据卷
cd data
mkdir v1 v2 v3
# 设置权限
chmod 777 v1 v2 v3

3. 创建master节点

cd /usr/local/docker/pxc/master
vim docker-compose.yml
version: '3'
services:
  pxc01:
    restart: always
    image: percona/percona-xtradb-cluster:5.7
    container_name: pxc01
    privileged: true
    ports:
      - 13306:3306
    environment:
      - MYSQL_ROOT_PASSWORD=123456
      - CLUSTER_NAME=pxc
    volumes:
      - ../data/v1:/var/lib/mysql

networks:
  default:
    external:
      name: mysql_network

4. 创建follower节点

cd /usr/local/docker/pxc/follower
vim docker-compose.yml
version: '3'
services:
  pxc02:
    restart: always
    image: percona/percona-xtradb-cluster:5.7
    container_name: pxc02
    privileged: true
    ports:
      - 13307:3306
    environment:
      - MYSQL_ROOT_PASSWORD=123456
      - CLUSTER_NAME=pxc
      - CLUSTER_JOIN=pxc01
    volumes:
      - ../data/v2:/var/lib/mysql

  pxc03:
    restart: always
    image: percona/percona-xtradb-cluster:5.7
    container_name: pxc03
    privileged: true
    ports:
      - 13308:3306
    environment:
      - MYSQL_ROOT_PASSWORD=123456
      - CLUSTER_NAME=pxc
      - CLUSTER_JOIN=pxc01
    volumes:
      - ../data/v3:/var/lib/mysql

networks:
  default:
    external:
      name: mysql_network

5. 注意事项

  1. 一定要等到master节点起来,在进行启动follower节点不然会出现各个节点之间不能相互注册。
  2. PXC节点不能太多,不然会把整体的性能下降。
  3. PXC节点之间的服务器配置一致。
  4. PXC集群只支持innoDB引擎。
  5. PXC内节点都会参与到读写操作。需要注意的是与Mycatschema.xml配置中balance='2'

6. 相关图例

6.1 连接PXC节点

docker-compose来搭建PXC集群_第1张图片

6.2 查看PXC集群是否相互注册成功

show status like 'wsrep_cluster%'
docker-compose来搭建PXC集群_第2张图片

你可能感兴趣的:(集群搭建,数据库)