mysql5.7主从复制集群(pxc)

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 #相互注册成功

-------------本文结束-------------
0%