首页/数据/数据库速查/binlog 文件位置与大小管理
备份与恢复56 条

binlog 文件位置与大小管理

binlog 默认与 datadir 同盘(log_bin 变量可指路径),单文件大小由 max_binlog_size 控制;用 SHOW BINARY LOGS 查看清单与体积。

数据库速查数据更新于 2026-10-13

binlog 存在哪、能长多大

binlog 默认与数据文件放在同一个数据目录下,路径由 log_bin 相关变量决定;单个文件的大小上限由 max_binlog_size 控制,默认 1GB,但它是软上限,大事务跨过边界时文件会继续写到事务结束,因此实际可能明显超过 1GB。binlog 占用应单独纳入容量监控,写满磁盘会直接影响业务写入。

基本信息

适用MySQL 5.7 / 8.0,需 log_bin 开启
默认位置与 datadir 同盘,除非单独指定路径
单文件上限max_binlog_size 默认 1GB,属软上限
文件切换时机实例重启、执行 FLUSH LOGS、达到大小上限

查看清单与占用

查看清单与占用
SHOW VARIABLES LIKE 'log_bin%';                    # 确认是否开启以及文件前缀
SHOW VARIABLES LIKE 'max_binlog_size';             # 单文件大小上限
SHOW BINARY LOGS;                                  # 文件清单与逐个大小
SELECT SUM(File_size)/1024/1024/1024 AS total_gb FROM performance_schema.binary_log_files;   # 总体积
FLUSH BINARY LOGS;                                 # 手工切换新文件,便于归档或清理
SHOW VARIABLES LIKE 'binlog_expire_logs_seconds';  # 配合过期策略一起评估

容量判断要点

观察项含义判断
SHOW BINARY LOGS 总数当前保留的文件与体积是否接近磁盘可用空间
max_binlog_size单文件软上限大事务会让文件超出该值
与 datadir 同盘数据与日志竞争同一磁盘大事务写日志可能把盘写满
磁盘剩余空间写入可用余量低于阈值时写入会直接失败
binlog 过期策略自动清理窗口窗口过长会持续堆积

典型使用场景

  • 磁盘水位排查:确认 binlog 占用了多少空间
  • PITR 规划:按保留窗口评估需要的磁盘容量
  • 归档与清理:用 FLUSH 切换文件后再处理旧文件
  • 大事务复盘:解释为何单文件超过预期大小
  • 容量规划:把 binlog 增长纳入实例磁盘预算
binlog 目录与数据目录同盘时,大事务不仅写数据,还会同时写 binlog,磁盘压力是叠加的,容量评估要按两者之和来算。
binlog 写满磁盘会导致实例不可写,恢复需要清理或扩容磁盘;把 binlog 单独放到独立磁盘并设置告警是更稳的做法。

容量治理动作

  • 把 binlog 目录放到独立磁盘,避免与数据文件争抢同一块盘
  • 按保留窗口定期清理,并确认下游从库已消费到相应位点
  • 为 binlog 所在分区设置独立的磁盘水位告警

易错点

  • 把 max_binlog_size 当硬上限:大事务会让单文件显著超过设定值,容量评估要留余量
  • binlog 与数据同盘且无独立告警:磁盘写满时业务写入直接失败
  • 只清理不归档:清理后需要 PITR 时找不到对应文件,恢复能力被削弱
  • 忽略 FLUSH 的用途:需要把当前文件归档或切换时,只能靠 FLUSH BINARY LOGS

数据来源与参考

  • MySQL 8.0 Reference Manual: SHOW BINARY LOGS

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