MySQL清理binlog日志的方法

MySQL的binlog日志介紹

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

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

1.自動刪除

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

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

(上面的數(shù)字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;

命令查看binlog文件

show binary logs;

刪除舉例:

RESET MASTER;刪除所有binlog日志,新日志編號從頭開始
PURGE MASTER LOGS TO ‘mysql-bin.010’; ||刪除mysql-bin.010之前所有日志
PURGE MASTER LOGS BEFORE ‘2003-04-02 22:46:26’; ||刪除2003-04-02 22:46:26之前產(chǎn)生的所有日志
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容