mycat搭建见:docker-mysql5.7集成mycat
当我们使用binilog主从复制时候,数据同步并没有强一致性,是异步执行,可能会出现数据的丢失以及查询数据的时候,从库还没有复制成功的情况,
PXC
集群,它具有强一致性、无同步延迟。
创建master节点
1 2
| cd /usr/local/docker/pxc/master vim docker-compose.yml
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| 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
|
创建follower节点
1 2
| cd /usr/local/docker/pxc/follower vim docker-compose.yml
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| 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
|
注意事项
一定要等到master节点起来,在进行启动follower节点不然会出现各个节点之间不能相互注册。
PXC节点不能太多,不然会把整体的性能下降。
PXC节点之间的服务器配置一致。
PXC集群只支持innoDB引擎。
PXC内节点都会参与到读写操作。需要注意的是与Mycat的schema.xml配置中balance=‘2’
查看PXC集群是否相互注册成功
1
| show status like 'wsrep_cluster%'
|
wsrep_cluster_size=3 #相互注册成功