首页/数据/数据工程与 ETL 速查/SHOW BINARY LOGS:日志文件清单
CDC 与同步53 条

SHOW BINARY LOGS:日志文件清单

SHOW BINARY LOGS 列出实例上的 binlog 文件、大小与加密状态,用于评估磁盘占用、确认保留时长,以及在 CDC 报“所需 binlog 不存在”时核对目标文件是否已被清理。

SHOW BINARY LOGS 是什么

SHOW BINARY LOGS 是 MySQL 的运维查询语句,列出当前实例上所有 binlog 文件的名称、大小与是否加密。它用于三件事:评估 binlog 占用磁盘的规模、确认日志保留时长是否满足 CDC 与从库延迟容忍度、以及在 CDC 报「所需 binlog 已被清理」时核对目标文件是否还在。语句不需要额外权限以外的特殊准备,但需要具备复制相关权限。

基本信息

适用平台MySQL 5.7 / 8.0 / 8.4(含部分兼容分支,行为以版本手册为准)
同步方式执行后立即返回结果集,不阻塞写入
输出列Log_name、File_size、Encrypted
文件命名由 log_bin_basename 加序号构成,例如 mysql-bin.000123
相关清理PURGE BINARY LOGS TO / BEFORE,或按保留参数自动过期
关联语句SHOW MASTER STATUS(较新版本中更名为 SHOW BINARY LOG STATUS)

典型使用场景

  • CDC 断点续传失败:采集端提示 binlog 不存在,核对文件是否已被清理
  • 磁盘告警排查:确认 binlog 是否为主要占用方以及单文件大小
  • 保留期评估:结合文件序号范围估算现有日志覆盖的时间跨度
  • 清理前确认:执行 PURGE 前先看清将被删除的文件范围
  • 升级或迁移前核对:确认加密状态与文件名格式是否符合下游采集工具的预期

查看文件清单与事件

查看文件清单与事件
-- 清单:文件名、大小、是否加密
SHOW BINARY LOGS;

-- 当前正在写入的文件与位点(较新版本中更名,老版本用 SHOW MASTER STATUS)
SHOW MASTER STATUS;

-- 查看单个文件中的事件:调试用,会扫描文件,生产谨慎执行
SHOW BINLOG EVENTS IN 'mysql-bin.000123' LIMIT 20;

按保留策略清理

按保留策略清理
-- 只清理到指定文件之前(保留该文件及之后),更安全
PURGE BINARY LOGS TO 'mysql-bin.000150';

-- 或按时间清理(不要早于最慢从库与 CDC 的消费位点)
PURGE BINARY LOGS BEFORE '2026-10-01 00:00:00';

输出逐列读法

列名含义异常表现
Log_namebinlog 文件名,按序号递增序号出现断层说明有文件被手工删除
File_size当前文件大小(字节)长期远小于上限说明写入少;接近上限会触发切分
Encrypted该文件是否加密(取决于版本与配置)从 YES 变 NO 或反之,需确认配置是否被改动
不要用 rm 删除 binlog 文件,也不要只删 index 里的记录:index 与实际文件不一致会破坏复制与 CDC 采集,恢复代价很高。清理一律走 PURGE 语句。
自动过期参数在新版本中已由按天配置改为按秒配置(binlog_expire_logs_seconds),单文件大小上限由 max_binlog_size 决定;调整前先确认最慢的从库与 CDC 消费位点,避免日志被清到采集端还没读到的位置。

易错点

  • 手工删除 binlog 文件后再执行 PURGE,index 与实际文件不符导致实例报错
  • 把从库的 relay log 当成主库 binlog 核对,看错了清单,误判为日志被清理
  • 保留期只按磁盘空间调,短于最慢从库或 CDC 的重试窗口,故障恢复时无日志可回放
  • 在生产高峰执行 SHOW BINLOG EVENTS 扫描大文件,带来额外 IO 压力
  • 忽略了日志加密状态变化,采集端升级后读取失败却先怀疑网络

数据来源与参考

  • MySQL 8.0 Reference Manual: SHOW BINARY LOGS
  • MySQL 8.0 Reference Manual: SHOW BINLOG EVENTS
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