当前位置: 首页 > news >正文

MySQL--主从复制--原理

在这里插入图片描述

MySQL 主从复制原理

这张图片清晰展示了 MySQL 主从复制的工作流程,主库(Master)与从库(Slave)之间如何通过日志文件与线程协同完成数据同步。下面结合图片中的关键流程和组件进行详细讲解。


1. 主库的数据变更记录

在主库(Master)上:

  • 数据变更(data change)
    当主库执行写操作(如 INSERTUPDATEDELETE)时,这些操作不仅会修改主库的数据库数据,还会被**记录到二进制日志(binlog)**文件中。

    二进制日志(binlog) 是主从复制的核心数据来源,它记录了所有对数据库造成更改的 SQL 语句(不包含 SELECT 读操作)。主库只负责写入 binlog,复制时从库会读取这些日志。


2. 从库的复制线程(Slave)

在从库(Slave)上,复制主要依赖两个线程:

  • I/O 线程(IOThread)

    • 从库的 I/O 线程连接主库,并从主库的 binlog 文件中读取日志内容,将其写入到从库的**中继日志(Relay log)**中。
    • 这一过程如图所示,主库的 binlog 被 I/O 线程读出并写入到中继日志文件中。
  • SQL 线程(SQLThread)

    • SQL 线程从中继日志中读取日志内容,并重放日志中的 SQL 语句,将变更应用到从库的数据中,完成数据同步。
    • 这一重放过程是将从主库同步来的日志按顺序执行,确保从库的数据与主库保持一致。

3. 工作流程总结

主从复制过程可概括为以下几个步骤:

  1. 主库执行写操作,将数据更改记录到 binlog(如图中的 “data change”)。
  2. 从库的 I/O 线程连接主库,从主库读取 binlog 日志,并将日志保存到从库的中继日志(Relay log)。
  3. 从库的 SQL 线程从中继日志中读取日志内容,重放日志中的 SQL 语句,将主库的变更同步到从库。

4. 线程之间的配合

从库通过两个线程并行处理日志:

  • I/O 线程负责读写主库的 binlog 并写入 Relay log
  • SQL 线程负责从 Relay log 中读取并重放 SQL 语句
    这两者并行运行,可以减少同步延迟,提升复制效率。

5. 复制过程中的几个关键日志

  • binlog(主库的二进制日志):记录主库上的数据更改。
  • Relay log(从库的中继日志):I/O 线程从主库读取 binlog 后写入中继日志,供 SQL 线程执行重放操作。

6. 数据同步与延迟

由于从库要依次拉取主库的 binlog,并重放日志中记录的 SQL 语句,可能存在短暂延迟。如果主库写入频繁、网络不稳定或从库性能较低,从库的数据可能会滞后于主库。这种现象在监控 SHOW SLAVE STATUS\G 中可以通过 Seconds_Behind_Master 字段体现。

http://www.dtcms.com/a/91594.html

相关文章:

  • (UI自动化测试web端)第三篇:元素的常用操作方法_浏览器操作
  • QT编程之CAN协议
  • DeepSeek与GPT的全方位对比及其为编程工作带来的巨大变革
  • 熊猫精灵脚本助手官网_找图找色-脚本精灵2025最新版下载
  • 深入解析 Java 类加载机制及双亲委派模型
  • 【MARK-2小车】小车教程、上位机教程
  • 高等数学-第七版-上册 选做记录 习题5-4
  • 表的约束及代码练习
  • django入门教程之templates和static资源【五】
  • 八纲辨证总则
  • 如何优化 docker 镜像体积?
  • 【深度学习基础 2】 PyTorch 框架
  • EMQX Dashboard
  • Java 大视界 -- Java 大数据在智能金融区块链跨境支付与结算中的应用(154)
  • C#多态性入门:从零到游戏开发实战
  • Unity URP自定义Shader支持RenderLayer
  • 【Unity3D实现UI轮播效果】
  • 无人机+evtol:低空经济市场硬通货技术详解
  • HCIP(二)
  • 六十天Linux从0到项目搭建(第八天)(缓冲区、gitee提交)
  • 让 AI 更智能的检索增强生成(Retrieval-Augmented Generation)
  • 组态软件之万维组态介绍(web组态、html组态、vue2/vue3组态、组态软件、组态编辑器)
  • Redis 集群配置
  • 代码随想录算法训练营Day12 | Leetcode 226翻转二叉树、101对称二叉树、104二叉树的最大深度、111二叉树的最小深度
  • PHP框架 ThinkPHP 漏洞探测分析
  • 基于SpringBoot+Vue的在教务管理(课程管理)系统+LW示例
  • 技术迭代、流量困境与营销突破:基于开源AI大模型与S2B2C模式的创新路径研究
  • HCIA-AI人工智能笔记4:神经网络类型
  • SpringSecurity + OAuth2 限制一个用户(同端互斥)登录
  • c# winform 提高界面加载速度