利用Percona XtraDB Cluster搭建MySql高可用集群

  • 引言
  • 拉取镜像
  • 创建单节点实例(一般在测试环境中使用)
  • 自定义网络(集群间相互隔离)
  • 映射数据目录
  • 创建docker-compose PXC容器
  • 用docker-compose启动PXC集群
  • 集群验证
  • 数据库负载均衡的必要性
  • Haproxy负载均衡器部署
  • 故障排查

引言

告别单点故障,拥抱持续可用——构建基于 Percona XtraDB Cluster 的 MySQL 高可用集群

在现代数字化业务的核心,数据库扮演着至关重要的角色。作为应用数据的基石,MySQL 数据库的高可用性 (High Availability, HA) 和数据一致性直接决定了服务的连续性、用户体验的流畅度以及企业的声誉和收益。传统的单节点 MySQL 部署或简单的主从复制架构,在面对硬件故障、网络中断、计划内维护甚至数据中心级灾难时,往往显得力不从心,单点故障 (SPOF) 的风险如同达摩克利斯之剑,时刻威胁着业务的稳定运行。

当数据库服务中断,随之而来的可能是交易失败、用户流失、服务降级乃至品牌受损。因此,构建一个能够自动故障转移、提供近乎零停机维护窗口、并确保数据强一致性的数据库集群环境,已成为支撑关键业务系统的刚性需求。

Percona XtraDB Cluster (PXC) 正是在这一背景下脱颖而出的强大解决方案。它基于成熟的 Galera 库技术,将 MySQL 数据库(具体是其增强分支 Percona Server for MySQL)与同步多主复制机制深度集成。PXC 的核心魅力在于它实现了 “多主同时读写 (Multi-Master)” 的架构:

  1. 真正的同步复制: 数据变更在提交时近乎实时地同步到集群所有节点,从根本上保障了数据的强一致性。
  2. 自动成员控制与故障转移: 节点状态自动感知,一旦主节点失效,客户端可无缝切换到其他健康节点继续读写,极大缩短甚至消除服务中断时间 (RTO)。
  3. 并行复制与高性能: 优化的复制流程提供了良好的性能表现,满足大部分 OLTP 场景需求。
  4. 数据一致性保障: 基于认证的复制机制,确保集群内所有节点在任意时刻都保持数据视图的一致性。
  5. 透明兼容性: 对上层应用而言,PXC 集群表现得如同一个单一的 MySQL 数据库,应用无需或只需极少的修改即可接入。

本文将深入探讨如何利用 Percona XtraDB Cluster 构建一个健壮的 MySQL 高可用集群。我们将从核心概念解析入手,逐步指导您完成集群的规划、部署、配置优化,并介绍关键的运维操作(如节点增删、状态监控、备份恢复)和故障处理策略。无论您是寻求为关键业务数据库增添韧性,还是希望提升数据库基础设施的现代化水平,跟随本文的指引,您都将掌握构建一个自主可控、高可用的 MySQL 数据库服务集群的关键技能,为您的业务数据保驾护航,开启数据库持续可用的新篇章。

拉取镜像

  • Docker hub 官网
    https://hub.docker.com/r/percona/percona-xtradb-cluster

这里拉取8.0.23(需要翻墙),为了方便也可以采用下面国内镜像

docker pull percona/percona-xtradb-cluster:8.0.23//国内
docker pull www.ecnfo.com:1443/proxy/percona/percona-xtradb-cluster:8.0.23

创建单节点实例(一般在测试环境中使用)

docker run -d \--name pxcnode1 \-e MYSQL_ROOT_PASSWORD=yyinfo2021 \-e CLUSTER_NAME=pxc-cluster \-e XTRABACKUP_PASSWORD=yyinfo2021 \-e MYSQL_CLUSTER_BOOTSTRAP=yes \-p 3306:3306 \www.ecnfo.com:1443/proxy/percona/percona-xtradb-cluster:8.0

自定义网络(集群间相互隔离)

docker network create --driver bridge --subnet 10.139.0.0/16 --gateway 10.139.0.1 pknet

预先创建一个自定义的网络pkulaw_net,此处的10.139可以自定义,不冲突即可。创建自定义网络的好处是不同的集群使用不同的网络,保证集群是安全和健康的。
在这里插入图片描述

网络模式

bridge :桥接 docker(默认,自己创建也是用bridge模式)
none :不配置网络,一般不用
host :和所主机共享网络
container :容器网络连通(用得少!局限很大)

查看网络的相关信息

docker network inspect pknet

在这里插入图片描述

映射数据目录

创建Docker卷对应pxc容器与宿主机的数据映射

docker volume create --name pxcnode1
docker volume create --name pxcnode2
docker volume create --name pxcnode3

查看数据卷

//列表
docker volume list
//指定数据卷
docker inspect pxcnode1

删除数据卷

docker volume rm pxcnode1

创建存储目录,并授予权限

mkdir -p /root/installs/pxc/{logs,pxcnode1,pxcnode2,pxcnode3} && cd /root/installs/pxcchmod 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/86166.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/86166.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode 3592. Inverse Coin Change

Leetcode 3592. Inverse Coin Change 1. 解题思路2. 代码实现 题目链接:3592. Inverse Coin Change 1. 解题思路 这一题的话思路上我们走的是一个贪婪算法的思路,即从小到大依次考察,显然,每一次当前最小的非零面额有且必有当前…

打造属于你的AI智能体,从数据开始 —— 使用 Bright Data MCP+Trae快速构建垂直智能体

一、AI智能体的机遇与挑战 最近这两年全民AI热潮开始,各种智能体应用层出不穷。在AI智能体火热的当下,越来越多开发者想要构建自己的智能体,特别是垂直领域,需求更是旺盛。比如招聘助手、电商导购、财经分析师等等。从技术角度来…

嵌入式自学四十八天

时钟 cpu528MHz, PLL:锁相环电路 倍频功能:Fin*n Fout Prescale: 预分频器 降频 Fin/m Fout PFD:相位分子分频器 Fin *n/m Fout 时钟开了后,先到时钟根产生器,对时钟频率更改&…

光谱相机应对复杂环境条件的关键技术与方案

一、极端温度适应性‌ ‌主动温控系统‌ ‌半导体冷却(TEC)‌:维持探测器在5-40℃工作区间,防止高温噪声(如SPECIM FX17)。 ‌散热结构‌:铝合金外壳散热鳍片,工业级相机可在-10℃…

个人技术文档库构建实践:基于Cursor和GitHub的知识管理系统(含cursor rules)

技术选型 核心工具链 Cursor编辑器:AI辅助写作,智能补全和结构优化GitHub:版本控制、跨设备同步、团队协作Markdown:轻量级格式,跨平台兼容,与Git完美集成 与主流工具对比 选择CursorGitHub适合&#xf…

烟花爆竹生产企业库房存储安全风险预警系统

烟花爆竹生产企业库房存储安全风险预警系统是保障库房物资安全、规范作业流程、防范安全事故的重要技术手段,涵盖多个关键预警功能。​ 温湿度预警​ 在库房内安装温湿度传感器,这些传感器如同敏锐的“环境感知员”,能够实时监测库房内环境变…

LINUX 625 DNS域名管理系统

建安错题 根据《安全色》,红、黄、蓝、绿四种安全色各自传递着不同的安全含义和信息,其中表示要求人们必须遵守的规定的颜色是()。 根据《安全色》国家标准(GB 2893-2008),四种安全色的含义如下: ​​红色​​&#…

FastMCP框架进行MCP开发:(三)从SSE升级到SteamableHTTP

一、前言 在MCP(Model Context Protocol)中,Streamable HTTP和SSE(Server-Sent Events)都是用于实现客户端与服务器之间通信的传输机制。然而,它们在设计、功能以及性能表现上有着显著的区别。 二、SSE在…

