白云移动网站建设广西玉林网站建设正规公司

张小明 2026/1/9 19:21:03
白云移动网站建设,广西玉林网站建设正规公司,男女做暖暖免费网站,做网站预付款是多少前言随着业务规模的增长#xff0c;单机 MySQL 在 并发能力、数据容量、可用性 等方面都会逐渐遇到瓶颈。为了支撑更高的 QPS、更大的数据量以及更稳定的服务#xff0c;MySQL 架构会不断演进#xff0c;从 单库 → 主从复制 → 读写分离 → 分库分表。本文将从三个核心维度…前言随着业务规模的增长单机 MySQL 在并发能力、数据容量、可用性等方面都会逐渐遇到瓶颈。为了支撑更高的 QPS、更大的数据量以及更稳定的服务MySQL 架构会不断演进从单库 → 主从复制 → 读写分离 → 分库分表。本文将从三个核心维度系统性拆解 MySQL 的常见架构设计MySQL 主从复制架构基于 binlog主从延迟产生原因与治理方案分库分表设计以订单系统为例一、MySQL 主从复制架构详解1. 为什么需要主从复制主从复制Master-Slave Replication是 MySQL 最经典、最基础的高可用与扩展方案主要解决三个问题读性能扩展主库写从库读读写分离数据冗余备份从库作为数据副本高可用基础主库故障时可切换从库主从复制的核心依赖binlog二进制日志2. binlog 是什么binlog 是 MySQL Server 层产生的日志用于记录对数据产生变更的操作如INSERT / UPDATE / DELETE / DDLbinlog 具备以下特性追加写顺序 IO逻辑日志不是物理页变化主从复制、数据恢复的基础3. 主从复制的整体流程MySQL 主从复制本质上是把主库的 binlog “传输 重放” 到从库整个流程可以拆解为三个核心阶段阶段一主库写入 binlog当主库执行一条事务时执行 SQL修改内存中的数据页生成 binlog event将 binlog 顺序写入 binlog 文件事务提交成功注意binlog 是在事务提交阶段写入先写 binlog再提交事务两阶段提交的一部分阶段二binlog 同步到从库从库会启动一个IO ThreadIO Thread 与主库建立连接主库启动Binlog Dump Thread主库不断将 binlog event 推送给从库从库将接收到的 binlog 写入本地的Relay Log中继日志此阶段本质是网络 IO 顺序写磁盘阶段三从库回放 binlog重放数据从库启动SQL Thread读取 Relay Log按顺序解析 binlog event在从库执行对应的 SQL 或行变更最终与主库数据保持一致4. 主从复制的特点总结默认是异步复制主库事务提交不等待从库完成存在主从延迟风险复制是单线程回放MySQL 5.6 之后支持并行二、主从延迟为什么会发生如何治理1. 什么是主从延迟主从延迟指的是主库已经提交成功的数据从库还未完成回放常见表现刚写入的数据从库查询不到读写分离后出现“读到旧数据”2. 主从延迟产生的常见原因1从库 SQL 回放能力不足单线程回放 binlog主库写入速度 从库回放速度2大事务 / 批量操作一个大事务必须完整回放完成阻塞后续 binlog3从库硬件性能较弱IO、CPU、内存瓶颈4网络抖动binlog 传输不稳定3. 主从延迟的治理方案方案一强制走主库最常见适用场景写后立即读下单后查订单做法关键读请求不走从库通过代码或中间件控制写操作 → 主库 强一致性读 → 主库 非关键读 → 从库方案二基于 binlog 位点判断记录写入时的 binlog position从库读取到该 position 后再读优点一致性强缺点实现复杂成本高方案三半同步复制Semi-sync主库至少等待一个从库 ACK减少数据丢失风险不能完全消除延迟方案四并行复制MySQL 5.7基于库级 / 组提交的并行回放明显提升从库吞吐能力三、分库分表设计以订单系统为例当单库单表的数据量和 QPS 达到瓶颈时仅靠主从复制已经不够就需要引入分库分表。1. 什么是分库分表本质把一张大表拆成多张小表目标降低单表数据量提升查询和写入性能降低锁冲突2. 订单系统为什么需要分库分表订单表通常具备以下特点数据量极大千万 / 亿级写多读多按用户、订单号频繁查询如果全部放在一张表索引巨大查询变慢写入锁冲突严重3. 分库分表的三种核心方式垂直分表按字段拆思想把字段多、访问频率低的列拆出去示例order_base 表 order_id, user_id, status, create_time order_ext 表 order_id, address, remark, invoice_info优点减少热表字段提高缓存命中率垂直分库按业务拆思想不同业务模块使用不同数据库示例订单库 支付库 用户库优点降低库级耦合易于团队拆分水平分库分表最核心思想按某个规则把同一张表的数据拆到多个库 / 表常见分片键user_idorder_id示例按 user_idorder_db_0.order_0 order_db_0.order_1 order_db_1.order_0 order_db_1.order_1路由规则db_index user_id % 2 table_index user_id % 24. 分库分表带来的挑战跨库 JOIN 不可用全局唯一 ID 生成分页、排序复杂运维成本上升因此通常会配合分布式 ID雪花算法中间件ShardingSphere业务层聚合总结MySQL 的架构演进本质是围绕性能、容量、可用性三个目标不断拆解主从复制解决读扩展与数据冗余延迟治理保证一致性与用户体验分库分表突破单机与单表瓶颈理解这些设计不只是为了“会用 MySQL”而是为了在真实业务中设计出可扩展、可演进的系统架构。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

