二進制日志記錄所有數據變更,是復制、恢復的核心。本文整理日志啟用檢查、當前日志查看、內容解析、手動/自動清理策略,特別針對主從環境給出安全刪除流程。
SHOW VARIABLES LIKE 'log_bin'; 返回 ON 表示啟用,文件位於 datadir。SHOW MASTER STATUS; 顯示正在寫入的文件名與 Position。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 正在使用或尚未拉取的日志。
SHOW MASTER STATUS; 記錄當前文件(如 mysql-bin.000097)。SHOW SLAVE STATUS\G 記錄 Relay_Master_Log_File(如 mysql-bin.000103)。000095 之前:PURGE MASTER LOGS TO 'mysql-bin.000095';# 完整操作示例 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';