mysql binlog日志刪除


mysql的binlog日志介紹

Binlog是mysql以二進制形式打印的日志,它默認不加密,不壓縮。binlog二進制日志包含了所有更新了數據或者已經潛在更新了數據(例如,沒有匹配任何行的一個DELETE)的所有語句。語句以“事件”的形式保存,它描述數據更改文件位置和格式:當用--log-bin[=file_name]選項啟動時,mysqld寫入包含所有更新數據的SQL命令的日志文件。如果未給出file_name值, 默認名為-bin后面所跟的主機名。如果給出了文件名,但沒有包含路徑,則文件被寫入數據目錄。

查看binlog 日志文件 

mysql> show binary logs;

刪除mysql的binlog日志有兩種方法:自動刪除和手動刪除

1.自動刪除

永久生效:修改mysql的配置文件my.cnf,添加binlog過期時間的配置項:expire_logs_days=30,然后重啟mysql,這個有個致命的缺點就是需要重啟mysql。

臨時生效:進入mysql,用以下命令設置全局的參數:set global expire_logs_days=30;

(上面的數字30是保留30天的意思。)

2.手動刪除

可以直接刪除binlog文件,但是可以通過mysql提供的工具來刪除更安全,因為purge會更新mysql-bin.index中的條目,而直接刪除的話,mysql-bin.index文件不會更新。mysql-bin.index的作用是加快查找binlog文件的速度。

(1)直接刪除

找到binlog所在目錄,用rm binglog名 直接刪除

例:rm mysql-bin.010

(2)通過mysql提供的工具來刪除

刪除之前可以先看一下purge的用法:help purge;

刪除舉例:

RESET MASTER; -- 刪除所有binlog日志,新日志編號從頭開始

PURGE MASTER LOGS TO 'mysql-bin.010';  --  刪除 mysql-bin.010 之前的所有日志

PURGE MASTER LOGS BEFORE '2020-04-14 22:46:26'; --  刪除2020-04-14 22:46:26之前產生的所有日志

PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY); -- 清除3天前的 binlog


免責聲明!

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



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