讲师中心 微信公众号
AI工具推荐 视频效率加速

mysql主从复制日志文件有什么作用_mysqlbinlog机制说明

雨丽同学_2892

雨丽同学_2892

发布时间:2026-02-04 09:58:32

|

756人浏览过

|

来源于php中文网

原创

binlog是MySQL主从复制的唯一数据源,必须开启log-bin并配置非零唯一server-id;其格式应统一设为ROW以确保数据一致性;relay-log是从库必需的中间缓存,需配置sync_relay_log=1等参数保障强一致。

mysql主从复制日志文件有什么作用_mysqlbinlog机制说明

binlog 是主从复制的数据源头

没有 binlog,MySQL 主从复制根本无法启动。它不是可选日志,而是主库向从库“发货”的唯一凭证——所有写操作(INSERT、UPDATE、DELETE、CREATE TABLE 等)都必须先记进 binlog,从库的 IO Thread 才能拉取并重放。

  • 主库必须显式开启:log-bin = mysql-bin,否则 SHOW BINARY LOGS 为空,CHANGE MASTER TO 会报错 ERROR 1236 (HY000)
  • server-id 必须非零且全局唯一;若为 0,主库虽能启 binlog,但从库连接时会被拒绝
  • 日志文件名(如 mysql-bin.000001)和当前写入位置(Position)由 SHOW MASTER STATUS 返回,从库 CHANGE MASTER TO 时必须严格匹配,差一位都会同步中断

mysqlbinlog 工具是诊断和恢复的底层抓手

mysqlbinlog 不是复制流程中自动运行的组件,而是 DBA 手动介入时最常调用的命令行工具——它把二进制格式的 binlog 解析成可读的 SQL 或事件描述,用于排查同步异常、定位误删时间点、或生成回滚语句。

Session Monitor
Session Monitor

实时 OpenClaw 会话监控器,追踪 JSONL 记录并以持久后台进程向 Telegram 推送格式化更新。适用于在被询问时

下载
  • 查看某段日志内容:mysqlbinlog --base64-output=DECODE-ROWS -v mysql-bin.000003(加 -v 才能看到 Write_rows 等行事件细节)
  • 按时间点恢复:用 --start-datetime="2026-01-28 10:00:00" 和 --stop-datetime 截取区间,再导入到临时库比对
  • 常见坑:binlog_format = ROW 时,直接 mysqlbinlog xxx | mysql 会失败(含大量 SET @@SESSION.GTID_NEXT),需加 --skip-gtids 或过滤掉 GTID 相关行

binlog_format 决定日志内容安全性和体积,ROW 是生产首选

三种格式不是性能高低之分,而是“能否正确还原数据”的底线判断。用 STATEMENT 在涉及 NOW()、UUID()、自增字段或非确定性函数时,从库执行结果可能和主库不一致——这种不一致不会报错,但数据已悄然漂移。

  • ROW:记录每一行变更前后的镜像(Write_rows / Update_rows),100% 可靠,但日志体积大、不可读;mysqlbinlog 输出全是十六进制,必须加 -v 才能解析成伪 SQL
  • MIXED 默认回退到 STATEMENT,只在检测到高风险函数时切 ROW,看似智能,实则埋下黑盒风险——你永远不知道哪条语句被悄悄切了模式
  • 线上环境请硬性配置:binlog-format = ROW,并在主从两端统一,避免因格式不一致导致从库解析失败(错误如 Unknown binlog format)

relay-log 是从库的“中间缓存”,不是可有可无的摆设

很多人以为 binlog 直接发给从库 SQL 线程执行,其实中间必经 relay-log。它是从库本地的二进制日志副本,由 IO Thread 拉取后写入,再由 SQL Thread 顺序读取执行——这个缓冲层让网络抖动、主库重启等不影响从库最终一致性。

  • 从库必须配置 relay-log = mysql-relay-bin,否则启动 START SLAVE 时会报 Failed to initialize the master info structure
  • relay-log.info 文件记录已执行到哪个 relay-log 文件及位置,崩溃重启后靠它续断点;若手动删除该文件,从库会从头开始重放,造成重复写入
  • 不建议开启 log-slave-updates 除非要做级联复制(A→B→C),否则它会让从库也写 binlog,徒增 I/O 和磁盘压力
实际部署中最容易被跳过的,是确认 master.info 和 relay-log.info 的落盘时机——它们默认异步刷盘,主机断电可能导致位点丢失、重复执行。真正在意强一致的场景,得配 sync_relay_log = 1 和 sync_relay_log_info = 1。

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

4263

2023.10.12

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

891

2023.10.27

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

1109

2024.02.23

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

6181

2024.03.06

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

3023

2024.03.06

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

6140

2024.04.07

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

8301

2024.04.29

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

1130

2024.04.29

Linux 新手先学哪些命令
Linux 新手先学哪些命令

Linux新手命令专题汇集终端基础、文件目录操作、文本查看、软件安装和权限管理等入门文章,帮助按实际任务练习常用命令并建立命令行操作习惯。

0

2026.10.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL vs MySQL
PostgreSQL vs MySQL

共1课时 | 187人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn