mysql binlog日誌刪除

2021-10-24 05:51:41 字數 1218 閱讀 9892

今天發現磁碟被佔滿,檢查後是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

mysql binlog日誌刪除

隨著mysql的執行,其binlog日誌會越來越多,占用的磁碟會越來越大。我們需要定期清理這些過期的binlog日誌。處理方法主要有兩種 1 自動刪除 2 手動刪除 1 自動刪除 a,修改my.cnf引數 需要更改其配置檔案my.cnf,新增引數expire logs days 10,單位是天。b,...

mysql binlog日誌刪除清理

刪除mysql的binlog日誌有兩種方法 自動刪除和手動刪除 修改mysql的配置檔案my.cnf,新增binlog過期時間的配置項 expire logs days 30,然後重啟mysql,這個有個致命的缺點就是需要重啟mysql。expire logs days引數只支援整數,且範圍是 0,...

壓縮mysql binlog日誌

伺服器硬碟太貴了 mysql的binlog日誌增長太快了 需要定時壓縮一下 然後清除 清除步驟 建立清除shell vim bzbinlog.sh bin sh tar jcvpf date mysqlbinlogdir mysql bin.000108.tar.bz2 usr local mysq...