首页/数据/数据库速查/relay log 管理与清理
主从复制与高可用53 条

relay log 管理与清理

relay log 是复制暂存区:重放后自动清理(relay_log_purge=ON 默认);空间异常时先查 SQL 线程卡点,而不是手工删文件。

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

relay log 是什么

relay log 是复制链路上的暂存区:从库的 IO 线程把主库 binlog 拉到本地写成 relay log,SQL 线程再逐条重放。默认 relay_log_purge=ON,重放完成即自动清理,正常情况下完全不需要人工干预。它的价值在于观测——Relay_Log_Space 持续暴涨说明 SQL 线程重放跟不上或卡住了,排查方向应该指向卡点,而不是手工删文件。

基本信息

适用版本MySQL 5.7 / 8.0(8.0 支持 relay log 文件与索引文件独立路径)
关键参数relay_log、relay_log_purge(默认 ON)、relay_log_space_limit
观测字段SHOW REPLICA STATUS 的 Relay_Log_File、Relay_Log_Space、Relay_Log_Pos
默认行为重放完成即清理,无需干预
异常信号Relay_Log_Space 持续增长,SQL 线程状态不为 applying
清理命令RESET REPLICA ALL 会重置并清空 relay 目录

典型使用场景

  • 从库磁盘告警:确认是 relay log 还是数据文件占用增长
  • 复制延迟排查:Relay_Log_Space 大说明重放端积压
  • 从库重建后清理旧 relay 文件,避免磁盘被历史日志占满
  • 把 relay log 放到独立磁盘:写入高峰时与数据盘互不干扰
  • 升级迁移时确认 relay 目录路径与权限,避免启动失败

查看与管理

查看与管理
-- 查看 relay 相关参数当前值
SHOW VARIABLES LIKE 'relay_log%';

-- 关注 Relay_Log_Space 与 SQL 线程状态
SHOW REPLICA STATUS\G

-- 极少需要:重新打开自动清理(默认即为 ON)
SET GLOBAL relay_log_purge = ON;

-- 重建复制关系时会重置 relay 文件,操作前确认不再需要旧位点
-- RESET REPLICA ALL;

空间异常时的排查路径

空间异常时的排查路径
# 1) 看 relay 目录占用与增长趋势
du -sh /var/lib/mysql/relaylog/ 2>/dev/null || du -sh /var/lib/mysql/*relay*

# 2) 看 SQL 线程在做什么:是否被大事务或长查询卡住
mysql -e "SHOW REPLICA STATUS\G" | grep -E 'Relay_Log_File|Relay_Log_Space|Seconds_Behind|SQL_Delay'
mysql -e "SELECT id, time, state, LEFT(info,80) FROM information_schema.PROCESSLIST WHERE command <> 'Sleep';"

# 3) relay 盘与数据盘分开部署时,重点看 relay 盘 inode 与容量

关键字段读法

字段含义异常判断
Relay_Log_File当前正在重放的 relay 文件长期停留在同一文件说明重放停滞
Relay_Log_Pos当前重放位置位置不前进即 SQL 线程无进度
Relay_Log_Spacerelay 目录总占用持续上涨代表拉取速度大于重放速度
Seconds_Behind_Source落后主库的秒数大事务与空闲场景下会失真,需结合位点差
SQL_Delay人为延迟复制设置非零时延迟是「设计值」而非故障
建议把 relay log 与数据目录分盘存放:主库写入高峰时 IO 争抢会同时拖慢重放与业务查询,分盘后互不影响;同时监控要覆盖 relay 目录所在分区的容量。
不要用 rm 手工删除 relay log 文件:索引文件与实际文件不一致会让复制直接崩溃,需要重建复制关系才能恢复。空间不足时应先解决重放卡点,再评估用 RESET REPLICA 类命令清理。

易错点

  • 手工 rm relay 文件:复制线程报错停摆,只能重建复制,恢复时间远超预期
  • relay 目录未纳入监控:分区写满后复制停止,直到业务发现从库数据陈旧才察觉
  • 把 Relay_Log_Space 暴涨当磁盘问题扩容:真实原因是重放卡住,扩容只是延后爆点
  • 从库上跑超大事务或长查询:重放被阻塞,relay 文件全量堆积
  • 重建复制时沿用旧 relay 位点:RESET REPLICA ALL 之后未重新配置,复制起不来或从错误位点开始

数据来源与参考

  • MySQL 8.0 Reference Manual: Replication Relay Logs

相关工具

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