首页 > 其他分享 >PXC集群

PXC集群

时间:2023-04-02 22:36:21浏览次数:30  
标签:-- pxc 集群 PXC docker root 节点

主从架构存在的问题:

主从之间的同步,是异步完成,也就意味着这是 弱一致性。可能会导致,数据写入主库后,应用程序读取从库获取不到数据,或者可能会丢失数据,对于数据安全性要求比较高的应用是不合适的,该问题可以通过 PXC集群解决。

一、简介

Percona XtraDB Cluster(简称PXC)是针对MySQL用户的高可用性和扩展性解决方案,基于Percona Server 。其包括了Write Set REPlication补丁,使用Galera 2.0库,这是一个针对事务性应用程序的同步多主机复制插件。

Percona Server 是MySQL的改进版本,使用 XtraDB 存储引擎,在功能和性能上较 MySQL 有着很显著的提升,如提升了在高负载情况下的 InnoDB 的性能,为 DBA 提供了一些非常有用的性能诊断工具,另外有更多的参数和命令来控制服务器行为。

Percona XtraDB Cluster提供了:

(1)、同步复制,事务可以在所有节点上提交。

(2)、多主机复制,你可以写到任何节点。

(3)、从( slave)服务器上的并行应用事件,真正的“并行复制”。

(4)、自动节点配置。

(5)、数据一致性,不再有未同步的从服务器。

官网: https://www.percona.com/software/mysql-database/percona-xtradb-cluster

点击download and install

图示:

三个节点组成一个集群,可以针对任何一个节点做读写操作,如果写入node1,会把数据同步到node2、node3,是同步执行的。而主从复制是在master中写入,不能在从节点中写入,pxc和主从复制是不一样的。

架构

注意:pxc任何一个节点都可以进行读写操作,不需要做读写分离。

二、部署安装

接下来,我们部署安装三节点的PXC。

1、 创建数据卷(存储路径:/var/lib/docker/volumes)

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

查看

cd /var/lib/docker/volumes

结果:

[root@hecs-xxx volumes]# ll
drwx-----x 3 root root   4096 Apr  2 21:10 v1
drwx-----x 3 root root   4096 Apr  2 21:10 v2
drwx-----x 3 root root   4096 Apr  2 21:10 v3

2、拉取镜像

docker pull percona/percona-xtradb-cluster:5.7

3、 重命名

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

结果:

[root@hecs-xxx volumes]# docker tag percona/percona-xtradb-cluster:5.7 pxc
[root@hecs-xxx volumes]# docker images
REPOSITORY                       TAG       IMAGE ID       CREATED         SIZE
pxc                              latest    649035116881   3 months ago    290MB
percona/percona-xtradb-cluster   5.7       649035116881   3 months ago    290MB

4、创建网络

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

由于之前创建过网络newnet,我们就不创建新的网络了,如下所示:

默认的bridge 网桥无法指定固定的ip,会导致mysql服务的ip不固定,最好配置为自定义网络

docker network create --driver bridge --subnet 192.172.0.0/16 --gateway 192.172.0.1 newnet

查看网络

[root@xxx conf]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
dfd016599931   bridge    bridge    local
9951733f6b75   host      host      local
8efcdae3efd4   newnet    bridge    local
9eae2373bc1f   none      null      local

5、创建容器

第一节点

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

第二节点(增加了CLUSTER_JOIN参数)

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=newnet --ip=192.172.0.3 pxc

第一个节点是主节点,第二个节点需要添加一个参数CLUSTER_JOIN,将第二个节点加入到第一个节点所在的集群中

第三节点(增加了CLUSTER_JOIN参数)

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=newnet --ip=192.172.0.4 pxc

云服务器要放开13306、13307、13308端口。

需要注意的是:先启动第一个节点,等到mysql客户端可以连接到服务后再启动其它节点,因为当我们启动第一个节点的时候,不仅仅是将第一个节点启动起来,而且完成了PXC集群的初始化,这样其他节点才能加入到集群中。

启动第一个节点

docker start pxc_node1 & docker logs -f pxc_node1

使用navicat创建一个mysql连接

连接后如下所示:

现在启动其他两个节点

docker start pxc_node2 & docker logs -f pxc_node2
docker start pxc_node3 & docker logs -f pxc_node3

使用navicat连接

 现在来测试集群是否成功,可以通过查询pxc集群的状态来判断

在任意一个节点查看集群节点

show status like 'wsrep_cluster%';

结果:

发现wsrep_cluster_size的值为3,代表当前集群有三个节点,

测试,在任意一个节点创建表

我们先创建一个数据库nacos_config,此时刷新其他两个节点,发现其他两个节点也创建了nacos_config数据库,结果如下:

现在在nacos_config目录下创建一张表

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='广告表';

结果如下:

此时其他两个节点的nacos_config数据库也有tb_ad表

在任意一个节点插入测试数据

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');

结果如下:

此时其他两个节点的tb_ad表中都存在该条数据.

集群的说明

(1)、尽可能的控制 PXC集群的规模,节点越多,数据同步速度越慢,因为要跟其他所有节点进行同步.

(2)、所有 PXC节点的硬件配置要一致,如果不一致,配置低的节点将拖慢数据同步速度

