MySQL中的binlog日志

一、什么是binlog?

binlog(二进制日志)是MySQL用来记录所有数据变更操作的文件。

就像一个"监控录像",MySQL把每一个INSERT、UPDATE、DELETE操作都记录下来。

二、为什么需要binlog?

想象一个场景:你的电商系统突然宕机了,已经处理的订单数据丢失。这时候有了binlog就像有了"黑匣子",你可以用它来恢复丢失的数据。

2-1、binlog的主要用途有三个:

1. 数据恢复- 系统故障时,可以用binlog恢复到某个时间点的数据状态

2. 主从复制- 从库通过读主库的binlog来保持数据同步。这是构建高可用系统的基础

3. 审计追踪- 可以查看谁在什么时间修改了什么数据

2-2、binlog的三种格式

1、STATEMENT格式(记录SQL语句)

比如你执行:UPDATE users SET age = age + 1 WHERE id > 100 binlog就记录这条SQL语句原文

优点:记录量小,节省空间

缺点:某些函数(如NOW())可能导致从库数据不一致

2、ROW格式(记录行数据变化)

不记录SQL语句,而是记录"id=101的用户age字段从20变成21" 详细记录每一行数据变化前后的值

优点:最安全,不会有数据不一致的问题

缺点:记录量大,占用空间多

3、MIXED格式(混合模式)

MySQL智能选择:普通操作用STATEMENT格式,可能有问题的操作用ROW格式

三、如何启用binlog?

编辑MySQL配置文件my.cnf

[mysqld] server-id = 1 log-bin = /var/log/mysql/mysql-bin binlog-format = ROW expire-logs-days = 7

然后重启MySQL服务。

四、实际操作示例

查看binlog是否启用:

SHOW VARIABLES LIKE 'log_bin'; -- 结果:ON 表示已启用

查看当前binlog文件列表:

SHOW BINARY LOGS; -- 显示:mysql-bin.000001, mysql-bin.000002 等

查看binlog内容(以可读的方式):

mysqlbinlog /var/log/mysql/mysql-bin.000001

输出会显示类似这样的内容:

# at 154 #250107 10:30:45 server id 1 end_log_pos 235 Query thread_id=2 exec_time=0 error_code=0 SET TIMESTAMP=1704597045/*!*/; INSERT INTO users (id, name, age) VALUES (1, 'Alice', 25)

4-1、一个完整的场景理解

假设你有个电商系统:

10:00 - 用户购买商品,订单状态改为"已支付" 10:05 - 系统宕机了 10:10 - 系统恢复,但这5分钟的数据丢了 此时你可以: 1. 查看binlog中10:00-10:05的所有操作 2. 用mysqlbinlog工具恢复这部分数据 3. 系统恢复正常

五、三个日志的作用

  • undo log:用于事务回滚,记录数据修改前的旧值
  • redo log:用于崩溃恢复,记录数据修改后的新值
  • binlog:用于主从复制和数据恢复,记录所有数据变更

5-1、三种日志的层次归属

日志类型所属层次文件后缀负责模块
BinlogServer层.000001,.000002...MySQL Server
Undo Log存储引擎层(InnoDB)ibdata1,undo001InnoDB 引擎
Redo Log存储引擎层(InnoDB)ib_logfile0,ib_logfile1InnoDB 引擎

5-2、详细对比三种日志

1. Binlog(二进制日志)

归属:Server层(所有引擎共用)
作用:主从复制 + 数据恢复

特点:
• 逻辑日志:记录SQL语句或行变化(ROW格式记录变化前后的值)
• 追加写入:一直往后写,文件满了切下一个
• 所有引擎共享:不管用InnoDB还是MyISAM,都会记录

为什么 Binlog 在 Server 层?

设计目标:支持所有存储引擎的主从复制

2. Undo Log(回滚日志)

归属:存储引擎层(InnoDB特有)
作用:事务回滚 + MVCC多版本控制

特点:
• 物理日志:记录数据修改前的旧版本
• 循环使用:空间会被复用
• 实现MVCC:提供事务的隔离性(可重复读)

3. Redo Log(重做日志)

归属:存储引擎层(InnoDB特有)
作用:崩溃恢复 + 保证持久性
特点:
• 物理日志:记录数据页的物理变化
• 循环写入:固定大小文件循环写
• Write-Ahead Logging:先写日志,后写数据

为什么 Redo/Undo 在引擎层?

设计目标:事务实现是引擎自己的事

不同引擎的事务实现不同
• InnoDB:需要 Redo/Undo
• MyISAM:根本没有事务,不需要这些日志

只有 InnoDB 需要 Redo/Undo Log 吗?

是的!

  • MyISAM:没有事务,崩溃可能丢数据

  • Memory:数据在内存,重启就丢

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

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

相关文章

UPDATE语句的完整执行过程

以UPDATE test SET a1 WHERE id2为例,完整讲解执行流程。一、核心概念速记在开始之前,你需要记住三个日志文件的作用:undo log:用于事务回滚,记录数据修改前的旧值redo log:用于崩溃恢复,记录数…

一个基于 Node.js 和 FFmpeg 的视频合并 CLI 工具,支持为视频添加片头、片尾,以及批量处理多个视频文件。

Video Merger CLI (vvm) 一个基于 Node.js 和 FFmpeg 的视频合并 CLI 工具,支持为视频添加片头、片尾,以及批量处理多个视频文件。 功能特性 ✅ 视频合并:将两个视频合并为一个(支持开头或结尾位置)✅ 批量处理&#…

[特殊字符]_网络IO性能优化:从TCP到HTTP的层层优化[20260107164433]

作为一名专注于网络性能优化的工程师,我在过去的项目中积累了丰富的网络IO优化经验。最近,我参与了一个对网络性能要求极高的项目——实时视频流平台。这个项目让我重新审视了Web框架在网络IO方面的表现。今天我要分享的是基于真实项目经验的网络IO性能优…

AI改图工具实操,冬装白底图快速生成高点击场景图

冬季服饰上新视觉太费劲儿!外景拍摄又冷又贵还等档期,PS 抠图易虚边、光影违和显廉价。用AI指令改图,上传白底模特图,输指令就能换场景姿势,服饰细节1:1还原,十几秒出图可批量,商用无忧&#xf…

电影解说从0到1,要准备哪些工具?一套能跑通的实战清单

电影解说,本质上不是创意竞赛,而是一套高度标准化的内容生产流程。 你做不出来第一条,大多数时候不是能力问题,而是工具选错、流程没搭好。这篇内容不讲空泛的方法论,而是按一条已经被大量账号验证过的电影解说流水线&…

⚡_延迟优化实战:从毫秒到微秒的性能突破[20260107164942]

作为一名专注于系统性能优化的工程师,我在过去十年中一直致力于降低Web应用的延迟。最近,我参与了一个对延迟要求极其严格的项目——金融交易系统。这个系统要求99.9%的请求延迟必须低于10ms,这个要求让我重新审视了Web框架在延迟优化方面的潜…

SQLi-Labs搭建及通关

**在 Windows 电脑上安装 sqlmap 并搭建 SQLi-Labs,需要先配置Python 环境(支撑 sqlmap)和XAMPP 环境(集成 ApacheMySQLPHP,支撑 SQLi-Labs)。 一、工具下载: 1、Python(sqlmap 依赖…

[特殊字符]_可扩展性架构设计:从单体到微服务的性能演进[20260107163924]

作为一名经历过多次系统架构演进的老兵,我深知可扩展性对Web应用的重要性。从单体架构到微服务,我见证了无数系统在扩展性上的成败。今天我要分享的是基于真实项目经验的Web框架可扩展性设计实战。 💡 可扩展性的核心挑战 在系统架构演进过…

[特殊字符]_压力测试与性能调优的完整指南[20260107165451]

作为一名经历过无数次压力测试的工程师,我深知压力测试在性能调优中的重要性。压力测试不仅是验证系统性能的必要手段,更是发现性能瓶颈和优化方向的关键工具。今天我要分享的是基于真实项目经验的压力测试与性能调优完整指南。 💡 压力测试…

一文讲清:主流大模型推理部署框架:vLLM、SGLang、TensorRT-LLM、ollama、XInference

本文系统性梳理当前主流的大模型推理部署框架,包括vLLM、SGLang、TensorRT-LLM、Ollama、XInference等。 随着大语言模型技术的迅猛演进,推理部署框架作为贯通模型能力与落地应用的核心枢纽,其战略价值正持续攀升。本文旨在对当前业界广泛采…

豆包本地文件问答下线后的打开方法

豆包本地文件问答下线后的打开方法关键词:豆包本地文件问答、豆包离线问答、本地知识库、doubao 本地模型、RTX AI PC、本地 AI 问答一次“功能下线”带来的意外发现前段时间在整理本地资料的时候,我发现豆包的「本地文件问答」功能页面多了一个提示&…

【光子AI 2026 企业级 Agent 架构指南】别再把 Skill 当 Tool:Agent Skills × MCP 企业级落地全指南(最新定义澄清 + 场景大全 + 选型决策树+安全工程清单)

文章目录 拒绝“手搓”Agent:2026企业级架构指南——彻底搞懂 Agent Skills 与 MCP 的边界与选型 🚀 引言:AI 开发的“草莽时代”结束了 第一部分:正本清源——最新官方定义解读 1. Agent Skills:让 Agent 变“专家”的文件夹 2. MCP:AI 应用的“USB-C 接口” 第二部分:…

格雷希尔:G15F-KFYK-FD39 定制款快速密封连接器,适配自动化产线,赋能电驱动通讯接口的自动化密封测试

某新能源设备商联系到我们,为其电驱动上的通讯接口采购一批快速密封连接器用于气密性测试,该生产线为自动化产线,对连接器的适配性、稳走性、耐用性均提出了极高要求。格雷希尔定制款 G15F-KFYK-FD39 自动化连接器格雷希尔定制款 G15F-KFYK-F…

如何判断光耦 PC817 的好坏

判断光耦 PC817 的好坏对于开关电源电路板的维修非常重要:1. 光耦的功能隔离信号:PC817 可以有效隔离高压输入和低压控制电路,保护电路元件和人员安全。信号传输:光耦用于实现数据的可靠传输,特别是在噪声较大的环境中…

Go 语言的“舒适区”:为何在这张“鄙视链”金字塔中,Go 仅次于 C?

大家好,我是Tony Bai。最近,一张“编程语言分级图”在技术社区引发大家热议。它没有参考 TIOBE 排名,也不看 GitHub Star 数,而是完全基于一种简单粗暴的价值观:谁最不折腾人?在这张金字塔中,C …

大模型AI学习路线:从提示词工程到模型部署的全栈教程,90天变身高薪工程师

文章提供四阶段大模型学习路径:初阶应用(10天)掌握提示词工程,高阶应用(30天)学习RAG系统,模型训练(30天)实现微调,商业闭环(20天)完成部署。涵盖大模型基础知识、智能体开发、私有化部署等核心技能,提供实战项目和工具…

什么是企业机器人流程自动化RPA

企业RPA (Robotic Process Automation) 中文名:机器人流程自动化 本质:一种模拟人在计算机上执行规则明确、重复性高工作的软件“数字员工”。---一、核心功能(它能做什么?)它像一位不知疲倦、零错误的白领机器人&…

【分布式系统】02 现实世界的法则 —— 分布式系统的定义、模型与核心挑战

大家好,我是Tony Bai。欢迎来到《分布式系统:原理、哲学与实战》微专栏的第二讲。在上一讲中,我们告别了秩序井然的单体城堡,决定踏入广阔的分布式联邦。但在正式探索之前,我们必须回答一个根本问题:我们所…

分区操作系统、容器化、虚拟机的概念

分区操作系统(通常指分时操作系统)与 Docker 是完全不同层面的技术,分别解决不同的问题。简单来说: 分区操作系统:是一种操作系统类型,管理单个硬件上的多个用户/任务。Docker:是一个应用容器…

2025年广州市“人工智能+”典型案例集|附118页PDF文件下载

《广州市“人工智能”典型案例集》展示了AI在各领域的应用。关键点包括:AI制造:智能座舱、多模态大模型应用、PCB项目等,提升效率与精度。AI安全:智能机器狗、安全大模型、AI安管一体机等,保障公共安全。AI教育&#x…