Android 15 变更及适配攻略

2025年的第一篇Android适配,比以往来的更晚一些。废话不多说,我们开始!! 准备工作 首先将我们项目中的 targetSdk和compileSdk 升至 35。 推荐使用Android Studio Koala Feature Drop | 2024.1.2或更高版本。AGP版本最低升级到…

Vue项目使用defer优化页面白屏,性能优化提升,秒加载!!!

defer表示延迟加载,针对大量节点的渲染加载,结合使用关键帧requestAnimationFrame的形式来分片加载,可以优化白屏时间 知识补充: requestAnimationFrame requestAnimationFrame 是根据帧数来执行回调函数的,就是屏幕…

sentinel与seata组件在微服务中的基本作用

微服务基础内容: 在微服务中,首先学习了微服务的横向拆分与纵向拆分,纵向拆分指按照功能拆分模块,横向拆分指将高复用的模块单独拆分,使纵向拆分的模块去调用这部分内容。 学习了基本拆分后,需要知道微服…

微信点餐小程序—美食物

本项目是基于WAMP Server 和PHP 动态网页技术构建的微信小程序点餐系统,该系统主要分为前端(微信小程序)和后端(基于PHPMySQL服务器端) 整体架构流程 1、前端部分 用户界面:展示菜品、处理用户点餐操作、…

记录Idea运行控制台乱码处理方案

记录Idea运行控制台乱码处理方案 方法1:修改运行配置 打开 Run/Debug Configurations在对应的运行配置中 → 找到 VM Options → 添加: -Dfile.encodingUTF-8 -Dsun.jnu.encodingUTF-8重新运行程序 方法2:强制指定输出流编码 在代码中显…

JVM对象内存分配机制全解析

jvm创建对象的内存分配过程 1、逃逸对象在栈上分配 通过在栈上为对象分配内存,使对象占用的内存空间随着方法结束栈帧弹出而销毁,避免了GC垃圾收集器回收对象,减小GC的压力; 栈上分配内存依赖逃逸分析和标量替换。 逃逸分析: 分析对象的动态作用域逃逸:当一个对象在方…

揭秘OSPF核心:LSA类型与路由计算

一、区域内路由计算 同一区域内中的所有路由器有相同的LSDB LSA关键字段: 【1】LS Age(链路状态老化时间):LSA生存的时间,单位秒 【2】Option(选项字段) 【3】LS Type(链路状…

英文摘要给成中文摘要模型

你现在使用的 UNIMO 项目(PaddlePaddle/Research/NLP/UNIMO),默认是做英文摘要任务,如你在 README 中看到的数据集是 CNN/DailyMail,它是一个 英文摘要数据集。不过,这个项目的架构完全支持中文&#xff0c…

前端面试专栏-主流框架:13.vue3组件通信与生命周期

🔥 欢迎来到前端面试通关指南专栏!从js精讲到框架到实战,渐进系统化学习,坚持解锁新技能,祝你轻松拿下心仪offer。 前端面试通关指南专栏主页 前端面试专栏规划详情 Vue3组件通信与生命周期深度解析 在Vue3的开发体系…

自动化交易优化网格策略

一、动态参数调整 1. 网格间距优化 - 波动率自适应:使用平均真实波幅(ATR)指标动态调整间距。例如,当ATR值上升20%时,将间距从原定的1%扩大至1.5%;ATR下降时则缩小间距至0.8%。可通过Python的TA-Lib库实时计…

测试平台ui自动化demo说明

1. 要启动celery worker windows 开发时,用第二行 。(试过,可以),第一行的没试过。 celery -A myproject worker --loglevelinfo # windows电脑用下面的,并且settings中还要加那个solo celery -A your_p…

五大主要Token类型之字符标记Token

如大家所了解的,在数字化时代,我们每天都会与Token(令牌)打交道——无论是在线支付、登录社交媒体,还是调用API接口,都离不开这一关键技术。 今天我们主要来学习:字符标记Token 在自然语言处理…