一.概述 二進位日誌(binlog)記錄了所有的DDL(數據定義語言)語句和DML(數據操縱語言)語句,但是不包括數據查詢語句, 語句以"事件"的形式保存,它描述了數據的更改過程,此日誌對災難時的數據恢復起著極其重要的作用。 1.1 日誌的位置和格式 在my.cnf中可以查看log-bin的位置,m ...
一.概述
二進位日誌(binlog)記錄了所有的DDL(數據定義語言)語句和DML(數據操縱語言)語句,但是不包括數據查詢語句, 語句以"事件"的形式保存,它描述了數據的更改過程,此日誌對災難時的數據恢復起著極其重要的作用。
1.1 日誌的位置和格式
在my.cnf中可以查看log-bin的位置,mysqld將包含所有更新數據的sql命令寫入日誌文件,位置如下圖所示:
下麵通過環境變數來查看當前binlog位置和狀態
-- 通過環境變數來查看位置 SHOW VARIABLES LIKE '%log_bin%'
下麵查詢所有binlog日誌文件
上圖中mysql-bin.index是日誌的索引文件,記錄了最大的日誌序號。
1.2 日誌的讀取
由於日誌以二進位方式存儲,不能直接讀取,需要用mysqlbinlog工具來查看。在33篇里有講到開啟binlog以及查看內容,這裡不在詳述。
https://www.cnblogs.com/MrHSR/p/9555313.html
1.3 日誌的刪除
對於繁忙的事務處理系統,每天會生成大量日誌內容,日誌如果長時間不清除,將會對磁碟空間帶來很大的浪費,因此定期刪除日誌是DBA維護mysql資料庫的一個重要工作內容,下麵介紹幾種方法。
(1) 執行sql 的reset master; 命令,該命令將刪除所有binlog日誌,新日誌編號從000001開始。請謹慎使用此語句,以確保不會丟失二進位日誌文件數據。特別是在主從庫上,導致日誌不同步報錯。清空所有日誌如下:
(2) 使用purge以日誌編號為條件。例如:執行purge master logs to 'mysql-bin.000006'; 將刪除06編號之前的所有日誌,如下圖所示:
(3) 使用purge 以時間為條件。例如:執行purge master logs before '2018-09-06'; 刪除9月6日之前的所有日誌,如下圖所示:
(4) 使用expire_logs_days
此參數設置在my.cnf中,是用來設置日誌的過期天數,過了指定的天數後日誌將會自動刪除,這樣有利於減少DBA的管理的工作量。如下所示:
註意在my.cnf中參數如果設置錯誤。例如設置成expire_logs_day=1。 在重啟mysql伺服器,進程將啟動失敗,如下圖所示:
在my.cnf中設置,重新啟動mysql服務 如下圖所示:
-- 通過環境變數來查看位置 SHOW VARIABLES LIKE '%expire_logs_days%'
現來查看日誌,重啟服務後日誌只保留了一天,也就是今天9月7日的日誌。如下圖所示: