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