docker搭建pxc集群

article/2025/9/14 6:18:52

因为公司需要搭建mysql集群,本来使用原生的mysql镜像搭建了一个简单的主从集群,后来发现使用pxc集群更加方便快捷,而且数据同步性能更强,所以尝试搭建一个pxc集群。

1.pxc介绍

Percona XtraDB Cluster(PXC集群),提供了MySQL高可用,多节点同时读写的解决方案。

PXC是基于Galera协议的高可用方案。

Galera是Codership提供的多主数据同步复制机制,可以实现多个节点间的数据同步复制以及读写,并且可保障数据库的服务高可用及数据一致性。

PXC集群是由节点组成的,推荐配置至少3个节点,但是也可以运行在2个节点上。每个节点都包含完整的数据副本。

PXC最大的优势:强一致性、无同步延迟

PXC的优点

1)服务高可用;

2)数据同步复制(并发复制),几乎无延迟;

3)多个可同时读写节点,可实现写扩展,不过最好事先进行分库分表,让各个节点分别写不同的表或者库,避免让galera解决数据冲突;

4)新节点可以自动部署,部署操作简单;

5)数据严格一致性,尤其适合电商类应用;

6)完全兼容MySQL;

PXC的缺点:

1)只支持InnoDB引擎;

2)写入效率取决于节点中最弱的一台,因为PXC集群采用的是强一致性原则,一个更改操作在所有节点都成功才算执行成功。

4)所有表都要有主键;

5)不支持LOCK TABLE等显式锁操作;

6)锁冲突、死锁问题相对更多;

2.部署集群

2.1 环境搭建

准备两台以上的服务器或者虚拟机,安装docker,并且关闭selinux和防火墙,或者开启端口,pxc一般会用到4个端口

3306:	# mysql 实例端口
4567:	# PXC cluster 相互通讯的端口
4444:	# 用于 SST(State Snapshot Transfer): 全量传输
4568:	# 用于 IST(Incremental state Transfer):增量传输传送

2.2 拉取镜像

由于一直使用的是mysql.7所以就拉取5.7版本的镜像

#拉取镜像
docker pull  percona/percona-xtradb-cluster:5.7.21

2.3 创建数据卷

因为pxc无法映射目录,所以采用的是挂载数据卷的方式,创建两个数据卷,一个是mysql数据存放卷,一个是配置存放卷

#pxc无法映射目录,只能创建数据卷,分别创建mysql数据卷和配置卷
docker volume create mysql-datadocker volume create mysql-conf

2.4 启动pxc

首先在master节点上创建第一个pxc节点,这里我使用的是host网络模式,所以不需要映射目录,其他方式需要映射上面的四个端口。

-v mysql-data:/var/lib/mysql   挂载mysql数据卷

-v mysql-conf:/etc/mysql    挂载mysql配置卷

-e CLUSTER_NAME=PXC   创建的集群名字

-e MYSQL_ROOT_PASSWORD=123456    mysql的root用户的密码

-e EXTRABACKUP_PASSWROD=123456    PXC 集群之间数据同步的密码

--privileged   创建的容器有读写的权限

--name=mysql-node1   创建的容器名称

--net=host    主机网络模式,容器直接使用主机的端口,无需映射

docker run -d -v mysql-data:/var/lib/mysql --restart always -e TZ=Asia/Shanghai \
-e CLUSTER_NAME=PXC -v mysql-conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=password4006087608 -e EXTRABACKUP_PASSWROD=password4006087608 \
--privileged --name=mysql-node1 --net=host percona/percona-xtradb-cluster:5.7.21

使用docker ps命令可以看到容器已经启动成功,使用navicat等工具连接

如果连接成功就表示第一个节点已经成功启动

因为项目需要要修改my.cnf里的sql_mode,这个时候我们可以去挂载的配置卷去修改my.cnf,使用inspect命令可以查看卷所在的位置

 然后到/var/lib/docker/volumes/mysql-conf_data下面的my.cnf更改配置文件,然后重新启动容器

docker restart mysql-node1

启动成功后连接到服务器上执行命令查看是否修改成功

可以查看到已经修改成功,然后我们部署第二个节点

2.5 部署第二个节点

跟第一台服务器一样,创建两个数据卷,然后直接启动容器

docker run -idt -v mysql-data:/var/lib/mysql --restart always -e TZ=Asia/Shanghai \
-e CLUSTER_NAME=PXC -v mysql-conf:/etc/mysql -e CLUSTER_JOIN=192.168.3.232  \
-e MYSQL_ROOT_PASSWORD=123456 -e EXTRABACKUP_PASSWROD=123456 \
--privileged --name=mysql-node2 --net=host percona/percona-xtradb-cluster:5.7.21

 然后使用docker ps命令查看是否启动,继续使用navicat工具测试能否连接成功

 

 然后重复第一个节点的步骤,修改my.cnf然后重启

2.6 测试集群数据同步

创建一个新的mysql账号,该账号后续也会用到。

CREATE USER 'haproxy'@'%' IDENTIFIED BY '';

我们是在node1节点上创建了一个haproxy账号,然后可以再node2节点的user表中查询到这个用户,至此pxc集群数据同步验证完成

 

 3. 使用haproxy进行负载均衡

如果单纯是想做pxc集群的话上面的步骤已经完成,但是想要使用负载均衡来使用pxc集群的话,我们可以使用haproxy工具

3.1 拉取haproxy镜像

#拉取haprox镜像
docker pull haproxy

3.2 新建配置文件

#新建目录
mkdir /data/haproxy#新建配置文件
vi /data/haproxy/haproxy.cfg

配置文件的内容,主要还是最后的两个server需要配置前面的两个节点,weight标识权重

#haproxy.cfg配置
global#工作目录,这边要和创建容器指定的目录对应# chroot /usr/local/etc/haproxy#日志文件log 127.0.0.1 local5 info#守护进程运行daemon
defaultslog globalmode http#日志格式option httplog#日志中不记录负载均衡的心跳检测记录option dontlognull#连接超时(毫秒)timeout connect 5000#客户端超时(毫秒)timeout client 50000#服务器超时(毫秒)timeout server 50000#监控界面listen admin_stats#监控界面的访问的IP和端口bind 0.0.0.0:8888#访问协议mode http#URI相对地址stats uri /dbs_monitor#统计报告格式stats realm Global\ statistics#登陆帐户信息stats auth admin:admin#数据库负载均衡listen proxy-mysql#访问的IP和端口,haproxy开发的端口为3306#假如有人访问haproxy的3306端口,则将请求转发给下面的数据库实例bind 0.0.0.0:3306#网络协议mode tcp#负载均衡算法(轮询算法)#轮询算法:roundrobin#权重算法:static-rr#最少连接算法:leastconn#请求源IP算法:sourcebalance roundrobin#日志格式option tcplog#在MySQL中创建一个没有权限的haproxy用户,密码为空。#Haproxy使用这个账户对MySQL数据库心跳检测option mysql-check user haproxyserver MySQL_1 192.168.3.232:3306 check weight 1 maxconn 2000server MySQL_2 192.168.3.233:3306 check weight 1 maxconn 2000#使用keepalive检测死链option tcpka

3.3 启动haproxy容器

#在主节点创建haproxy容器
docker run -d -p 8888:8888 -p 3307:3306 -v /data/haproxy:/usr/local/etc/haproxy \
--name haproxy --privileged haproxy	

3.4 验证是否启动成功

输入地址  http://192.168.3.232:8808/dbs_monitor

如果出现如下图两个节点都是绿色状态则说明连接成功,两个节点都是正常的状态

然后测试负载均衡端口 ,因为我们是部署在第一个节点的服务器上,所以用navicat连接第一个节点的3307端口

然后新建一个数据库test123,可以发现node2节点也会自动新建test123数据库,说明haproxy生效,至此pxc集群搭建完成


http://chatgpt.dhexx.cn/article/PrwNNxAX.shtml

相关文章

mysql gtid 还是pxc_PXC中的GTIDs

基本环境:PXC 5.7.19 RowGtid,3节点 一、Galera GTID vs MySQL GTID 1.1、Galera GTID vs MySQL GTID Both kinds of GTIDs are using the same format: . For Galera, is generated when the cluster is bootstrapped. This is shared by all nodes. Fo…

mysql pxc搭建_MySQL(PXC)集群搭建

前言 我这里使用三台CentOS Linux release 7.8.2003的虚拟机来作演示 [rootn1 ~]# cat /etc/redhat-release CentOS Linux release 7.8.2003 (Core) 安装前准备 请确保服务器没有安装MySQL,如果已经安装了请先卸载(后面会起冲突) 删除 MariaDB 这里我的服务器版本为…

docker pxc mysql_docker安装pxc集群的详细教程

前言 现在mysql自建集群方案有多种,keepalived、MHA、PXC、MYSQL主备等,但是目前根据自身情况和条件,选择使用pxc的放来进行搭建,最大的好处就是,多主多备,即主从一体,没有同步延时问题&#xf…

mysql pxc gcache_MySQL高可用之PXC

PXC简介 PXC(Percona XtraDB Cluster)是一个开源的MySQL高可用解决方案。他将Percona Server和XtraBackup与Galera库集成,以实现同步多主复制。基于Galera的高可用方案主要有MariaDB Galera Cluster和Percona XtraDB Cluster,目前PXC架构在生产线上用的更…

PXC集群

