MySQL Binlog和Relaylog生成和清理


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




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM