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

MySQL 二進制日誌管理實戰:查看、清理、主從安全刪除與自動過期

     編輯:MySQL 資料庫相關知識

MySQL 二進制日誌管理實戰:查看、清理、主從安全刪除與自動過期

二進制日誌記錄所有資料變更,是主從複寫、時間點恢復 (PITR) 的核心。但若不加管理,會佔滿磁碟導致資料庫掛掉。本文完整說明查看、手動/自動清理、主從環境安全刪除流程。

一、查看 Binlog 列表與大小

-- 登入 MySQL
mysql -u root -p

-- 兩種等價指令
SHOW MASTER LOGS;
SHOW BINARY LOGS;

-- 輸出範例
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000010 | 63355376  |
+------------------+-----------+

二、單機環境清理 (無主從)

-- 清空所有 binlog,重新從 000001 開始編號
RESET MASTER;
⚠️ 嚴禁在有從庫的主庫執行,會導致從庫複寫中斷、需重新搭建。

三、主從環境安全刪除標準流程 (核心重點)

  1. 在每個從庫確認正在讀取的 binlog:
    SHOW SLAVE STATUS\G
    -- 關鍵欄位:Master_Log_File, Read_Master_Log_Pos
  2. 在主庫列出所有 binlog:
    SHOW MASTER LOGS;
  3. 判定「最舊仍被使用的 binlog」:所有從庫中 Master_Log_File 最小者即為目標檔案(不可刪)。
  4. 刪除目標檔案**之前**的所有 binlog** (保留目標檔案)**。

刪除指令兩種語法

-- 1. 指定檔案名稱:刪除 'mysql-bin.000080' 之前的所有
PURGE MASTER LOGS TO 'mysql-bin.000080';
PURGE BINARY LOGS TO 'mysql-bin.000080';  -- 同義

-- 2. 指定時間點:刪除 2023-01-01 00:00:00 之前的所有
PURGE MASTER LOGS BEFORE '2023-01-01 00:00:00';
PURGE BINARY LOGS BEFORE '2023-01-01 00:00:00';

四、自動過期設定 (推薦生產環境啟用)

編輯 /etc/my.cnf (或 /etc/mysql/my.cnf) [mysqld] 區段:

[mysqld]
# 保留 7 天 (單位:天),超期自動刪除
expire_logs_days = 7

# MySQL 8.0 新參數:以秒為單位,優先級高於 expire_logs_days
binlog_expire_logs_seconds = 604800  -- 7*24*3600

修改後重啟:systemctl restart mysqld 或 SET GLOBAL expire_logs_days = 7; (動態生效,但重啟失效,需寫入配置檔)。

五、完全停用 Binlog (單機、不需複寫/恢復)

[mysqld]
# 註解掉以下兩行
# log-bin=mysql-bin
# binlog_format=mixed
# 或顯式關閉
skip-log-bin
⚠️ 停用後無法搭建從庫、無法 PITR 恢復。僅建立純開發/測試實例時使用。

六、備份先行原則

執行 PURGE 或 RESET MASTER 前,**務必先備份即將刪除的 binlog 檔案** (複製至異地儲存)。一旦誤刪導致從庫斷點丟失,需重新全量同步,極其耗時。

七、常見問題排查

Q: PURGE 執行卡住/報錯?
A: 可能有長時間執行的交易持有舊 binlog、或從庫正在讀取。確認無活躍複寫執行緒讀取目標檔案再操作。
Q: expire_logs_days 設定了但沒自動刪?
A: 只在 FLUSH LOGS、ROTATE 事件、啟動時檢查。可手動 FLUSH BINARY LOGS 觸發。
Q: 磁碟已滿無法啟動 MySQL 刪 binlog?
A: 先移動舊 binlog 至其他掛載點騰出空間,啟動後再 PURGE。或臨時掛載新磁碟到 datadir。

Binlog 管理鐵律:主從環境「先問從庫、再刪主庫」、自動過期務必開啟、操作前必備份。這三條守住,磁碟不會爆、從庫不會斷。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved