1. 程式人生 > >MySQL Binlog和Relaylog生成和清理

MySQL Binlog和Relaylog生成和清理

修改索引 修改 刪除 指定 file etc purge 停止 relay_log

=====================================================================================
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 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 , 否則當我們的外部腳本因意外而停止時,還能有一層保障。



MySQL Binlog和Relaylog生成和清理