1.pxc集群 1.1 软件介绍 • Percona XtraDB Cluster(简称PXC) - 是基于Galera的mysql高可用集群解决方案 - Galera Cluster是Codership公司开发的一套免费开源的高可用方案 - PXC集群主要由两部分组成:Percona Server with XtraDB和Write Set Replication patches(同步,多主复制…

mysql bootstrap pxc_Mysql高可用之PXC

一。PXC简介 Percona XtraDB Cluster简称PXC。是一套开源mysql高可用解决方案(XtraDb是mysql被oracle收购之前 开源一个分支 其他分支还有mariadb),Percona Xtradb Cluster的实现是在原mysql代码上通过Galera包将不同的mysql实例(新名称 Percona Server)连接起来&am…

mysql pxc 安装_MYSQL PXC 集群安装

名词介绍: WS:write set写数据集 IST: Incremental State Transfer增量同步 SST:State Snapshot Transfer全量同步 1.准备环境 1.1 centos 7系统,三台主机 IP分别为:192.168.80.163;192.168.80.167;192.168…

kubernetes mysql pxc_PXC快速入门

C C语言开发 PXC快速入门 1.快速入门 实验环境: Node Host IPNode1 pxc1 192.168.70.61 Node2 pxc2 192.168.70.62 Node3 pxc3 192.168.70.63 1.1 安装Percona-XtraDb-Cluster yum源: [percona] namepercona_repo baseurl https://mirrors.tuna.tsinghu…

mysql pxc

一、PXC介绍 Percona Server由领先的MySQL咨询公司Percona发布。 Percona Server是一款独立的数据库产品,其可以完全与MySQL兼容,可以在不更改代码的情况了下将存储引擎更换成XtraDB 。XtraDB可以看做是InnoDB存储引擎的增强版本,它完全兼容InnoDB,且提供了很多InnoDB不具…

mysql pxc集群 原理 (图解+秒懂+史上最全)

文章很长,而且持续更新,建议收藏起来,慢慢读! Java 高并发 发烧友社群:疯狂创客圈(总入口) 奉上以下珍贵的学习资源: 免费赠送 经典图书 : 极致经典 社群大片好评 《 …

什么是PXC?

目录 什么是PXC PXC的作用 PXC集群的注意事项 比较PXC模式和Replication(传统主从) 什么是PXC PXC是针对MySQL用户的高可用性和扩展性解决方案,基于Percona Server 。 Percona Server 是MySQL的改进版本,使用 XtraDB 存储引擎,在功能和性…

MySQL高可用之PXC详解

PXC 一、PXC相关简介二、部署PXC 一、PXC相关简介 1.pxc简介 PXC(Percona XtraDB Cluster)是一个开源的MySQL高可用解决方案。它将Percona server和XtraBackup与galera库集成,以实现同步多主复制。基于galera的高可用方案主要有MariaDB gale…

小马激活工具拒绝访问cannot open file c:\oemsf解决方法

第一步、激活本机的管理员帐号(administrator),进入命令行窗口(WinKeyR 出现运行窗口,输入“cmd”,按确定),输入以下命令:net user administrator /active:yes。 第二步、使用管理员帐号(administrator)登录系统&am…

小马激活工具对比暴风激活工具

提到win7激活工具,人气最旺的就是:小马激活工具和暴风激活工具。那么,这两款win7激活工具哪个好呢?在今天的教程中,小编就给大家分享一下win7激活工具:小马激活工具和暴风激活工具的使用过程对比&#xff0…

使用小马哥win10 激活工具激活后, 桌面上经常出现一个广告快捷方式的 解决方法...

【本文首发在 梦溪笔记 http://www.mengxi.me 】 小马哥的win10 激活工具 可以一键激活win10, 使用方便,还有效, 但是也存在个人很讨厌的打广告行为, 每次电脑启动时, 会在桌面上创建一个垃圾网站的快捷方式, 图标长的…

小马激活工具出现Cannot open file k:\OEMSF 的解决方法

遇到“此windows副本不是正版7601”,我们一般用小马激活软件激活一下就可以了。但是有时候可能不管用,会显示“Cannot open file OEMSF”的错误,那么我们该怎么解决呢?不用担心,下面就为大家介绍一下,一起来…

很抱歉 程序无法在非mbr引导的分区上激活

很抱歉 程序无法在非mbr引导的分区上激活 [Windows] 神器。完美解决非MBR引导下的WIN7激活问题。你会用的到的 才帮同事装了个系统,发现有100M的隐藏分区。 小马等其他激活工具都激活不了。提示非MBR引导无法激活。 找到了这个激活工具,完美解决。 链…

小马激活手动分配磁盘_不要成为“单把小马”手动测试仪

小马激活手动分配磁盘 我记得我父母带我去马戏团时见过小马。 它们是节目的重要组成部分,以敏捷,跳过障碍物和用两只脚走路给观众留下了深刻的印象。 小马的表演是如此多样,即使您连续几天参加演出,也很难对此感到无聊。 但是让…

使用小马激活工具激活Windows后,浏览器的首页被篡改,如何改回去?

方法一 直接修改浏览器的名字,这种事最简单的方法,KMS(小马激活工具)通过搜索相关的关键字。比如chrome、google、360等一些主流浏览器,对其进行动态代码注入。 方法二 通过WMI(Windows Management Inst…

小马激活软件下载,当心伪小马,有病毒

官方的小马激活软件已经停止更新了,下文是官方停更公告。 http://www.pccppc.com/xiaomajihuo-html 所以小马oem7以后的都不是官方的,包含病毒。重装系统后,一般是先激活系统,再安装杀毒软件,这就给“伪小马激活工具”…