OLTP应用之MySQL架构选型

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 在我们下定决心将企业核心应用从企业级数据库迁移到开源数据库产品、使用本地磁盘代替共享存储之前。我觉得我们必须要面对并回答以下几个问题之后才能真正的将开源进行到底,将想法付诸于实践。下面我们来看一下我们在将OLTP应用迁移到MySQL数据库之上之前,我们必须要回答的几个问题:(1)  ...
在我们下定决心将企业核心应用从企业级数据库迁移到开源数据库产品、使用本地磁盘代替共享存储之前。我觉得我们必须要面对并回答以下几个问题之后才能真正的将开源进行到底,将想法付诸于实践。下面我们来看一下我们在将OLTP应用迁移到MySQL数据库之上之前,我们必须要回答的几个问题:
(1)  允许在极端情况下备库接管服务后,数据存在暂时的不一致吗(主从架构下在主库 crash 后可能存在部分写操作没有及时同步的备库的问题)?
(2)  MySQL数据库在数据库故障时应用服务也将中断 3-30s ,这样的场景是否能够接受?
(3)  我们对数据库的可扩展性、吞吐能力、响应时间及用户体验是否有较高的要求?
只有回答了如上三个问题,以下3类OLTP类型的MySQL架构设计
方案,才能真正的具备可参考性与实际意义。下面我们来扒一扒笔者目前考虑到适合OLTP应用开源解决方案。
方案一、多主同步复制方案PXC
PXC,即Percona Xtradb Cluster,它采用Galera引擎,可以实现多个节点间的数据同步复制以及读写并且可保障数据库的服务高可用及数据一致性。其架构如下所示:

一、 PXC的优点
(1) 数据同步复制
(2) 多个可同时读写节点,但需要事先进行分库分表,让各个节点分别写不同的表或者库
(3) 可以保证数据严格一致性
(4) 适合读多写少的业务系统
二、 PXC的缺点
(1) 不支持XA事务
(2) 集群吞吐量/性能取决于响应最慢的节点,事务效率与主从架构相比低了不止一个数量级
(3) 需要调整
(4) 只支持InnoDB引擎
(5) 所有表都要有主键
(6) 不允许大事务产生
(7) 不支持LOCK TABLE等显式锁操作
(8) 存在写冲突,锁冲突、死锁问题较多,不能解决热点更新问题,可扩展性差
(9) 如果并发事务量很大的话,官方建议采用InfiniBand网络,降低因网络延迟带来的瓶颈
(10) 需要引入多个第三方插件,集成复杂度高
方案二、主从复制方案MHA
MHA即Master High Availability Manager and Tools for MySQL是一个MySQL高可用管理工具,目的在于维持Master主库的高可用性及数据的一致性。其最大特点是可以修复多个Slave之间的差异日志,最终使所有Slave保持数据一致,然后从中选择一个Slave数据库作为新的Master,并将其它Slave指向它。
   其架构如下,请参考:

一、 MHA的优点
1. 自动监控Master故障转移、故障后节点之间的数据同步
2. 不会有性能损耗,适用于任何存储引擎
3. 具备自动数据补偿能力,在主库异常崩溃时能够最大程度的保证数据的一致性
4. 可实现同城应用级别双活
二、 MHA的缺点
1. 如果主服务器硬件故障或无法通过ssh访问,进行故障转移可能导致丢失当前数据
2. 切换时间较长,整个切换时间大约需要9-12s
方案三、主主复制方案MM
利用MySQL原生支持主从单向复制、主主双向复制,该架构解决了主库单点及写瓶颈等问题。 其架构如下,请参考:

一、 MM架构优点
1. 支持快速切换,一般3s之内即可切换到备机
2. 配置管理简单、不需要第三方插件
二、 MM架构缺点
1. 如果数据库服务器硬件故障可能导致丢失当前操作数据
关于以上方案的总结
(一)对于PXC架构,其优点很多但缺点同时也非常的明显,其核心优势就是保证了各节点数据的一致性,劣势就是其在可扩展性、锁冲突、写扩大方面存在问题,PXC为了保证数据的一致性其要求每个节点都要将数据写入到磁盘才算完成,这样就存在一个效率问题。也就是说每个事务的响应时间依赖于整个集群最慢的节点,且其对网络质量要求非常高。另一个问题就是我们需要考虑清楚,我们的开源的方向在哪里?是跟着一个小众分支开源社区Percona,还是跟着主流MySQL官方开源社区发展的问题。
(二)对于MHA架构其优点就是通过MHA插件解决主库的单点问题及因主库挂掉后尽量保证接管的从库与宕机后的主库的数据一致性且数据的同步功能是原生的,其缺点就是在主库故障切换后不能保证数据零丢失,其实这里更准确的说法不应该是数据丢失应该主库与从库数据不一致。
在以下情况MHA可以保证接管后的节点与主库数据时一致性的:
(1) 在不发生硬件故障的情况下是可以从修复后的主库找回数据并由DBA手动补回备库,最终实现数据的一致性;
(2) 若只是数据库故障,MHA具备将所有已落实的数据自动同步到备库从而实现数据的零丢失;
(3) 直接使用MySQL的半同步机制,两阶段提交来保证数据的一致性,这个方法与PXC的实现方式相似
(三)对于MM双主架构其优缺点与MHA相似,都是采用MySQL原生的数据同步机制。不同之处就是MM架构在主故障时切换时间更短,缺点就是产生数据不一致的可能性更多一下。另外在MM架构中我们也可以尝试引入MHA数据补偿工具来尽量降低在主备切换时导致的数据不一致性问题或者直接使用MySQL的半同步机制来保证数据一致性。
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
19天前
|
机器学习/深度学习 文字识别 监控
安全监控系统:技术架构与应用解析
该系统采用模块化设计,集成了行为识别、视频监控、人脸识别、危险区域检测、异常事件检测、日志追溯及消息推送等功能,并可选配OCR识别模块。基于深度学习与开源技术栈(如TensorFlow、OpenCV),系统具备高精度、低延迟特点,支持实时分析儿童行为、监测危险区域、识别异常事件,并将结果推送给教师或家长。同时兼容主流硬件,支持本地化推理与分布式处理,确保可靠性与扩展性,为幼儿园安全管理提供全面解决方案。
|
15天前
|
机器学习/深度学习 人工智能 并行计算
AI部署架构:A100、H100、A800、H800、H20的差异以及如何选型?开发、测试、生产环境如何进行AI大模型部署架构?
AI部署架构:A100、H100、A800、H800、H20的差异以及如何选型?开发、测试、生产环境如何进行AI大模型部署架构?
AI部署架构:A100、H100、A800、H800、H20的差异以及如何选型?开发、测试、生产环境如何进行AI大模型部署架构?
|
4月前
|
存储 SQL 关系型数据库
MySQL进阶突击系列(03) MySQL架构原理solo九魂17环连问 | 给大厂面试官的一封信
本文介绍了MySQL架构原理、存储引擎和索引的相关知识点,涵盖查询和更新SQL的执行过程、MySQL各组件的作用、存储引擎的类型及特性、索引的建立和使用原则,以及二叉树、平衡二叉树和B树的区别。通过这些内容,帮助读者深入了解MySQL的工作机制,提高数据库管理和优化能力。
|
4月前
|
运维 Cloud Native 持续交付
深入理解云原生架构及其在现代企业中的应用
随着数字化转型的浪潮席卷全球,企业正面临着前所未有的挑战与机遇。云计算技术的迅猛发展,特别是云原生架构的兴起,正在重塑企业的IT基础设施和软件开发模式。本文将深入探讨云原生的核心概念、关键技术以及如何在企业中实施云原生策略,以实现更高效的资源利用和更快的市场响应速度。通过分析云原生架构的优势和面临的挑战,我们将揭示它如何助力企业在激烈的市场竞争中保持领先地位。
115 13
|
9天前
|
人工智能 JavaScript 开发工具
MCP详解:背景、架构与应用
模型上下文协议(MCP)是由Anthropic提出的开源标准,旨在解决大语言模型与外部数据源和工具集成的难题。作为AI领域的“USB-C接口”,MCP通过标准化、双向通信通道连接模型与外部服务,支持资源访问、工具调用及提示模板交互。其架构基于客户端-服务器模型,提供Python、TypeScript等多语言SDK,方便开发者快速构建服务。MCP已广泛应用于文件系统、数据库、网页浏览等领域,并被阿里云百炼平台引入,助力快速搭建智能助手。未来,MCP有望成为连接大模型与现实世界的通用标准,推动AI生态繁荣发展。
148 8
|
1月前
|
消息中间件 人工智能 自然语言处理
基于 RocketMQ 事件驱动架构的 AI 应用实践
基于 RocketMQ 事件驱动架构的 AI 应用实践
|
2月前
|
SQL 存储 缓存
MySQL的架构与SQL语句执行过程
MySQL架构分为Server层和存储引擎层,具有高度灵活性和可扩展性。Server层包括连接器、查询缓存(MySQL 8.0已移除)、分析器、优化器和执行器,负责处理SQL语句;存储引擎层负责数据的存储和读取,常见引擎有InnoDB、MyISAM和Memory。SQL执行过程涉及连接、解析、优化、执行和结果返回等步骤,本文详细讲解了一条SQL语句的完整执行过程。
97 3
|
2月前
|
存储 SQL 缓存
MySQL原理简介—2.InnoDB架构原理和执行流程
本文介绍了MySQL中更新语句的执行流程及其背后的机制,主要包括: 1. **更新语句的执行流程**:从SQL解析到执行器调用InnoDB存储引擎接口。 2. **Buffer Pool缓冲池**:缓存磁盘数据,减少磁盘I/O。 3. **Undo日志**:记录更新前的数据,支持事务回滚。 4. **Redo日志**:确保事务持久性,防止宕机导致的数据丢失。 5. **Binlog日志**:记录逻辑操作,用于数据恢复和主从复制。 6. **事务提交机制**:包括redo日志和binlog日志的刷盘策略,确保数据一致性。 7. **后台IO线程**:将内存中的脏数据异步刷入磁盘。
157 12
|
1月前
|
存储 缓存 API
类似ComfyUI和Midjourney这样的文生图图生图应用的API与服务架构该怎么设计
文生图图生图应用的API与服务架构分析。或和微服务类似,但是不同。ComfyUI其 API 架构设计为我们理解此类应用提供了很好的参考模型。但距离生产级别的应用差距还有很远。
115 0
|
3月前
|
容灾 网络协议 数据库
云卓越架构:云上网络稳定性建设和应用稳定性治理最佳实践
本文介绍了云上网络稳定性体系建设的关键内容,包括面向失败的架构设计、可观测性与应急恢复、客户案例及阿里巴巴的核心电商架构演进。首先强调了网络稳定性的挑战及其应对策略,如责任共担模型和冗余设计。接着详细探讨了多可用区部署、弹性架构规划及跨地域容灾设计的最佳实践,特别是阿里云的产品和技术如何助力实现高可用性和快速故障恢复。最后通过具体案例展示了秒级故障转移的效果,以及同城多活架构下的实际应用。这些措施共同确保了业务在面对网络故障时的持续稳定运行。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等