mysql的binlog日誌手動刪除和自動清理

2021-08-03 13:07:50 字數 1911 閱讀 6918

mysql中的binlog開啟對於工作維護來說是必要的,但是binlog檔案相對較大,如果不管不問的任由binlog自由輸出的話,總有一點會把磁碟佔滿。當磁碟空間不足時,導致資料庫卡死狀態,斷鏈狀態。此時資料庫只可以查詢操作,不可以update/delete的操作。(至於為什麼個人理解的時候服務訪問的是資料庫快取的資料)

【解決辦法】

1、當務之急,先手動清理舊的binlog日誌,保留足夠的空間可用。三種清理方式,如下:

1)purge master logs to 'mysql-bin.010';                        

//指定清理某檔案前所有的檔案

2) purge master logs before '2008-06-22 13:00:00';        

//清理2008-06-22 13:00:00前binlog日誌

3) purge master logs before date_sub( now( ), interval 3 day);    

//清理3天前binlog日誌before,變數的date自變數可以為'yyyy-mm-dd hh:mm:ss'格式。這裡的清理是指從此刻-3*24*3600s前的檔案,是此檔案最後更新的時間。

注意:不要強制使用rm命令進行清除。否則,mysq-bin.index錯亂,最終導致後期expire-log-days配置項失效。

2、增加自動清理binlog的方式,保證binlog占用空間不在肆意擴張。配置清理的方式,有兩種:
1) 不重啟mysql即可生效的方式:
a) mysql -u使用者名稱 -p密碼
b) 

mysql> set global expire_logs_days = 5;

//設定有效期,清理5天前的binlog的配置

mysql> flush logs;            //刷一下log使上面的設定生效,否則不生效。

這裡是清理的當前時間的5天前的檔案,此時重新整理了flush logs,binlog檔案也切換新的檔案了。

注意:此配置重啟mysql後失效。

2)  重啟mysql有效的方式:

在my.cnf配置檔案中的[mysqld]中增加

expire_logs_days = 10,配錯位置不生效。

ps:
1)

my.cnf配置檔案中三項分別代表什麼,如下:

[client]代表客戶端預設設定內容[mysql]代表我們使用mysql命令登入mysql資料庫時的預設設定[mysqld]代表資料庫自身的預設設定

2)對於清理這個動作是flush logs這個命令起作用的,而flush logs又如何觸發呢?主要有三種情況:
a)重啟mysql,切換新的binlog檔案;
b)binlog檔案到引數max_binlog_size限制;
c)手工執行命令。

MySQL開啟binlog日誌

mysql開啟binlog日誌很簡單,只需要找到配置檔案,在配置檔案中的 mysqld 配置段新增下面一句話就可以了 log bin mysql bin 這樣就開啟了mysql的binlog日誌。使用下面的sql語句在mysql的客戶端可以檢視binlog日誌是否開啟 show master log...

mysql 匯出binlog日誌

首先你得開啟了mysql的bin log.找到你的mysqlbinlog。執行 find name mysqlbinlog 檢視mysql server上的二進位制日誌 mysql showbinarylogs 將binlog檔案匯出為sql檔案 usr local src mysql 5.7.10...

Mysql開啟binlog日誌

binlog介紹 binlog是二進位制檔案 binlog記錄了資料庫的所有dml操作 通過binlog日誌可以進行資料恢復操作 binlog配置 mysql資料庫檢視binlog日誌是否開啟 show variables like log bin mysql show variables like...