如何搭建基于Kubernates的Mysql多主机群

docker搭建pxc集群 阅读详情

1、Persona XtraDB Cluster介绍:

       Persona XtraDB Cluster集群是由HPE公司提出的基于Mysql的多主数据库集群,该集群主要是通过容器的方式实现Mysql集群的部署,并且能够依托Kubernates实现对集群节点的管理。

(1)集群的主要特点

        Persona XtraDB Cluster集群的特点实现的是多主服务器协同工作,能够实现多节点共享和单独提供服务的能力。从而减少了因为master节点宕机造成的数据库运行效率低下或者无法提供服务的问题。根据官方资料,其拓扑结构及其特点如下图所示:

    依据上图中的拓扑结构和特点,Percona XtraDB Cluster与原有的数据库相比,也存在比较大的优缺点:

2、PXC的部署过程

       ①创建Cluster服务

       由于PXC(Percona XtraDB Cluster)主要是基于Kubernates进行部署,因此需要在Kubernates环境下创建相应的服务和Pod。当然基于k8s创建服务和Pod等主要是在k8s集群的master节点中完成。首先需要为PXC创建统一的集群服务。在此之前需要下载PXC的镜像,并且部署到自己的镜像服务器上,我们这边采用的私有服务器地址是:10.1.24.90:5000,这个地址在后续创建服务中会用到。我们创建配置脚本文件为:pxc-cluster-service.yaml 。其具体的脚本文件如下图所示:

如上图所示,我们在k8s中创建了一个名称叫做pxc-cluster的服务,端口号是3306

通过如下命令,执行上述脚本:

$ Kubectl create -f ./pxc-cluster-service.yaml

执行上述脚本以后,提示创建服务成功。通过如下命令,可以查看系统中是否已经启动了相关的服务

$ kubectl get svc --all-namespaces
通过上述命令以后,我们可以查看到如下状态:

      

如上图所示,我们发现刚才创建的cluster服务已经启动。

②创建Cluster的node1节点

       在Kubernates系统中创建完成pxc-cluster服务以后,我们就开始着手创建集群的每个节点了。当然在k8s中创建的服务,自然是通过pod方式实现。因此每次添加新的节点都是通过配置脚本的方式来创建的,并且需要为每一个节点起一个名称。

       特别需要注意的是,创建节点的时候Service和RC需要同时创建,如果仅有Service而无Endpoint的话,后续的SSL过程会失败,那么创建的节点也会自动停止,导致创建的pod停止,会被RC不断的重启。

       因此在创建配置脚本过程中,需要创建两个部分:Service和RC,具体的源代码如下所示:

Service部分:
apiVersion: v1
kind: Service
metadata:
  name: pxc-node1
  labels:
    node: pxc-node1
spec:
  ports:
    - port: 3306
      name: mysql
    - port: 4444
      name: state-snapshot-transfer
    - port: 4567
      name: replication-traffic
    - port: 4568
      name: incremental-state-transfer
  selector:
    node: pxc-node1
---
上述部分是配置脚本的Service部分,在k8s集群中创建了一个pxc的节点服务,名称为pxc-node1,端口和pxc-cluster服务统一为3306,数据库名称为mysql,并且创建了另外三个端口:stat-snapshot-transfer(4444)、replication-traffic(4567)、incremental-stat-transfer(4568)
RC部分:
---
apiVersion: v1
kind: ReplicationController
metadata:
  name: pxc-node1
spec:
  replicas: 1
  template:
    metadata:
      labels:
        node: pxc-node1
        unit: pxc-cluster
    spec:
      containers:
        - resources:
            limits:
              cpu: 0.3
          image: 10.1.24.90:5000/percona_xtradb_cluster_5_6
          name: pxc-node1
          ports:
            - containerPort: 3306
            - containerPort: 4444
            - containerPort: 4567
            - containerPort: 4568
          env:
            - name: GALERA_CLUSTER
              value: "true"
            - name: WSREP_CLUSTER_ADDRESS
              value: gcomm://
            - name: WSREP_SST_USER
              value: sst
            - name: WSREP_SST_PASSWORD
              value: sst
            - name: MYSQL_ROOT_PASSWORD
              value: root
上述部分是配置脚本的RC部分,在k8s中创建了一个pxc-node的RC,其中副本数为1,可以根据需求修改为其他数字。RC的名称同样是pxc-node1,说明此节点的副本是1个。并且创建Pod所需要的镜像,正如从之前上传的私库镜像服务器上下载镜像文件。而所创建的pod在配置脚本中归属的单元为pxc-cluster集群中。而在创建的环境中也同时创建的mysql的环境变量,包括:root用户和密码,SST用户和密码等等。
     执行如下命令,创建node1的pod:
$ kubectl create -f ./pxc-node1.yaml


执行上述命令以后,执行如下命令,可以查看创建的pod是否启动:

$ kubectl get pods

通过上图,我们发现在k8s系统中,我们启动的pod有我们刚刚创建好的pod。说明节点创建成功。

通过上述方法,我们可以成功创建node1,node2,node3等等,当然需要修改配置文件的名称以及相关service和RC的名称。

通过这种方法可以组建一个基于Kubernates的mysql集群。

3、验证mysql部署情况

执行如下命令,连接PXC数据库集群。

$ kubectl exec -ti <POD-ID> --mysql-u root -proot -h pxc-cluster
其中POD-ID就是上述查询到的POD的名称。比如本文创建的POD节点有四个,分别是:

pxc-node1-rkwj8
pxc-node2-a6usw
pxc-node3-oky8e
pxc-node4-6q6bz
那么选择其中一个pod都可以。
执行上述命令以后,其结果如下图所示:


说明已经成功连接到mysql数据库中。
执行如下脚本,具体查看一下集群的节点数有几个:
$ mysql> show status like 'wsrep_cluster_size';

执行上述命令后,可以查看到如下图所示:

如上图所示,具体的集群的节点数有4个,这跟我们之前创建的4个节点吻合。说明我们创建的四个节点成功。
4、备注
如果删除其中一个节点pod,k8s系统都会自动拉起一个节点。但是重新查看mysql中的节点数状态会发现,新拉起的节点并不能够识别。需要将其他创建的节点都删掉重新创建才能正常识别。
 

PXC集群状态查看 主要的PXC状态查看与参数解释,文档中的示例是线上真实运行的PXC集群例子 立即下载

相关推荐

K8s集群搭建手册(超级详细)k8s版本1.8.3

超级详细的K8s集群安装手册,公司安装的时候同步编写的

kubernetes mysql pxc_K8S使用operator部署和管理Percona - PXC集群

概述pxc为mysql的一种集群模型,我们结合operator和k8s 完成pxc的部署和扩容硬盘使用local卷,如何管理local卷请翻阅 我的另一篇文章https://www.jianshu.com/p/bfa204cef8c0英文文档详情 https://percona.github.io/percona-xtradb-cluster-operator/configure/backups下...

weixin_42131342的博客 1204

pxc-kubernetes:Kubernetes 配置以生成具有任意数量节点的 PXC 集群

在 Google Cloud Engine (GCE) 上使用 Percona XtraDB Cluster (PXC) 的 Kubernetes 介绍 此存储库包含将 PXC 集群生成到 Google Cloud Engine (GCE) 的文件。 运行方式 脚本 kubecluster 本质上是幂等的,您可以根据集群中的节点需要多次运行它,而无需担心其他任何事情。 脚本的多次调用将引导新集群或通过添加新Pods向集群添加新节点。 此外,还生成了 Kubernetes 集群Service 。 设置 确保安装最新的 Google Cloud SDK。 目前最新的是 。 该脚本假定您已正确设置 GCE。 有关更多信息,请参阅 。 有关配置的更多详细信息。 此外,Kubernetes 文档是宝贵的资源。 确保理解描述的Pods 、 Services和其他概念。 确保为 gcloud

如何在Kubernetes中安装Mysql PXC(Percona XtraDB Cluster)集群

percona官方为我们提供在kubernetes中部署PXC集群的最佳实践:Percona Kubernetes Operator for PXC, https://github.com/percona/percona-xtradb-cluster-operator 使用Operator安装PXC的方法如下: 1、克隆percona-xtradb-cluster-operator代码仓 $ git clone -b v1.9.0 https://github.com/perc..

洒满阳光的午后的博客 2469

设置Solidworks导出文件的坐标系,stl坐标系平移

使用solidworks输出的模型坐标不再原点,怎么平行坐标系,这个方法很简单

weixin_45650767的博客 1万+

Hermes+MemOS记忆系统:用SQLite构建可编辑AI个人认知资产

AI记忆不是简单延长上下文或叠加RAG,而是构建具备分层存储、混合检索与自然语言反馈能力的个人认知资产。其核心原理在于将用户交互痕迹(L1)、偏好策略(L2)、结构化世界模型(L3)和结晶化技能统一管理,实现记忆的可追溯、可修正、可进化。技术价值体现在降低token消耗、提升长程一致性、支持离线演进,并突破传统‘静态快照’式知识库局限。典型应用场景包括个人知识助手、客服工单分析Agent、研发文档理解系统等。本文聚焦Hermes Agent与MemOS深度集成方案,详解SQLite作为ACID底座支撑L1/

weixin_33623304的博客 434

kubernetes mysql pxc_kubernetes部署Percona XtraDB Cluster集群

PXC介绍全称percona-xtradb-cluster,提供了MySQL高可用的一种实现方法。PXC集群以节点组成(推荐至少3节点,便于故障恢复),每个节点都是基于常规的 MySQL Server,意味着你可以从集群中分离出某节点单独使用,集群中每个节点都包含完整的数据。PXC特性同步复制支持多主复制支持并行复制作为高可用方案,实施相对简单架构图如下所示部署PXC集群到kubernetes1、...

weixin_30842027的博客 684

AI赋能运筹优化:从参数生成到智能求解的工程实践

运筹学通过线性规划、整数规划等数学模型,为供应链、物流、生产排程等复杂决策问题寻找最优解,其核心价值在于提升资源利用效率与决策科学性。传统方法依赖精确的输入参数与专家经验,面临数据不准、建模门槛高、求解调优难等挑战。人工智能技术的引入,正从原理层面重塑这一流程:通过深度学习模型生成更贴合现实的动态参数(如需求分布、行驶时间),利用自然语言处理降低建模门槛,并借助强化学习对求解器进行智能参数调优。这种AI与运筹学的融合,在工程实践中显著提升了优化系统的自适应能力与求解效率,使其在应对实时交通、柔性生产调度等动

weixin_26913055的博客 595

Kubernetes部署系列:高可用MySQL集群

Kubernetes部署系列:高可用MySQL集群

CancerKing的博客 896

二维码扫描与页面跳转的完整流程解析

本文详细解析了二维码扫描与页面跳转的完整流程,从核心原理到前后端实现,涵盖了二维码生成、扫码事件处理、后端验证机制及跳转逻辑等关键环节。特别介绍了如何使用qrcode.js生成二维码、WebSocket处理扫码状态以及JWT令牌验证设计,帮助开发者构建安全高效的扫码跳转系统。

cicd6pipeline的博客 1089

046篇:数据统计:分组、求和、平均值、最大最小值

本文介绍了在RPA中实现数据分组统计的方法。通过字典+循环组合,可以完成按单字段或多字段的分组聚合操作,包括求和、计数、求平均值及最大/最小值等。文章详细讲解了分组统计的原理,并提供了单级分组、多级分组的具体实现步骤,最后通过销售数据按月分组的实战案例,演示了如何从原始数据到生成汇总报表的完整流程。这些方法可以灵活应用于各类数据统计分析场景。

weixin_59649563的博客 214

K8S使用operator部署和管理Percona - PXC集群

概述 pxc为mysql的一种集群模型,我们结合operator和k8s 完成pxc的部署和扩容 硬盘使用local卷,如何管理local卷请翻阅 我的另一篇文章 https://www.jianshu.com/p/bfa204cef8c0 英文文档详情 https://percona.github.io/percona-xtradb-cluster-operator/configure/b...

记事本 4801

爬虫面试:关于爬虫破解验证码的13个经典面试题

​解释:验证码是一种用于区分人类用户和自动化程序(如爬虫)的技术,通常通过显示图形、文字或音频等方式,要求用户完成特定任务(如识别扭曲的字母、点击特定区域等)。​作用:防止恶意爬虫滥用网站资源、进行批量注册、登录破解等行为,保护网站的安全性和数据的完整性。

数据知道的博客 1万+

探索 Docker/K8s 部署 MySQL 的创新实践与优化技巧

Docker/K8s 部署 MySQL 的核心,是 “用云原生的方式解决有状态应用的痛点”—— 通过 StatefulSet 保障实例稳定性,用 PVC+StorageClass 实现数据持久化,靠 MGR+Operator 实现高可用,再结合 GitOps、Vault、Prometheus 等工具链提升运维效率。未来,随着 K8s 对有状态应用支持的深化(如 K8s 1.28 + 的 StatefulSet 动态扩缩容优化),MySQL 容器化部署将更趋成熟。

weixin_42300449的博客 1639

ROS2 Nav2 - 模型预测路径积分控制器(MPPI)

这是一个预测控制器(局部轨迹规划器),用于实现模型预测路径积分(MPPI)算法,以跟踪具有自适应避障功能的路径。它包含基于插件的 critic 函数,可影响算法的行为。它由 Aleksei Budyakov 创建,由 Steve Macenski 为 Nav2 进行改编和开发。该插件实现了 nav2_core::Controller(控制器)接口,可在整个导航堆栈中作为控制器服务器的动作服务器(controller_server)中的局部轨迹规划器使用。据测定,该控制器可在中等英特尔处理器(第四代 i5)上

机器人控制与仿真应用 3913

第 9 篇:TMC2240 速度调节实战|STEP 信号生成 + 平滑调速算法(无抖动)

摘要:本文详细介绍了TMC2240电机调速方案,重点解决调速时电机抖动、丢步等问题。核心原理是通过STEP信号频率控制转速,结合平滑加减速算法避免电流冲击。文章从速度与STEP频率的数学关系入手,提供了定时器生成固定频率STEP信号的实现代码,并给出不同转速下的频率参数表。针对42步进电机+256微步细分场景,详细讲解了定时器初始化、中断处理及固定转速设置方法,帮助开发者实现稳定调速。全文包含可直接复用的代码片段,适合嵌入式开发者快速实现电机平滑调速功能。

BackCatK Chen的博客 1035

如何在K8S里面部署mysql集群(多机可读写)并发布在负载地址上

1、环境安装 请安装完成K8S环境,此示例中我们有一个master:10.41.10.61,3个node:10.41.10.71-73,1个registry镜像仓库:10.41.10.81 请在K8S所有节点上配置/etc/docker/daemon.json,添加: “insecure-registries”: [“10.41.10.81:5000”] 2、在镜像仓库服务上下载Pe...

LegendHonor的博客 2737

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

helm安装mysql

一.版本信息 [root@node-16 ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION node-16 Ready master 6d18h v1.16.0 node-17 Ready worker 6d18h v1.16.0 node-18 Ready w...

云时代-IT运维 625

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

mysql5.7.25集群部署和方案设计(附PXC一键部署脚本)

脚本后续更新及迭代将由kkitDeploy项目代替 https://github.com/luckman666/kkitdeploy_server 请大家持续关注kkitDeploy 还记得我们之前部署mysql集群有多麻烦嘛?波哥来救你们啦!~ 我已将项目上传到了我的github仓库中,大家可以点击仓库地址出现的连接登录查看相应的代码!如果觉得不错别忘了转发、点赞...

anqunluo5527的博客 427

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

MySQL docker PXC集群搭建笔记

-------------------------------------------------------------------------------------------------------------------------------------------------------------------- 9.28笔记重构更新: 离记录这个笔记的时间也差不多有一个月了,在...

布偶猫爸爸的博客 2909

kubernetes mysql pxc_MySQL高可用——PXC简介

序言Percona XtraDB Cluster(简称PXC集群)提供了MySQL高可用的一种实现方法。PXC属于一套近乎完美的mysql高可用集群解决方案,相比那些比较传统的基于主从复制模式的集群架构MHA和MM+keepalived,galera cluster最突出特点就是解决了诟病已久的数据复制延迟问题,基本上可以达到实时同步。而且节点与节点之间,他们相互的关系是对等的。为什么需要MySQ...

weixin_31430653的博客 411

在K8S集群中一步步构建一个复杂的MySQL数据库

文档说明 ​ 本文面向容器初学者,作者先简单的用MySQL官方镜像搭建一个可运行的单实例数据库,而后考虑生产或现实需求,一步一步完善并揉合K8S多个技术,从而构建一个复杂且可供生产用的MySQL单实例库。 简单部署 ​ 如下所示,我们仅需设置root用户密码(环境变量MYSQL_ROOT_PASSWORD), 便可轻松的使用M...

weixin_33853827的博客 764

kubernetes(k8s)可以让WordPress+MySQL容器更持久

本文的示例描述了如何在 Kubernetes 上运行一个WordPress 和 MySQL 的持续化安装。我们将使用 MySQL和 WordPress 官方Docker镜像进行安装。(WordPress镜像包括Apache服务器)。 本文会展示以下 Kubernetes 概念: ● Persistent Volumes(以下简称PV)用来定义持久化磁盘(磁盘生命周期不与Pods

DockerInfo的博客 4292
上一篇: docker swarm 搭建分布式Mysql集群
下一篇: K8S使用operator部署和管理Percona - PXC集群
CodingSir
博客等级 码龄21年 2149粉丝 812原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值