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

MySQL 二進制日志操作命令大全:查看、清理、自動過期與主從環境下的安全刪除

     編輯:MySQL 綜合教學

MySQL 二進制日志操作命令大全:查看、清理、自動過期與主從環境下的安全刪除

二進制日志記錄所有數據變更,是復制、恢復的核心。本文整理日志啟用檢查、當前日志查看、內容解析、手動/自動清理策略,特別針對主從環境給出安全刪除流程。

基礎檢查與查看

  1. 確認是否啟用:SHOW VARIABLES LIKE 'log_bin'; 返回 ON 表示啟用,文件位於 datadir。
  2. 查看當前日志:SHOW MASTER STATUS; 顯示正在寫入的文件名與 Position。
  3. 解析日志內容:mysqlbinlog mysql-bin.000001 或管道 | tail 查看尾部。

無主從環境下的清理

  • 重置全部:RESET MASTER; 清空所有 Binlog,從頭開始編號。
  • 配置自動過期:my.cnf 設 expire_logs_days = 3(默認 0 不自動刪除),自動清理 3 天前日志。

精確刪除命令

-- 按文件:刪除 mysql-bin.000354 之前(不含)
PURGE BINARY LOGS TO 'mysql-bin.000354';

-- 按時間:刪除 2011-11-10 00:00:00 之前
PURGE BINARY LOGS BEFORE '2011-11-10 00:00:00';

-- 按相對時間:刪除 3 天前
PURGE MASTER LOGS BEFORE DATE_SUB(NOW(), INTERVAL 3 DAY);

-- 長期配置
expire_logs_days = 7
max_binlog_size = 268435456

主從環境下的安全刪除流程

核心原則:不得刪除 Slave 正在使用或尚未拉取的日志。

  1. Master 執行 SHOW MASTER STATUS; 記錄當前文件(如 mysql-bin.000097)。
  2. Slave 執行 SHOW SLAVE STATUS\G 記錄 Relay_Master_Log_File(如 mysql-bin.000103)。
  3. 以 Slave 當前使用的文件 為基準,保留近幾天日志,刪除更早文件。例:刪除 000095 之前:PURGE MASTER LOGS TO 'mysql-bin.000095';
  4. 刪除後驗證文件系統殘留情況。
# 完整操作示例
mysql> SHOW MASTER STATUS;
+------------------+-----------+--------------+------------------+
| File             | Position  | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+-----------+--------------+------------------+
| mysql-bin.000097 | 541677824 | www          | test,mysql       |
+------------------+-----------+--------------+------------------+

mysql> SHOW SLAVE STATUS\G
Relay_Master_Log_File: mysql-bin.000103

mysql> PURGE MASTER LOGS TO 'mysql-bin.000095';
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved