BINLOG文件生成與刪除
binlog文件生成:
在每條二進制日志寫入到日志文件后,會判斷該文件是否超過max_binlog_size,如果超過則生成一個新的binlog
binlog文件刪除:
1>當使用RESET MASTER命令后,會清空全部二進制日志
命令:RESET MASTER;
2>當執行PURGE MASTER LOG TO命令后,會刪除指定binlog以及之前的二進制日志
命令:PURGE MASTER LOGS TO 'binlog file name';
3>當執行PURGE MASTER LOG BEFORE 命令后,會刪除指定時間前的所有二進制
命令:PURGE MASTER LOGS TO 'datetime';
4>當實例啟動或執行flush logs時,按照expire_logs_days設置,如果超過該參數指定天數的二進制會被全部刪除
命令:mysqladmin flush-log
清理binlog文件順序:
先從文件系統中清理文件,再修改索引文件。
RELAY LOG生產與刪除
Relay Log rotate 機制:
Rotate:每從Master fetch一個events后,判斷當前文件是否超過max_relay_log_size 如果超過則自動生成一個新的relay-log-file
Delete: purge-relay-log 在SQL Thread每執行完一個events時判斷,如果該relay-log 已經不再需要則自動刪除
Delete: expire-logs-days 只在 實例啟動時 和 flush logs 時判斷,如果文件訪問時間早於設定值,則purge file (同Binlog file) (updated: expire-logs-days和relaylog的purge沒有關系)
PS: 因此還是建議配置 expire-logs-days , 否則當我們的外部腳本因意外而停止時,還能有一層保障。