目录
前言
什么是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集群
创建数据卷,真实存放路径/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
当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
淦!
查看集群状态
show status like 'wsrep_cluster%';
下面显示的3代表当前集群中有3个节点
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表
我在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的读写分离主从架构~~~