MySQL 清理binlog
2026/6/8 14:16:52 网站建设 项目流程

在 MySQL 中,二进制日志(Binary Log,简称 binlog) 用于记录所有对数据库的更改操作(如 INSERT​、UPDATE​、DELETE​ 等),主要用于主从复制和数据恢复。但 binlog 文件会持续增长,若不清理,可能占满磁盘空间。


**✅ 一、安全清理 binlog 的方法**

**方法 1:使用 **PURGE BINARY LOGS​**(推荐)**

**1.1 按时间清理(保留最近 N 天)**
-- 删除 3 天前的所有 binlog(不包括正在使用的) PURGE BINARY LOGS BEFORE NOW() - INTERVAL 3 DAY;

⚠️ 注意:NOW()​ 是当前服务器时间,确保时区正确。

**1.2 按文件名清理**
-- 删除 mysql-bin.000010 之前的所有 binlog(不包括该文件) PURGE BINARY LOGS TO 'mysql-bin.000010';

🔍 先用 SHOW BINARY LOGS;​ 查看当前有哪些 binlog 文件。


**方法 2:设置自动过期(推荐长期使用)**

在 MySQL 配置文件(如 /etc/my.cnf​ 或 my.ini​)中添加:

[mysqld] # 自动删除 7 天前的 binlog binlog_expire_logs_seconds = 604800 # 单位:秒(7天 = 7*24*3600)

📌 ​注意​:

  • MySQL 8.0+ 使用 binlog_expire_logs_seconds​(单位秒)。

  • MySQL 5.7 及更早版本使用 expire_logs_days​(单位天):
    ini编辑

    expire_logs_days = 7

修改配置后需重启 MySQL 或动态设置(MySQL 8.0+ 支持动态生效):

-- MySQL 8.0+ SET GLOBAL binlog_expire_logs_seconds = 604800; -- MySQL 5.7 SET GLOBAL expire_logs_days = 7;

**✅ 二、查看 binlog 状态**

-- 查看所有 binlog 文件及大小 SHOW BINARY LOGS; -- 查看当前正在使用的 binlog SHOW MASTER STATUS; -- 查看 binlog 相关变量 SHOW VARIABLES LIKE 'log_bin%'; SHOW VARIABLES LIKE '%expire%';

**⚠️ 三、重要注意事项**

  1. 不要手动删除 binlog 文件!
    必须通过 SQL 命令(如 PURGE​)或 MySQL 自动清理机制删除。否则 MySQL 会报错或崩溃。

  2. 主从复制环境下要特别小心!
    确保从库已经应用了要删除的 binlog。可先在从库执行:

    SHOW SLAVE STATUS\G

    查看 Relay_Master_Log_File​,确保主库要删除的 binlog 文件名 小于 该值。

  3. 备份后再清理(重要数据场景)
    如果 binlog 用于 PITR(时间点恢复),请先备份再清理。

  4. 磁盘已满的紧急处理
    如果磁盘已满,可临时关闭 binlog(不推荐生产环境):

    SET sql_log_bin = OFF; -- 仅对当前会话有效

    或直接 purge 到当前正在使用的文件(危险!):

    PURGE BINARY LOGS TO '当前正在使用的文件名'; -- 如 mysql-bin.000015

**✅ 四、最佳实践建议**

场景建议
有主从复制保留至少 3~7 天,监控从库延迟
无复制,仅用于备份恢复保留 1~3 天,配合全量备份
开发/测试环境可设为 1 天或更短
磁盘空间紧张立即 purge + 设置自动过期

**示例:完整清理流程**

-- 1. 查看当前 binlog SHOW BINARY LOGS; -- 2. 查看主从状态(如有从库) -- 在从库运行:SHOW SLAVE STATUS\G → 记下 Relay_Master_Log_File -- 3. 安全清理(例如保留最近2天) PURGE BINARY LOGS BEFORE NOW() - INTERVAL 2 DAY; -- 4. 设置自动过期(永久生效需改配置文件) SET GLOBAL binlog_expire_logs_seconds = 172800; -- 2天

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询