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

MySQL主从库复制中,主库如何查找对应日志文件位置

在基于 GTID 的复制中,从库发送已执行的 GTID 集合后,主库查找对应日志文件位置的过程,本质上是一个 “智能计算” 而非简单的“文件指针跳转”。

这个过程的核心,就是主库利用二进制日志中特殊标记(Previous_gtids_log_event)的索引功能,快速定位到从库缺失事务的起始点。

⚙️ 主库的“三步定位法”

整个过程可以分解为以下几个关键步骤:

  1. 计算差集:明确“缺什么”
    主库收到从库的 gtid_executed 集合后,会与自己当前的 gtid_executed 集合进行对比,计算出差集。这个差集就是“从库已经执行过的事务”(Slave_GTIDs)和“主库上发生过的事务”(Master_GTIDs)之间的差异。
    · 场景示例:假设主库 GTID 集合为 1-100,从库发来的集合为 1-90,那么差集就是 91-100。
  2. 扫描文件:定位“在哪儿找”
    这是最关键的一步。主库需要知道包含事务 91 的二进制日志文件是哪一个。为此,它会从最早的二进制日志文件开始,依次读取每个文件开头的特殊事件——Previous_gtids_log_event。
    · Previous_gtids_log_event 的作用:在每个二进制日志文件的开头,都记录了一个重要信息:“本文件之前所有已执行事务的 GTID 集合”。这就像是给每个文件贴了一个“内容标签”。
    · 快速定位:主库读取第一个文件的 Previous_gtids_log_event,比如内容是 1-50。因为从库需要的 91 明显大于 50,说明目标事务不在此文件中,主库会跳过该文件。接着检查第二个文件,其 Previous_gtids_log_event 为 1-80,91 仍然不在其中,继续跳过。直到检查到第三个文件,其 Previous_gtids_log_event 为 1-90。主库发现,事务 91 并不包含在“本文件之前”的集合中,因此可以断定:事务 91 就从这个文件开始。
  3. 验证完整性:确保“都能给”
    在开始发送数据前,主库还有一个重要的安全校验:它会检查自己是否还完整地保留着从库所需要的所有 binlog 文件。
    · 如果所需的 binlog 文件(例如包含事务 91 的那个文件)因为过期已经被清理或删除,主库将无法提供完整的数据。这时,主库不会开始复制,而是直接向从库返回一个错误,提示所需的 binlog 已被清理。
    · 如果文件都存在,则校验通过,进入下一步。
  4. 逐事件扫描:找到“起始点”
    在确定了包含事务 91 的二进制日志文件后,主库会顺序读取该文件中的每个事件,逐一检查每个 Gtid_log_event。这个过程会一直持续,直到找到第一个不属于从库 gtid_executed 集合的事务,也就是事务 91 对应的 Gtid_log_event。
  5. 开始传输:从“起始点”推送
    一旦定位到事务 91 的 Gtid_log_event,主库就找到了复制的精确起点。从这个事件开始,主库会将该事务以及之后的所有事务(92、93……)顺序打包,通过 COM_BINLOG_DUMP_GTID 协议推送给从库。

💡 核心差异总结

这个过程和传统基于位点的复制有着本质区别:

· 传统位点复制:运维人员需要手动指定 MASTER_LOG_FILE 和 MASTER_LOG_POS。主库只是机械地听从指令,从指定位置开始发送,并不关心这个位置是否正确或完整。
· GTID 自动定位:从库告诉主库“我有什么”,主库自己计算“你需要什么”,并通过内置的“索引”(Previous_gtids_log_event)智能地找到从哪里开始提供。整个过程自动、精确且安全。

http://www.jsqmd.com/news/390008/

相关文章:

  • 一篇搞定全流程 10个AI论文写作软件测评:MBA毕业论文+科研写作全场景推荐
  • Web产品后台开发新思路,XinServer 深度解析
  • 为什么深度学习中需要“激活函数”?
  • Linux下GNU Autotools工具基础教程
  • 单北斗GNSS变形监测系统在基础设施安全与灾害预警中的应用与发展
  • HarmonyOS应用开发实战(基础篇)Day07-《登录注册页面》
  • 深入解剖STL Vector:从底层原理到核心接口的灵活运用 - 指南
  • 不定积分练习题详解专题
  • 2026如何做好AI推广?国内特色GEO服务商盘点 - 品牌2025
  • 这份榜单够用!9个AI论文平台深度测评,本科生毕业论文写作必备
  • 龙魂系统·审计内核宪法·加固补丁 v1.1
  • P15356 「LCOI R2 T2」The Ordeal 题解
  • 详细介绍:React Native for OpenHarmony开发环境搭建指南(一)
  • C14-2026.2.17
  • 抖音数据分析MCP开发
  • blender-bpy程序化控制物体脉冲变大动画测试(代码移植自sizebox),不建议用于渲染动画,效果不是连续变大的spurt growth
  • 这次终于选对! 更贴合继续教育的降AI率软件 千笔·专业降AIGC智能体 VS 知文AI
  • 高级概率知识1:大数定律:从0到1避坑指南(附完整代码)
  • 拖延症福音 8个一键生成论文工具测评:专科生毕业论文+开题报告高效写作指南
  • 新手也能上手!专科生专用的AI论文工具 —— 千笔AI
  • 导师严选! 更贴合继续教育的降AIGC平台 千笔·降AI率助手 VS 云笔AI
  • 题解:洛谷 P1080 [NOIP 2012 提高组] 国王游戏
  • 题解:洛谷 P1012 [NOIP 1998 提高组] 拼数
  • 2026国内耐用的除尘器厂商推荐排行榜单,带你了解行业好厂,RTO/滤筒除尘器/活性炭箱/旋风除尘器,除尘器制造厂推荐榜 - 品牌推荐师
  • 2024年9月GESP真题及题解(C++七级): 矩阵移动 - 详解
  • 题解:洛谷 P4447 [AHOI2018初中组] 分组
  • 题解:洛谷 P4995 跳跳!
  • 别再瞎找了!AI论文网站 千笔写作工具 VS WPS AI,自考写论文更高效!
  • 题解:洛谷 P1094 [NOIP 2007 普及组] 纪念品分组
  • 题解:洛谷 P1208 [USACO1.3] 混合牛奶 Mixing Milk