首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 二進制日志操作實戰:查看、清理、過期自動刪除與禁用指南

     編輯:MySQL 綜合教學

Binlog 作用與風險

Binlog 記錄所有修改操作,用於數據恢復、主從同步。若不及時清理,佔滿磁盤導致服務不可用。

查看 Binlog 列表

mysql> SHOW MASTER LOGS;
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000010 | 63328652  |
+------------------+-----------+

mysql> SHOW BINARY LOGS;  -- 同義詞
...

清理策略:主從環境必讀

原則:不可刪除 Slave 正在讀取或尚未讀取的 Binlog。

  1. 各 Slave 執行 SHOW SLAVE STATUS 確認 Master_Log_File / Read_Master_Log_Pos。
  2. Master 執行 SHOW MASTER LOGS 獲取全量列表。
  3. 取所有 Slave 中最舊的 Master_Log_File 作為「目標日志」。
  4. 清理目標日志之前的所有 Binlog,保留目標日志及之後的。
  5. 建議先備份 待刪除文件。

三種安全清理命令

1. PURGE TO 'log_name'

PURGE MASTER LOGS TO 'mysql-bin.000800';  -- 刪除 000800 之前的所有

2. PURGE BEFORE 'date'

PURGE MASTER LOGS BEFORE '2024-01-15 12:00:00';  -- 刪除該時間點前的所有

3. RESET MASTER(僅限單實例/確認同步完成)

RESET MASTER;  -- 清空所有 Binlog,重新從 000001 開始,慎用!

自動過期配置

在 my.cnf [mysqld] 添加:

expire_logs_days = 7  -- 7 天自動清理,單位:天

重啟生效。MySQL 8.0+ 推薦使用 binlog_expire_logs_seconds(秒級精度)。

禁用 Binlog(單實例/非主從)

註釋 my.cnf 兩行並重啟:

# log-bin=mysql-bin
# binlog_format=mixed

總結

  • 主從環境務必按 Slave 進度清理,切勿盲目 RESET MASTER。
  • 配置 expire_logs_days 實現無人值守清理。
  • 定期備份 Binlog 以防誤刪。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved