多云部署多主模式的MGR集群,每个云一个MGR 节点,满足业务单元化改造的需求

搭建MySQL集群--MGR 一、MGR 介绍 MGR 集群简介 MySQL Group Replication(简称 MGR)是 MySQL 官方于 2016 年 12 月推出的一个全新的高 可用与高扩展的解决方案。MySQL 组复制提供了高可用、高扩展、高可靠的 MySQL 集群服务 MGR 的特点 1、高一致性,基于原生复制及 paxos 协议的组复制技术,并以插件的方式提供,提供一致数据安全保证; 2、高容错性,只要不是大多数节点坏掉就可以继续工作,有自动检测机制,当不同节点产生资源争用冲突时,不会出现错误 阅读详情

欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答

  • GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。

  • 本文来自投稿:by 作业帮DBA团队

一、架构需求:

  • 正常情况下每个云的业务程序(下图中的APP) 通过本地的cetus 写入本地的MGR 节点(默认启动时通过cetus 配置本地MGR 节点为rw); 读请求会根据 cetus 读写分离策略路由到不同的云的MGR 节点

  • 当本地MGR 节点故障,则cetus 会自动检测配置中的后端MGR 节点,选取一个新的存活节点作为rw 节点。此时业务跨云读写。

  • 当单个云整体故障时(单云孤岛),集群剩余节点可以正常提供服务,业务层需要切流,将业务流量指向其他正常云的服务(APP)

file

二、测试流程

1.性能测试对比

  • 同机房是指 sysbench 以及压测的节点都在同一个机房; 跨机房指 sysbench 和 压测脚本中配置的mysql_host 在不同的机房

  • 主要进行Read_Write 以及 Write_Only 两个模式进行对比

主机配置: 35C  376G
MySQL 版本:   GreatSQL 8.0.25
buffer_pool: 24G
测试数据: sbtest  8张表 * 3000w
sysbench压测脚本:
- oltp_read_write.lua
- oltp_write_only.lua

=> Read_Write 压测对比

跨机房情况下集群吞吐量下降明显,耗时增加明显

file

=> Write_Only 压测对比

跨机房对比同机房耗时增加20ms 左右

file

跨机房下耗时高原因排查:

经过抓包分析,压测使用的脚本中的事务都是带有begin,commit。在commit 之前的每个语句都要增加一个rtt 的延迟时间(机房之间的耗时在3ms 左右)。

因此在跨机房的情况下每个事务的响应时间都会至少额外增加(每个事务中 sql个数 * 3ms) 的时间。

file

2.故障场景测试

主要测试在单节点故障,多节点故障,单机房整体故障时对业务的预期影响以及DB 侧应对的策略 集群初始状态: (3个 主机,每台主机部署一个MGR 节点+cetus 节点)

file

Cetus中rw节点在172上

file

==> 单实例故障场景:

1.Kill掉172实例后,在192和10实例上观察集群状态,172被踢出MGR集群 Cetus中rw节点切到了192上,172实例offline+ro状态

file

2.重新启动172实例,并启动group_replication加入组复制

file

mysql> start group_replication;
mysql> select * from information_schema.replication_group_member

file

观察cetus中后端的状态:172实例恢复up + ro 状态

file

注意:cetus 用户有super 权限,当DB实例重启后Cetus会尝试自动start group_replication,如果start group_replication失败Cetus会不断尝试重启,不建议开启

结论:MGR集群中少数实例宕机后重新启动实例,start group_replication后会自动加入MGR集群并补齐数据(如果binlog存在),Cetus中实例状态也会恢复为up+ro

问题:如果实例发生故障前在Cetus中为rw状态,当实例故障时Cetus中的rw节点会切换到别的实例,故障实例恢复后在Cetus中为ro状态,如果需要恢复rw状态,需要手动维护

==> 多实例故障

Kill掉172和10的2个实例,在存活实例192上查询members状态,172和10实例为UNREACHABLE

file

Cetus中存活实例192可读不可写,写入报错service unavailable

file file

如果直连192实例写入会hang死

file

重启172和10实例后,启动group_replication失败,需要重新引导组复制

file

在172和10的实例上start group_replication加入MGR集群成功

结论:MGR集群中多数实例宕机后重新启动实例,start group_replication会失败,此时MGR集群已不存在,需要重新初始化集群才能将原有实例加入集群

问题:MGR集群中多数实例故障会导致集群崩溃,整个集群可读不可写,如果故障实例短时间能恢复则可手动重置MGR集群让实例重新加入集群,不可写时间相对较短,对业务影响较小。
如果故障实例短时间不能恢复,则需要强制激活存活的少数节点为新MGR集群(单主模式),恢复写能力,对业务提供服务,然后利用存活节点数据备份重新搭建DB实例,恢复新的多主MGR集群

==> 单机房网络隔离

192 实例单云网络隔离。此时当前云内的业务通过192上的cetus 进行读写操作时, 可读不可写,写入报错service unavailable;另外两个节点组成的MGR集群可以正常提供服务 192 cetus实例查看的状态

file

172 和10节点MGR集群状态,数据写入正常

file

网络恢复后被隔离的192实例自动加入MGR集群且补齐网络隔离期间MGR集群写入的数据

问题点:如果业务主要流量在被隔离的机房且上层无法切流到多数节点的MGR集群,则需要强制激活隔离机房的实例为单实例多主模式MGR集群,恢复写能力(后续再添加实例),此时原来的MGR集群会被拆分为2个同时可用的MGR集群(少数节点的单实例多主模式MGR集群和多数节点的多实例多主模式MGR集群)
如果2个集群都有数据写入则后续会因为写入数据冲突或者gtid不一致无法合并为1个集群,如果后续想合并数据最好是通过业务层做数据回归

==> 多机房网络隔离

此时各机房互相访问不通,则会形成多个可读不可写的实例

  • 短时间内网络不能恢复 需要强制激活某个实例恢复读写能力,在192上观察另外2个节点变为UNREACHABLE

file

Cetus中192实例从up+ro恢复为up+rw

file

  • 机房之间网络抖动,随着网络恢复MGR集群自动恢复

能忍受抖动时间内可读不可写,不需要强制激活节点恢复写能力,网络恢复后MGR集群会自动恢复

file

测试总结:

当前测试主要结合CETUS来满足在各种不同场景下我司的业务需求。
不同公司的不同业务有着不同的形态.
在使用其他proxy 进行测试时,需要注意在各种场景下业务的预期状态是什么样的.
- 比如在单云隔离时,被隔离的云内的业务是希望能继续读取数据还是不可读不可写;
- 是否允许跨云访问,能接受的耗时范围是多少?
以上种种需要使用proxy或者其他外挂手段设置不同的读写策略。
总体测试下来MGR的多主模式的性能以及故障处理满足我们的使用需求。

Enjoy GreatSQL :)

文章推荐:

GreatSQL MGR FAQ https://mp.weixin.qq.com/s/J6wkUpGXw3YkyEUJXiZ9xA

万答#12,MGR整个集群挂掉后,如何才能自动选主,不用手动干预 https://mp.weixin.qq.com/s/07o1poO44zwQIvaJNKEoPA

『2021数据技术嘉年华·ON LINE』:《MySQL高可用架构演进及实践》 https://mp.weixin.qq.com/s/u7k99y6i7riq7ScYs7ySnA

一条sql语句慢在哪之抓包分析 https://mp.weixin.qq.com/s/AYibbzl860D90rOeyjB6IQ

万答#15,都有哪些情况可能导致MGR服务无法启动 https://mp.weixin.qq.com/s/inSGpd0Q_XIl2Mb-VsvNsA

技术分享 | 为什么MGR一致性模式不推荐AFTER https://mp.weixin.qq.com/s/rNeq479RNsklY1BlfKOsYg

关于 GreatSQL

GreatSQL是由万里数据库维护的MySQL分支,专注于提升MGR可靠性及性能,支持InnoDB并行查询特性,是适用于金融级应用的MySQL分支版本。

Gitee: https://gitee.com/GreatSQL/GreatSQL

GitHub: https://github.com/GreatSQL/GreatSQL

Bilibili: https://space.bilibili.com/1363850082/video

微信&QQ群: 可搜索添加GreatSQL社区助手微信好友,发送验证信息“加群”加入GreatSQL/MGR交流微信群

QQ群:533341697 微信小助手:wanlidbc

本文由博客一文多发平台 OpenWrite 发布!

AI驱动的云原生落地实践:多云、边缘与Serverless工程指南 云原生已从概念走向生产核心,其本质是围绕业务连续性重构基础设施能力。理解容器编排、服务网格、声明式API等基础原理,是构建高可用、可观测、低成本系统的前提;而AI正深度融入弹性伸缩、根因分析、安全策略生成等底层环节,成为云的新操作系统;多云不再是架构选择而是治理刚需,需在流量调度、数据同步与成本治理三层建立协同机制;边缘计算则重新定义了实时性边界,推动‘云边端’时空分离处理范式落地;本文聚焦真实项目中的Serverless ETL、混合云灾备、AI服务化、可观测性栈等可复用方案,直击企业上云过程中的性能、安 阅读详情

相关推荐

【云原生存储中间件】Rook与OpenEBS对比

Rook与OpenEBS代表了云原生存储的两种路径:前者依托成熟生态实现企业级功能,后者以轻量化设计推动敏捷创新。选择时需权衡性能、运维复杂度与业务场景——大规模混合云可选Rook-Ceph,而快速迭代的容器化应用更适合OpenEBS。随着云原生技术的演进,两者的融合(如Rook集成OpenEBS引擎)或将成为新趋势。

沐风—云端行者 1102

MySQL+MGR 单主模式和多主模式的集群环境 - 部署手册 (Centos7.5)

MySQL Group Replication(简称MGR)是MySQL官方于2016年12月推出的一个全新的高可用与高扩展的解决方案。MGR是MySQL官方在5.7.17版本引进的一个数据库高可用与高扩展的解决方案,以插件形式提供,实现了分布式下数据的最终一致性, 它是MySQL5.7版本出现的新特性,它提供了高可用、高扩展、高可靠的MySQL集群服务。MySQL组复制分单主模式和多主模式,mysql 的复制技术仅解决了数据同步的问题,如果 master 宕机,意味着数据库管理员需要介入,应用系统可能需要

MyDriverC 691

【跨可用区容灾】数据同步与故障切换机制

跨可用区容灾已从传统冷备发展为智能化多活架构,核心突破在于数据同步效率与故障切换可靠性的平衡。延迟敏感型(如金融交易):优先同城双活+强一致性协议数据强一致型(如医疗影像):采用异地多活+异步复制冲突检测成本敏感型(如电商日志):依托对象存储+无主机同步技术随着云原生与AI技术的深度融合,未来容灾将迈向**“零感知切换”与“自适应修复”**的新阶段,业务连续性保障从“可用”向“极致体验”进化。

沐风—云端行者 1768

组复制技术架构 | 深入浅出MGR

本文首发于GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源1. 传统主从复制技术架构传统主从复制的方式是在master节点上执行数据更新事务,而后记录这些事务到b...

老叶茶馆 1214

论文精读——A Comprehensive Survey of Continual Learning: Theory, Method and Application

为了应对现实世界的动态性,智能系统需要在其整个生命周期中逐步获取、更新、积累并利用知识。这种能力被称为Continue Learning(持续学习)。从广义上讲,持续学习明显受到catastrophic forgetting(灾难性遗忘)的限制,即学习新任务通常会导致旧任务的性能急剧下降。Continue Learning的核心目的有二,其一为(稳定性与可塑性间的权衡),其二为(足够的任务内/任务间泛化能力)。

xsddys的博客 1241

Revit模型转点云全流程:从OBJ导出到CloudCompare点云生成(2020版)

本文详细介绍了将Revit模型转换为点云数据的完整流程,特别针对Revit 2020用户。通过使用OBJ导出插件和开源软件CloudCompare,实现从模型导出、网格采样到生成结构化PCD点云的全过程,并提供了关键参数设置与常见问题解决方案,为BIM与三维数字孪生应用提供技术支持。

oo7890的博客 154

探索 K3s 简单高效的多云和混合云部署

公众号关注「奇妙的 Linux 世界」设为「星标」,每天带你玩转 Linux !在当今企业环境中,混合云和多云环境正逐渐成为趋势。企业面临着市场需求的不断变化、灵活性要求以及数据安全和合规性的挑战。为满足这些需求,企业需要一种适应性强、易于管理的解决方案。在这方面,K3s 作为一种轻量级的 Kubernetes 发行版,可以部署在没有公网 IP 且节点之间不直连的节点上(例如不同公有云中的节点)...

easylife206的专栏 1832

嵌入式C开发必备:用Cursor规则搞定代码风格检查(附Pikachu项目实战)

本文以Pikachu开源项目为例,详细介绍了如何利用Cursor的AI代理规则系统,为嵌入式C开发项目配置一套完整的代码风格检查与规范执行方案。通过实战演示,指导开发者创建项目级规则,实现命名、格式、硬件抽象层及驱动开发的自动化规范,从而提升代码一致性、可维护性和团队协作效率。

weixin_29181861的博客 599

mysql实战之mgr集群

