在 MySQL 中,mysql-bin 是二进制日志(Binary Log)文件,用于记录数据库的所有更改操作(如 DDL、DML 操作)。当这类文件积累过多时,可能会占用大量磁盘空间。以下是清理这些文件的步骤和注意事项:
1. 确认是否需要保留二进制日志
- 场景 1:如果 未启用主从复制 且 不需要通过二进制日志进行数据恢复,可以直接清理旧文件。
- 场景 2:如果 有主从复制或定期备份需求,需确保清理操作不会影响主从同步或备份恢复。
2. 查看当前二进制日志
登录 MySQL 并执行以下命令查看所有二进制日志文件:
SHOW BINARY LOGS;
| Log_name | File_size |
|-------------------|-----------|
| mysql-bin.000964 | 10738456 |
| mysql-bin.000965 | 20487654 |
| mysql-bin.000966 | 15678901 |
3. 清理方法
方法 1:删除特定时间之前的日志(推荐)
通过 PURGE BINARY LOGS 命令删除指定时间之前的所有日志:
PURGE BINARY LOGS BEFORE '2024-10-01 00:00:00';
- 替换
2024-10-01 为实际日期,确保此时间点之后的日志未被从服务器(slave)完全复制。- 如果启用了主从复制,需确保从服务器的
Relay Log 已同步到主服务器的最新日志。
方法 2:删除指定文件之前的日志
删除某个日志文件(如 mysql-bin.000964)之前的所有日志:
PURGE BINARY LOGS TO 'mysql-bin.000964';
- 此命令会删除
mysql-bin.000964 之前的日志,但保留该文件及之后的日志。
4. 配置自动过期策略
在 my.cnf(或 my.ini)中设置二进制日志的自动清理策略:
[mysqld]
# 保留 7 天的日志(单位:天)
expire_logs_days = 7