數據目錄下出現大量 mysql-bin.000001、mysql-bin.000002... 文件,單文件 200MB+,總大小遠超數據本身(50MB)。
mysql -u root -p
mysql> RESET MASTER;
Query OK, 0 rows affected, 1 warning (0.20 sec)
效果:刪除所有 binlog 文件,重置索引,新建 mysql-bin.000001。警告:會導致所有從庫同步中斷,需重新搭建主從!
vi /etc/my.cnf # 或 my.ini (Windows)
# 註釋掉
# log-bin=mysql-bin
# 重啟生效
service mysqld restart
| 場景 | 策略 | 關鍵配置 |
|---|---|---|
| 主庫(需 PITR/主從) | 保留 binlog,定期清理 | expire_logs_days = 7 (5.7+)binlog_expire_logs_seconds = 604800 (8.0+)max_binlog_size = 100M 控制單文件大小 |
| 從庫(不做備份源) | 可關閉或短期保留 | log_slave_updates=OFF (默認)expire_logs_days = 1-2 |
| 純讀取/分析實例 | 關閉 binlog | skip-log-bin (8.0+) 或註釋 log-bin |
# 1. 確認從庫同步位點
mysql> SHOW SLAVE STATUS\G # 記錄 Master_Log_File / Read_Master_Log_Pos
# 2. 刷新日志生成新文件
mysql> FLUSH LOGS;
# 3. 清理舊文件(保留從庫未處理的)
mysql> PURGE BINARY LOGS TO 'mysql-bin.000010';
# 或按時間
mysql> PURGE BINARY LOGS BEFORE '2023-10-01 00:00:00';
# 查看指定文件
mysqlbinlog /var/lib/mysql/mysql-bin.000001
# 指定數據庫/時間範圍
mysqlbinlog --database=db_name --start-datetime="2023-10-01 00:00:00" --stop-datetime="2023-10-01 12:00:00" mysql-bin.000001
RESET MASTER 破壞複製鏈路。net stop mysql 或殺掉 mysqld-nt.exe 進程。