python可以做网站前端网站制作网站

高效窗口管理的终极方案:WindowResizer使用全攻略 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 还在为窗口大小不合适而烦恼吗?WindowResizer是一款专业的…

张小明 2026/1/9 9:10:53 网站建设

素材网站视频企业网站建设的一般要素包括6

在实验室和图书馆度过了无数个日夜后,你是否曾感到一种巨大的错位感——将最宝贵的智慧与时间,耗费在了格式调整、文献录入和句子雕琢这些“学术体力劳动”上?真正的瓶颈,或许不是思考的深度,而是将深度思考转化为严谨…

张小明 2026/1/7 20:32:22 网站建设

网站安全建设方案步骤免费电子版个人简历

Scarab:3步搞定空洞骑士模组管理,告别繁琐安装 【免费下载链接】Scarab An installer for Hollow Knight mods written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab 还在为空洞骑士模组安装的复杂流程而头疼吗?…

张小明 2026/1/7 20:34:06 网站建设

ftp 迁移 网站我的WordPress网站

Qwen2-VL-2B-Instruct:20亿参数重塑多模态AI效率极限 【免费下载链接】Qwen2-VL-2B-Instruct 项目地址: https://ai.gitcode.com/hf_mirrors/Qwen/Qwen2-VL-2B-Instruct 还在为AI模型的高显存占用而烦恼吗?是否在视觉理解精度与推理速度之间难以…

张小明 2026/1/7 20:18:16 网站建设

凡科怎么建设网站福田保安公司招聘

微前端架构革命:Piral如何重塑企业级Web开发模式 【免费下载链接】piral Framework for next generation web apps using micro frontends. :rocket: 项目地址: https://gitcode.com/gh_mirrors/pi/piral 想象一下这样的场景:你的团队正在开发一个…

张小明 2026/1/7 20:18:14 网站建设

眉山网站开发有没有做底单的网站

第一章:企业数据安全的现状与挑战随着数字化转型的深入,企业数据量呈指数级增长,数据安全已成为组织运营的核心议题。敏感信息如客户资料、财务记录和知识产权正面临日益复杂的威胁环境,传统的边界防御机制已难以应对新型攻击手段…

张小明 2026/1/7 20:18:17 网站建设