首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL binlog 文件暴增清理指南:reset master、關閉 binlog 與生產環境最佳實踐

     編輯:MySQL 資料庫相關知識

現象

數據目錄下出現大量 mysql-bin.000001、mysql-bin.000002... 文件,單文件 200MB+,總大小遠超數據本身(50MB)。

緊急清理:reset master


mysql -u root -p
mysql> RESET MASTER;
Query OK, 0 rows affected, 1 warning (0.20 sec)

效果:刪除所有 binlog 文件,重置索引,新建 mysql-bin.000001。警告:會導致所有從庫同步中斷,需重新搭建主從!

永久關閉(非主庫/無需 PITR/無主從)


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
純讀取/分析實例關閉 binlogskip-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';

binlog 內容查看


# 查看指定文件
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 破壞複製鏈路。
  • Windows 下操作前需 net stop mysql 或殺掉 mysqld-nt.exe 進程。
  • binlog 是增量備份/主從/ PITR 基石,非必要嚴禁盲目關閉/刪除。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved