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

MySQL从库同步时空间不足怎么办_清理过期中继日志的方法

老萱君_6106

老萱君_6106

发布时间:2026-04-30 06:37:26

|

339人浏览过

|

来源于php中文网

原创

中继日志占满磁盘时应使用PURGE RELAY LOGS TO 'relay-log.000042'安全清理已执行完的日志,严禁手动rm;需先确认Relay_Log_File、GTID模式及relay_log_purge=ON,并避免与START/STOP SLAVE并发操作。

mysql从库同步时空间不足怎么办_清理过期中继日志的方法

中继日志(relay log)占满磁盘怎么办

MySQL从库同步卡住、SHOW SLAVE STATUS 显示 Seconds_Behind_Master 持续增长,同时磁盘使用率飙高——大概率是中继日志没清理,堆积在 relay_log_basename 指定路径下。默认情况下,MySQL 不会自动删除已执行完的中继日志,尤其当主库写入频繁、从库延迟大时,relay-log.0000xx 文件能轻松吃掉几十GB空间。

关键不是“能不能删”,而是“删哪些才安全”:必须确保对应日志里的所有事件都已在从库执行完毕,且没有被用于其他用途(比如 GTID 复制中的 relay_log_info_repository = TABLE 依赖部分元数据)。

  • 先确认当前正在使用的中继日志:SHOW SLAVE STATUS\G 查看 Relay_Log_File 字段值(如 relay-log.000042),所有序号 小于该文件编号 的 relay-log.xxxxxx 都可清理
  • 检查是否启用了 GTID:SELECT @@gtid_mode;,若为 ON,还需确认 Executed_Gtid_Set 已覆盖待删日志范围(通常只要 Relay_Log_File 正确,GTID 模式下也安全)
  • 不要手动 rm relay-log.*,应使用 PURGE RELAY LOGS 命令,它会自动更新 relay-log.index 并通知 MySQL 刷新内部状态

PURGE RELAY LOGS 的正确用法和时机

PURGE RELAY LOGS 是唯一安全的清理方式,它不只是删文件,还会同步修改 relay-log.index 和内存中的日志链表。直接删文件会导致下次启动或 CHANGE MASTER TO 时报错 Failed to open the relay log。

MySQL
MySQL

编写正确的MySQL查询,避免字符集、索引和锁方面的常见陷阱。

下载
  • 立即清理所有已执行完的中继日志:PURGE RELAY LOGS BEFORE '2024-05-20 00:00:00';(时间戳需早于 Relay_Log_File 对应的生成时间)
  • 更稳妥的做法是按文件名清理:PURGE RELAY LOGS TO 'relay-log.000042';(注意:指定的是「保留到该文件为止」,即 TO 后面的文件名本身不会被删,但之前所有都会删)
  • 如果从库启用了 relay_log_purge = OFF(罕见),命令无效,需先 SET GLOBAL relay_log_purge = ON; 再执行
  • 建议在维护窗口执行,避免与 START SLAVE 或 STOP SLAVE 并发操作,否则可能触发 ERROR 1981 (HY000): Cannot purge when relay log is active

怎么防止中继日志再次爆满

临时清理只是止痛,真正要解决的是“为什么积压”。常见原因不是磁盘小,而是从库跟不上、或配置没设限。

  • 启用自动清理:确保 relay_log_purge = ON(默认就是 ON,但某些定制镜像或旧版本可能关了)
  • 限制单个中继日志大小:通过 max_relay_log_size 控制(如设为 512M),避免单个文件过大难清理;注意它不能小于 max_binlog_size,否则会被忽略
  • 监控延迟:用 Seconds_Behind_Master + Read_Master_Log_Pos 与 Exec_Master_Log_Pos 差值判断积压趋势,而不是等磁盘报警才处理
  • 避免在从库上执行大事务或锁表操作,这类操作会阻塞 SQL 线程,导致中继日志持续累积却无法消费

误删中继日志后还能恢复吗

不能。中继日志是二进制日志的本地副本,删了就没了,MySQL 不会从主库重拉已过期的 binlog(除非开启 MASTER_AUTO_POSITION = 1 且主库还保留对应 GTID 范围)。一旦出现 Could not find first log file name in binary log index file 或 Relay log read failure,基本意味着同步断裂。

此时只能重建从库,或从主库导出最新位点并重新 CHANGE MASTER TO。所以 PURGE 前务必核对 Relay_Log_File 和 Relay_Log_Pos,别凭文件名排序瞎猜——ls -t relay-log.* 看的只是创建时间,而 MySQL 实际执行顺序以 relay-log.index 为准。

热门AI工具

更多
讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

WorkBuddy

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

DeepSeek

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

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

豆包大模型

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

创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

切问学术

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

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

2373

2023.06.20

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

1439

2023.06.21

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

855

2023.07.18

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

3352

2023.07.19

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

5728

2023.07.25

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

1239

2023.08.08

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

5991

2023.08.11

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

5202

2023.08.14

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

20

2026.10.28

热门下载

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

精品课程

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

共1课时 | 192人学习

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

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