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

MySQL Binlog 安全清理指南:PURGE 語法、清理流程、從庫保護

     編輯:MySQL 綜合教學

PURGE 語法

PURGE {MASTER | BINARY} LOGS TO 'log_name';
PURGE {MASTER | BINARY} LOGS BEFORE 'date';

MASTER/BINARY 同義;date 格式 'YYYY-MM-DD hh:mm:ss'。

常用範例

-- 刪除 mysql-bin.010 之前
PURGE MASTER LOGS TO 'mysql-bin.010';

-- 刪除 2008-06-22 13:00:00 之前
PURGE MASTER LOGS BEFORE '2008-06-22 13:00:00';

-- 刪除 3 天前
PURGE MASTER LOGS BEFORE DATE_SUB(NOW(), INTERVAL 3 DAY);

標準清理流程(保護從庫)

  1. 各從庫執行 SHOW SLAVE STATUS 確認正在讀取的 Master_Log_File
  2. 主庫執行 SHOW MASTER LOGS 列出所有 binlog
  3. 找出最舊的從庫正在讀取的 binlog → 目標日誌(不可刪)
  4. (建議)備份將刪除的 binlog 檔案
  5. 執行 PURGE MASTER LOGS TO '目標日誌' 保留目標及之後

關鍵風險與防護

  • 若從庫正讀取該日誌 → 語句報錯失敗(安全)
  • 若從庫離線,清理了它需要的日誌 → 重啟後無法複製,需重新同步
  • 從庫在線複製時執行 PURGE 安全,無需停止從庫

自動化建議

-- 事件排程器每日清理 7 天前
CREATE EVENT purge_binlog_daily
ON SCHEDULE EVERY 1 DAY
DO PURGE MASTER LOGS BEFORE DATE_SUB(NOW(), INTERVAL 7 DAY);

前提:event_scheduler = ON,且確保保留天數 > 最大從庫可能延遲時間。

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