mysql binlog 中的位点生成逻辑是什么?

ops/2024/10/19 7:29:53/

在 MySQL 中,二进制日志(binary log 或 binlog) 是用于记录所有修改了数据库状态的语句的文件。这包括表结构变更和数据变更(如 INSERT、UPDATE 和 DELETE 操作)。二进制日志是 MySQL 数据复制的基础,并且对于数据恢复和审计也非常重要。

二进制日志位点(binlog position)

位点,也称为 日志位置或偏移量,是指在二进制日志文件中的一个确切位置。每当数据更改事件被记录到日志中时,都会分配一个唯一的事件位置(position),该位置是连续的,并以字节为单位进行度量。

位点的生成逻辑

  1. 初始化:

    • 当 MySQL 服务器启动时,如果启用了 binlog,它会创建一个新的二进制日志文件。此文件从位置 4 开始写入(MySQL 的二进制日志文件头部有一个格式描述事件占用前 4 个字节)。
  2. 记录事件:

    • 对于每一个需要记录到 binlog 的事件(数据或结构变更),MySQL 都会生成一个对应的 “事件(event)” 来描述这次操作。
    • 每个事件都包括事件本身的数据、事件类型、时间戳、不同服务器之间可能使用的标志等信息。
    • 这些事件被追加到当前的二进制日志文件尾部。
  3. 事件大小:

    • 每个事件所占的空间大小并不固定,依赖于事件的类型及其携带的数据。
    • 当事件被写入到 binlog 文件中后,文件的位点将增加相应的字节数(即增长事件大小的字节数)。
  4. 文件轮换:

    • MySql 在达到特定条件下会进行日志文件的轮换:比如当达到最大文件大小限制 (max_binlog_size) 或者手动执行 FLUSH LOGS 命令时。
    • 轮换后会创建一个新的二进制日志文件,位点重新从 4 开始。

示例

假设某个 binlog 文件名为 mysql-bin.000001,如果你向表中INSERT了一条数据,并且该行为产生了一个100字节大小的事件,如果该事件是文件中第一个事件(除了文件开头的格式化描述),那么此事件的开始位点将是 4,结束位点将是 103。对于接下来的事件,它们的位点将从上一个事件的结束位点开始。

总结

位点在 MySQL 复制中非常关键,它告诉从服务器应该从主服务器的哪个位置开始读取事件。理解二进制日志和位点的工作方式对于有效地管理和调试 MySQL 数据库至关重要。


http://www.ppmy.cn/ops/20853.html

相关文章

Atom-7B-Chat本地推理

Atom-7B-Chat 本地推理 基础环境信息(wsl2安装Ubuntu22.04 miniconda) 使用miniconda搭建环境 (base) :~$ conda create --name Llama-Chinese python3.10 Retrieving notices: ...working... done Channels:- defaults Platform: linux-64 Collectin…

Orange3数据可视化(组件概览)

概要 大家见过Orange3提供的丰富数据可视化组件吗? Orange3为您提供了一系列生动的图表工具,包括树图、箱线图、小提琴图、分布图、散点图、折线图、条形图、筛图、马赛克图、自由投影、线性投影、雷达图、热力图、韦恩图、轮廓图、毕达哥拉斯树、毕达哥…

PotatoPie 4.0 实验教程(28) —— FPGA实现sobel算子对摄像头图像进行边缘提取

什么是sobel算子? Sobel 算子是一种常用的边缘检测算子,用于在图像中检测边缘。它基于对图像进行梯度运算,可以帮助识别图像中灰度值变化较大的区域,从而找到图像中的边缘。 Sobel 算子通过计算图像的水平和垂直方向的一阶导数来…

Eclipse 如何导入一个 Maven 项目

如果你的项目是 Maven 项目的话,导入的时候需要使用 Import,而不能使用打开项目的方式。 选择导入 选择导入 Maven 项目 然后选择 Maven 项目,开始导入。 选择目录后导入 然后选择你需要导入的目录后,单击导入。 Eclipse 如何导…

蓝桥杯(C/C++)知识点------杂

蓝桥杯知识点(杂) 一、二分查找 1、普通的二分查找 使用二分查找的前提就是必须是有序的数组 关于二分查找,首先需要注意的是,所给的区间,一般情况下有两种,第一种就是两头都是闭区间,第二种…

职业礼仪与职场口才周记

职业礼仪与职场口才周记 这一周,我深入学习了职业礼仪与职场口才的相关知识,并在实际工作中加以应用,取得了不少收获。以下是我对这一周学习与实践的详细记录。 一、职业礼仪的学习与实践 职业礼仪是职场中不可或缺的一部分,它代…

sentinel-1.8.7与nacos-2.3.0实现动态规则配置、双向同步

😊 作者: 一恍过去 💖 主页: https://blog.csdn.net/zhuocailing3390 🎊 社区: Java技术栈交流 🎉 主题: sentinel-1.8.7与nacos-2.3.0实现动态规则配置、双向同步 ⏱️ 创作时…

揭示C++设计模式中的实现结构及应用——行为型设计模式

简介 行为型模式(Behavioral Pattern)是对在不同的对象之间划分责任和算法的抽象化。 行为型模式不仅仅关注类和对象的结构,而且重点关注它们之间的相互作用。 通过行为型模式,可以更加清晰地划分类与对象的职责,并…