(3)、PXC 集群只支持InnoDB引擎,不支持其他的存储引擎

PXC集群方案与Replication区别

(1)、PXC 集群方案所有节点都是可读可写的,Replication从节点不能写入,因为主从同步是单向的,无法从slave节点向master点同步。

(2)、PXC 同步机制是同步进行的,这也是它能保证数据强一致性的根本原因,Replication同步机制是异步进行的,它如果从节点停止同步,依然可以向主节点插入数据,正确返回,造成数据主从数据的不一致性。

(3)、PXC 是用牺牲性能保证数据的一致性,Replication在性能上是高于PXC的。所以两者用途也不一致。PXC是用于重要信息的存储,例如:订单、用户信息等。Replication用于一般信息的存储,能够容忍数据丢失,例如:购物车,用户行为日志等。




 

标签:--,pxc,集群,PXC,docker,root,节点
From: https://www.cnblogs.com/zwh0910/p/17281343.html

相关文章

  • 基于3.5.x 版本进行zookeeper 集群搭建
    搭建zk3.5.x版本的集群环境本次搭建使用3.5.7版本的zk。3.5.x版本进行集群环境的搭建,本质其实和3.4.x是没有太大区别的。但是3.5.x的集群环境支持动态的扩缩容,因此在配置文件方面,将集群节点的配置单独抽取出来了,存放到一个zoo.cfg.dynamic的配置文件中。解压安......
  • 基于3.4.x 版本进行zookeeper 集群搭建
    搭建一主二从三个节点zookeeper集群环境***使用zk的3.4.13的版本***注意:对于zk,3.4版本和3.5版本集群环境是有一些区别的。3.5版本以后使用的是动态集群模式,支持集群的动态扩缩容。(可以在不重启的情况下,实现集群的扩容,缩容)本集群搭建使用的是3.4的版本,后......
  • 提升集群吞吐量与稳定性的秘诀: Dubbo 自适应负载均衡与限流策略实现解析
    作者:刘泉禄整体介绍本文所说的“柔性服务”主要是指consumer端的负载均衡和provider端的限流两个功能。在之前的Dubbo版本中,负载均衡部分更多的考虑的是公平性原则,即consumer端尽可能平等的从provider中作出选择,在某些情况下表现并不够理想。而限流部分只提供了静态的限......
  • 提升集群吞吐量与稳定性的秘诀: Dubbo 自适应负载均衡与限流策略实现解析
    作者:刘泉禄整体介绍本文所说的“柔性服务”主要是指consumer端的负载均衡和provider端的限流两个功能。在之前的Dubbo版本中,负载均衡部分更多的考虑的是公平性原则,即consumer端尽可能平等的从provider中作出选择,在某些情况下表现并不够理想。而限流部分只提供了静态......
  • HAProxy实现mycat集群的负载均衡
    上文我们已经实现了mycat集群(https://www.cnblogs.com/zwh0910/p/17278863.html),现在我们来实现mycat集群的负载均衡在前面架构中,虽然对mycat做了集群,保障了mycat的可靠性,但是,应用程序需要连接到多个mycat,显然不是很友好的,也就是说缺少负载均衡的组件,接下来我们来了解下HAProxy。......
  • Elasticsearch 学习-Linux单机和集群安装
    Elasticsearch学习-Linux单机和集群安装3.3linux集群安装3.3.1软件下载软件下载地址:https://www.elastic.co/cn/downloads/past-releases/elasticsearch-7-8-03.3.2软件安装1)解压软件将下载的软件解压缩#解压缩tar-zxvfelasticsearch-7.8.0-linux-x86_64.tar......
  • Tomcat 入门实战(4)--Tomcat 集群 Session 复制
    本文主要介绍在Tomcat集群中如何进行Session复制,文中所使用到的软件版本:Centos7.9.2009、Java1.8.0_321、Tomcat8.5.87。1、快速配置取消conf/server.xml文件中的以下注释来启用集群:<ClusterclassName="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>使用上述配......
  • 通过 docker-compose 快速部署 Hadoop 集群详细教程
    目录一、概述二、安装docker和docker-compose1)安装docker2)安装docker-compose三、docker-composedeploy1)设置副本数2)资源隔离四、docker-composenetwork五、docker-compose项目六、Hadoop部署(非高可用)1)安装JDK2)下载hadoop相关的软件3)构建镜像Dockerfile4)配置1、Hadoo......
  • mycat集群
    前面我们是用一个mycat对应两个mysql集群,参考:https://www.cnblogs.com/zwh0910/p/17278041.html但是在高并发的情况下,我们的系统也会出现性能的问题,显然是mycat,即所有的压力都压倒mycat上面,所以需要给mycat做集群。mycat做了数据库的代理,在高并发的情况下,必然也会面临单节点性......
  • PostgreSQL 13 pacemaker 高可用集群
    环境介绍 操作系统版本CentOSLinuxrelease7.8.2003(Core)  数据库版本psql(13.10)  PCS集群版本[root@hd-clw-select-proxysql01~]# rpm-qa|greppacemakerpacemaker-libs-1.1.23-1.el7_9.1.x86_64pacemaker-cli-1.1.23-1.el7_9.1.x86_64pacemaker-1.1.2......