mysql 的主从机制是怎么实现的?

MySQL 作为当前最流行的开源关系型数据库之一,为了满足数据的高可用、负载均衡和容灾备份等需求,广泛应用主从复制(Replication)机制。其核心思想是:在一台主库(Master)上发生的所有数据变更都会同步到一台或多台从库(Slave),从而实现多节点间的数据一致性和系统的读写分离。

很多初学者疑惑,MySQL 的主从机制究竟是怎样实现的?有哪些关键组件与执行流程?本文将为你系统梳理 MySQL 主从复制的原理、步骤和注意事项,帮助你彻底搞懂这一关键技术点。


一、主从复制的基本原理

MySQL 的主从复制本质上是 “主库记录变更,从库重放变更”。主库以二进制日志(binlog)的形式记录所有数据更改操作(如INSERT、UPDATE、DELETE等),从库则实时同步并执行这些变更,保持数据与主库一致。

目前主流 MySQL 复制方式有三种:

  1. 基于语句的复制(Statement-Based Replication, SBR)
    记录 SQL 语句本身,传递给从库执行。

  2. 基于行的复制(Row-Based Replication, RBR)
    记录具体哪条记录被修改,修改了哪些内容。

  3. 混合模式复制(Mixed-Based Replication, MBR)
    SBR 和 RBR 混合,自动选择更合适的模式。


二、主从复制的三大核心线程

MySQL 主从复制通常涉及三类核心线程:

1. 主库的 Binlog Dump 线程

  • 负责将主库 binlog 内容推送给每一个已连的从库。

2. 从库的 IO 线程

  • 连接主库,持续拉取主库 binlog,并将其写入本地的中继日志(relay log)。

3. 从库的 SQL 线程

  • 读取 relay log 日志,解析出 SQL 或数据变化实际应用到本地数据库。

三、主从复制的执行流程

让我们以常见的异步复制模式为例,详细分解 MySQL 主从复制的具体工作流程:

1. 主库开启 binlog 日志

主库配置参数:

[mysqld]
server-id=1
log-bin=mysql-bin

log-bin 打开后,写操作都会记录在 binlog 日志文件中。

2. 从库连接主库,指定复制位点

从库需配置唯一的 server-id 并通过如下命令授权登录:

CHANGE MASTER TOMASTER_HOST='master_ip',MASTER_USER='rep_user',MASTER_PASSWORD='rep_pass',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=XXXXX;

这里的 MASTER_LOG_FILEMASTER_LOG_POS 决定了从哪个 binlog 文件、哪个位置开始同步。

3. 启动从库的 IO 线程

  • IO 线程连到主库,启动时会告知 binlog 的位置
  • 主库的 Binlog Dump 线程读取指定 binlog 内容,并实时推送到从库
  • 从库收到 binlog 片段后,写入本地的 relay log 文件

4. 启动从库的 SQL 线程

  • SQL 线程实时读取 relay log,将记录的 binlog 变更内容分析为 SQL 语句或数据行变更
  • 在从库数据库中重放这些操作,还原原始数据变更

5. 持续循环,实时同步

  • 主从之间保持长连接,持续同步主库新生成的 binlog 文件
  • 这种机制可以实现准实时的数据同步

四、主从复制的类型

目前 MySQL 支持三种复制类型:

  1. 异步复制(Asynchronous Replication):
    主库执行完事务后即返回,后续 binlog异步同步到从库。有数据延迟风险但性能最佳。

  2. 半同步复制(Semi-synchronous Replication):
    主库在至少一个从库收到该事务 binlog 后才返回提交结果,延迟更小,数据更可靠。

  3. 全同步复制(Group Replication):
    主要用在 MySQL Group Replication / InnoDB Cluster,全员一致数据同步,写延迟大,但最安全。


五、主从复制的部署场景和优势

  • 读写分离
    将写操作集中到主库,读操作分布到多个从库,极大提升系统读能力。

  • 容灾备份
    主库故障时可用从库顶替,提升系统可用性与可靠性。

  • 数据分析后台
    业务分析、报表可在从库执行,避免影响线上主库性能。


六、主从复制的常见问题与注意事项

  1. 主从延迟
    网络、从库负载大或大事务都可能导致数据同步延迟。

  2. 主从不一致
    严格用主键做增删避免自增ID冲突,不要让主从有差异化业务操作。

  3. 权限与安全
    复制用户需谨慎最小权限管理,生产环境确保传输通道安全。

  4. 监控与故障自动切换
    可以配合 MHA、Keepalived 等实现主从间的自动故障转移。

  5. 数据初始同步
    新从库加入需先基于某一时刻主库快照 + 日志位点加载初始化数据。


七、主从复制架构的常见拓扑

  • 一主多从:最常见,主库1个,从库N个。
  • 多级复制(级联复制):便于扩展,但可能带来更长同步链路延迟。
  • MGR/多主复制:高可用、冲突解决复杂,适合业务有特别需求。

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

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

相关文章

【PHP 函数从入门到精通】

🧠 PHP 函数从入门到精通 PHP 函数是编程中最基础、也是最强大的工具之一。它不仅可以简化代码、提高复用性,还能通过各种高级用法,让你写出更灵活、更现代的代码。 下面我们从函数的基础讲起,逐步深入,带你掌握函数的…

CGA老年综合评估汉密尔顿抑郁量表与认知评估联用

一、CGA老年综合评估汉密尔顿抑郁量表与认知评估联用的基础CGA老年综合评估 (一)二者评估内容的互补性 CGA老年综合评估汉密尔顿抑郁量表主要聚焦于老年人的抑郁情绪及相关症状,而认知评估则着重考察老年人的记忆力、注意力、思维能力等认知…

教培机构如何开发自己的证件照拍照采集小程序

职业教培机构对学员的证件照采集是进行学生培训管理、考试报名、证书发放的前置工作,传统拍照和收集证件照的方式往往面临效率低、质量参差不齐等问题。开发一款专属的证件照拍照采集小程序,不仅能提升机构形象,还能大幅优化工作流程。借助“…

GC8872刷式直流电机驱动器详解:3.6A驱动能力与PWM控制

概述GC8872是一款具有故障报告功能的刷式直流电机驱动芯片,专为打印机、电器、工业设备等机电一体化应用设计。这款芯片采用ESOP8封装,集成了H桥驱动电路和多种保护功能,支持高达3.6A的峰值电流输出。关键特性宽电压工作范围:6.5V…

从0开始学习R语言--Day54--双重固定模型

对于具有空间差异的数据,如果不知道数据的特征关系或意义,直接用杜宾模型来处理是一个比较通用的思路,只是后续还需要很多检验去证明结果的可解释性和统计性。但如果我们已经知道特征的意义,比如企业经济发展的数据中有着员工的科…

三生筛法在计算数论中的极限是什么?

AI辅助创作:三生筛法在计算数论中的极限主要体现在‌规模边界‌、‌算法适应性‌及‌理论兼容性‌三个维度,其核心瓶颈与突破路径如下:一、规模边界:计算效率的断崖式衰减‌‌低维高效区的上限‌在 10^15 以内数域,三生…

iOS WebView 加载失败与缓存刷新问题排查实战指南

在移动 App 中嵌入网页后,不少团队都会遇到一个诡异的问题:用户看到的是“旧内容”,或“资源加载失败”,但在浏览器调试中一切正常。特别是在 iOS WebView 中,这类缓存和加载问题常常隐匿、难以复现。 这篇文章将通过一…

GoLand 项目从 0 到 1:第二天 —— 数据库自动化

第二天核心任务:自动化与多数据库支持第二天的开发聚焦于数据库自动化流程构建与MongoDB 业务链路扩展,通过工具化手段解决数据库操作的重复性问题,同时完善多数据库支持能力。经过一天的开发,项目已实现数据库初始化、迁移、种子…

qt框架,使用webEngine如何调试前端

解决 Qt 5.14.2 中启用开发者工具的问题问题在于 Qt 5.14.2 中 QWebEngineSettings::DeveloperExtrasEnabled 属性已被弃用或更改。正确启用开发者工具的完整方法&#xff08;Qt 5.14.2&#xff09;1. 修改 main.cpp#include <QWebEngineView> #include <QWebEngineSe…

【Atlassian生态】Jira Cloud单站点现可支持10万用户:架构升级与龙智云迁移服务

作为Atlassian全球白金合作伙伴&#xff0c;龙智团队非常激动地宣布&#xff1a;Jira迎来历史性突破——Jira Cloud单个站点最高可支持10万用户&#xff01;覆盖Enterprise、Premium和Standard版本。现在&#xff0c;更多的团队可以将Jira作为核心协作中枢&#xff0c;以加速目…

深入解析JVM垃圾回收调优:性能优化实践指南

深入解析JVM垃圾回收调优&#xff1a;性能优化实践指南 一、技术背景与应用场景 随着互联网业务的飞速发展&#xff0c;Java 应用在高并发、大内存场景下对 JVM 性能提出了更高要求。垃圾回收&#xff08;Garbage Collection&#xff0c;GC&#xff09;作为 JVM 的核心组件之一…

万字解析Redission ---深入理解Redission上锁过程

Redisson获取锁过程 RLock lock redissonClient.getLock("lock:order" userId); boolean isLock lock.tryLock(1L, TimeUnit.SECONDS);调用tyrLock其实就是下面的方法&#xff0c;如果说没有指定锁的过期时间&#xff0c;可以看到这边设置为了-1Overridepublic bo…

NVM踩坑实录:配置了npm的阿里云cdn之后,下载nodejs老版本(如:12.18.4)时,报404异常,下载失败的问题解决

文章目录一、情景还原二、分析原因三、解决方案一、情景还原 有个老项目&#xff0c;需要用到 node 的 12.18.4 版本。 小case&#xff0c;我装了 nvm 的&#xff0c;根本构不成挑战&#xff0c;敲敲命令就可以了&#xff1a; # 安装12.18.4版本的nodejs nvm install 12.18.…

优秀案例:基于python django的智能家居销售数据采集和分析系统设计与实现,使用混合推荐算法和LSTM算法情感分析

1 绪论1.1 研究的背景和意义本文所研究设计的智能家居销售数据采集与分析系统主要是为了提升数据的采集效率&#xff0c;并且实现及时采集到的线上电商平台及线下店面的多重渠道销售数据的采集与分析&#xff0c;精确地进行相关的数据采集并应用先进的数据挖掘算法进行分析挖掘…

【传感器标定(四):多传感器融合定位系统中的标定与时间同步方案】

1. 系统框架概述 本方案采用"三层标定框架"&#xff0c;整体架构如下图所示&#xff1a; #mermaid-svg-WhuG9fzKdHSAzSNh {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-WhuG9fzKdHSAzSNh .error-icon{f…

PostgreSQL 跨库查询方法

问题描述&#xff1a; PostgreSQL 跨库查询方法 select rc.tm,fq,fq_old,sccd,unitcd from resource_calc_scene_section_result as rc inner join "mxpt_yushuiqingsrc_databases"."public".st_river_r_hi as st on st.stcd rc.bscd and st.tm rc.tmwher…

毕业论文参考文档(免费)—DHT11 温湿度传感器的硬件与软件系统设计

毕业论文参考文档&#xff08;免费&#xff09;—DHT11 温湿度传感器的硬件与软件系统设计第一章 硬件系统设计 1.1 硬件组成与接口设计 DHT11 采用 4 引脚封装&#xff08;SOP-4&#xff09;&#xff0c;如图 1-1 所示。核心硬件由三部分构成&#xff1a;电阻式湿度检测元件、…

壁纸管理 API 文档

壁纸管理 API 文档环境&#xff1a;Python 3.9、Flask 2.x、PyMySQL 1.x 运行&#xff1a;python app.py 监听&#xff1a;http://0.0.0.0:5000通用响应格式 {"code": 200, // 业务码&#xff1a;200 成功&#xff0c;201 创建成功&#xff0c;400 参数错误&am…

常见问题三

在前端开发中&#xff0c;Vue 的数据响应机制、脚本加载策略以及函数式编程技巧是高频考点和日常开发的核心基础。本文将围绕这几个关键点展开详细解析&#xff0c;帮助开发者深入理解其原理与应用。一、Vue2 与 Vue3 的数据响应原理对比Vue 的核心特性之一是数据响应式—— 当…

清华大学顶刊发表|破解无人机抓取与投递难题

在城市配送、应急物资投放和仓储拣选等场景&#xff0c;人们期待无人机能够独立完成“取-运-投”全流程。然而主流多旋翼通常采用下挂式夹爪或机械臂&#xff0c;包裹悬在机体下方&#xff0c;带来重心下移、转动惯量增加等问题。为突破这一结构瓶颈&#xff0c;清华大学机械工…