MGR 是一个新的高可用与高扩展的方案,集群中的任何节点数据都是一样的,可以实现任何节点都可以写入,实现了真正意义上的多主。

qq_62789440的博客 3105

W5500 TCP服务器状态机详解:从SOCK_CLOSED到SOCK_ESTABLISHED的完整流程

本文深入解析W5500芯片作为TCP服务器时的状态机转换流程,从SOCK_CLOSED到SOCK_ESTABLISHED的完整链路实践。通过硬件协议栈架构分析、状态机全流程拆解及异常处理方案,帮助开发者构建高可靠性的嵌入式网络服务端,优化TCP连接性能与稳定性。

Jerry的专栏 1165

游戏战斗系统架构设计的演绎之路——从一坨意大利面条到一座精密钟表

摘要:游戏战斗系统架构设计的演进之路 本文系统梳理了游戏战斗系统从早期街机到现代3A大作的架构发展历程。70-80年代的街机游戏采用基础碰撞盒判定(如《街头霸王》);90年代实现动画融合与状态机架构(《最终幻想》《拳皇》);2000年后MMO引入服务器验证与同步技术(《魔兽世界》);3D时代融合物理引擎与智能AI(《GTA5》《只狼》);移动端则发展出轻量化架构与云端判定(《王者荣耀》)。现代战斗系统已实现模块化、数据驱动和热更新,未来趋势是AI裁判与云战斗系统。这一演进过程展现了技术与创意的完美结合,数百

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 801

多云部署多主模式的MGR集群,每个云一个MGR 节点,是一种什么体验?

*GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。*本文来自投稿:by 作业帮DBA团队一、架构需求:正常情况下每个云的业务程序(下图中的APP) 通过本地的cetus 写入本地的MGR 节点(默认启动时通过cetus 配置本地MGR 节点为rw); 读请求会根据 cetus 读写分离策略路由到不同的云的MGR 节点当本地MGR 节点故障,...

老叶茶馆 373

华为OD机试真题新系统-空间占用计算(Py/Java/C/C++/Js/Go)

华为OD机试新系统机试真题 【空间占用计算】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【空间占用计算】。

qq_45776114的博客 3441

作业帮多云部署多主模式MGR集群实战

*GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。*本文来自投稿:by 作业帮DBA团队一、架构需求:正常情况下每个云的业务程序(下图中的APP) 通过本地...

老叶茶馆 386

模型预测控制 (MPC, Model Predictive Control) 算法详解及案例分析

模型预测控制是一种基于模型的控制策略,通过在线求解一个有限时域的优化问题,预测系统的未来行为,并根据预测结果调整控制输入,以实现系统的稳定性和性能优化。

闲人编程的博客 2936

7、CUDA 软件架构与开发工具详解

本文深入探讨了CUDA的软件架构与核心开发工具,涵盖CUDA数组与纹理、表面引用、图形互操作性机制,以及CUDA运行时与驱动程序API的功能对比。详细解析了nvcc编译器的使用方法、编译轨迹与代码生成选项,并结合实际示例说明其应用。文章旨在帮助开发者理解不同技术的选择依据,合理利用CUDA工具链,提升GPU计算性能,适用于从入门到进阶的CUDA开发人员参考。

nnn11的博客 98

MySQL Group Replication 单主模式的多云部署(云 A/B/C)

优点缺点官方集成的高可用方案,支持自动主备切换跨云网络延迟高可能导致写延迟增加数据一致性保证,支持强一致性读写配置和运维复杂,需专门监控集群状态和网络稳定性支持自动故障切换,无需外部 orchestrator不支持多主写入,单主模式写性能瓶颈应用连接透明切换,MySQL Router 或 ProxySQL 支持跨云故障切换时延较长,可能会导致部分写请求失败或阻塞。

喝醉酒的小白 1161

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

跨多云环境下的数据一致性保障与故障自动切换 # MySQL

目标实现方式跨云一致性保障Semi-sync 复制、GTID、binlog row 模式、事务完整性配置故障自动切换Orchestrator + ProxySQL,实现故障检测、角色切换、连接更新高可用 + 读写分离ProxySQL 或 MySQL Router + 主从读写策略强一致性(可选)MySQL MGR(需稳定网络,适合企业专线)最终一致性 + 容灾优先异步复制 + relay log 回放 + 数据校验工具(pt-table-checksum)

喝醉酒的小白 1083

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

MySQL【理论篇】05:InnoDB Cluster【MGR】的原理

MySQL【理论篇】05:InnoDB Cluster【MGR】的原理

weixin_40612128的博客 963

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

MySQL一键部署黑科技揭秘

MySQL作为最流行的开源关系型数据库之一,广泛应用于各类业务场景 传统MySQL部署流程复杂,涉及配置优化、权限设置、高可用等痛点 一键部署技术通过自动化手段大幅降低部署门槛,提升效率。AWS RDS/Azure Database等托管服务的一键创建功能 阿里云PolarDB的快速部署模板。优势:时间成本降低90%以上,标准化程度高,减少人为错误 局限性:特殊需求仍需手动调整,对网络依赖较强。开发测试环境快速搭建 CI/CD流水线中的数据库自动化部署 应急灾备环境的秒级建立。

2509_93873837的博客 363

,一键部署MySQL的核心技术原理

摘要:一键部署MySQL技术通过容器化(Docker-Compose)、云平台CLI和Kubernetes方案实现自动化配置。核心特性包括参数化环境变量配置、高可用集群自动部署(主从复制/MGR)、内置安全基线(强制密码复杂度)及性能优化模板(自动调整innodb_buffer_pool)。典型应用覆盖开发测试环境快速搭建、临时分析实例部署等场景,并集成Prometheus监控、ELK日志和xtrabackup备份方案。技术栈融合Docker、Ansible及云服务API,显著提升数据库环境部署效率。(14

2501_94059232的博客 366

『叶问』#42,可以禁用MyISAM引擎吗

MyISAM的适用场景越来越少了。随着MySQL 8.0的推出,系统表已经全面采用InnoDB引擎,不再需要MyISAM引擎。另外,MGR中也不支持MyISAM引擎。因此,基本上可以考虑全...

老叶茶馆 770

Kubernetes---存储方案:Rook自动结合Ceph

本文介绍了基于Rook和Ceph的云原生存储解决方案部署方案。Rook作为Kubernetes存储编排器,可自动化管理Ceph分布式存储系统。方案优势包括自动化管理、云原生集成和运维简化等。架构上采用Rook Operator管理Ceph集群组件(MON、MGR、OSD等),通过CSI驱动实现存储服务。部署步骤包括环境准备、Rook Operator安装、Ceph集群配置和存储类创建,详细说明了YAML配置和状态检查命令。该方案支持动态扩展存储容量,适用于多云环境,显著降低了分布式存储的运维复杂度。

直到世界的尽头 1522

云原生环境下的存储系统优化:CSI插件与Rook-Ceph实战

云原生存储的优化本质是存储系统与计算平台的深度协同。CSI插件提供了标准化的扩展接口,而Rook-Ceph则为大规模存储集群管理提供了生产级方案。两者的结合使用,能够有效支撑企业级云原生应用的存储需求,在性能、可靠性与运维效率之间取得最佳平衡。

2501_91980039的博客 957

vivo 数据库降本实践:探索成本效益最优的数据库解决方案

在云上,我们开启 RDS SLS 审计日志,捕获 RDS 时间段内的业务负载,并投递至 OSS,通过 OMA 读取 OSS 审计日志,解析成 SQL 文件,并记录审计日志中的 RDS 内核执行时间,然后使用解析文件,按用户定义回放倍速,向 OceanBase 上发送回放流量,记录 RT 时间,并结合 SLS 中的 RDS 整理最终结果报告。从图三的测试结果可见,相较于源数据库(MySQL),OceanBase 的效率较有优势,数据存储方面,OceanBase 的压缩比能达到 5.7 倍至 15.3 倍。

OceanBase分布式数据库的博客 679

什么是云数据库的高可用性和存储整合能力

总结:***云数据库通过分布式架构+自动化运维实现高可用性,依托虚拟化+集中调度提升存储效能,***为企业提供兼具稳定性与成本效益的数据管理方案。大型企业将各部门独立数据库(如财务、HR系统)迁移至云平台,整合为单一数据库集群,既统一安全管理,又节约50%+存储成本。• 跨云/混合云整合:支持多云环境数据同步(如腾讯云CynosDB跨云复制),实现数据在公有云、私有云间的无缝流转。• 自动压缩与去重:对冷热数据分层存储(如SSD+HDD组合),压缩冗余数据,降低存储成本高达30-50%。

slty_123的博客 391
上一篇: 技术分析 | 通过DML语句浅谈binlog和redo log
下一篇: 技术分享 | 简单测试MySQL 8.0.26 vs GreatSQL 8.0.25的MGR稳定性表现
GreatSQL社区
博客等级 码龄5年 1210粉丝 390原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值