PXC集群解决主从弱一致性的问题

目录

前言

什么是PXC

PXC集群部署

启动PXC集群

PXC集群测试


 

前言

 

上一步我们已经搞到了haproxy代理mycat集群,mycat集群代理多个主从mysql数据库。

https://blog.csdn.net/Delicious_Life/article/details/106178881

但这种集群具有弱一致性,不能同步读写,为此我们加上了PXC。

 

 

什么是PXC

 

https://blog.csdn.net/Delicious_Life/article/details/106179984

 

PXC集群部署

 

我们部署三节点的PXC集群

PXC集群解决主从弱一致性的问题_第1张图片

 

创建数据卷,真实存放路径/var/lib/docker/volumes 

docker volume create v1
docker volume create v2
docker volume create v3

拉取pxc集群镜像

docker pull percona/percona-xtradb-cluster:5.7

给镜像重命名

docker tag percona/percona-xtradb-cluster:5.7 pxc

创建网络

docker network create --subnet=172.30.0.0/24 pxc-network

创建容器

创建第一个节点,第一个节点作为主节点

docker create -p 13306:3306 -v v1:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e CLUSTER_NAME=pxc --name=pxc_node1 --net=pxc-network --ip=172.30.0.2 pxc

创建第二个节点,关联第一个节点作为集群

docker create -p 13307:3306 -v v2:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e CLUSTER_NAME=pxc --name=pxc_node2 -e CLUSTER_JOIN=pxc_node1 --net=pxc-network --ip=172.30.0.3 pxc

创建第三个节点,关联第一个节点作为集群

docker create -p 13308:3306 -v v3:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e CLUSTER_NAME=pxc --name=pxc_node3 -e CLUSTER_JOIN=pxc_node1 --net=pxc-network --ip=172.30.0.4 pxc

 

 

启动PXC集群

 

一定要先启动node1,如果不先启动node1,node2和3上来就会寻找node1作为集群。会造成集群构建失败!

docker start pxc_node1 && docker logs -f pxc_node1

使用Navicat连接之,端口13306,密码root

PXC集群解决主从弱一致性的问题_第2张图片

当node1确认连接成功后,我们再启动node2和node3,node2连接的端口为13307

docker start pxc_node2 && docker logs -f pxc_node2

node3连接的端口为13308

docker start pxc_node3 && docker logs -f pxc_node3

淦!

PXC集群解决主从弱一致性的问题_第3张图片

查看集群状态

show status like 'wsrep_cluster%';

下面显示的3代表当前集群中有3个节点

PXC集群解决主从弱一致性的问题_第4张图片

 

 

PXC集群测试

 

注意,PXC集群中的任意一个节点都可以读和写!!!

我随便找一个pxc集群中的节点,输入建表语句。

CREATE TABLE `tb_ad` (
	`id` bigint(20) NOT NULL AUTO_INCREMENT,
	`type` int(10) DEFAULT NULL COMMENT '广告类型',
	`title` varchar(100) DEFAULT NULL COMMENT '描述',
	`url` varchar(200) DEFAULT NULL COMMENT '图片URL地址',
	`created` datetime DEFAULT NULL,
	`updated` datetime DEFAULT NULL,
	PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='广告表';

可以看到另外的两个结点同步的新建出了haoke数据库和tb_ad表 

PXC集群解决主从弱一致性的问题_第5张图片

 我在node3中往tb_ad表插入一条数据,node1和node2马上进行了同步

INSERT INTO `tb_ad` (`id`, `type`, `title`, `url`, `created`, `updated`) VALUES ('1','1', 'UniCity万科天空之城', 'http://itcast-haoke.oss-cn-qingdao.aliyuncs.com/images/2018/11/26/15432029097062227.jpg','2018-11-26 11:28:49','2018-11-26 11:28:51');

 

最终我们实现了基于PXC的读写分离主从架构~~~

PXC集群解决主从弱一致性的问题_第6张图片

你可能感兴趣的:([MyCat])