Mysql清理二進位制日誌的技巧
1:二進位制日誌
二進位制日誌記錄了所有的DDL(資料定義語言)語句和DML(資料操作語言)語句,但是不記錄包括資料查詢的語句。語句以“事件”的形式儲存,它描述了資料的更改過程,此日誌對於災難時的資料恢復起著極其重要的作用
2:日誌的位置和格式
當用—log-bin[=file_name]選項啟動時,mysqld將包含所有更新資料的SQL命令寫入日誌檔案。如果沒有給出file_name值,預設名為主機名後面跟_bin,如果給出了檔名,但沒有包含路勁,則檔案預設被寫入引數DATADIR(資料目錄)指定的目錄
3:日誌的讀取
由於日誌以二進位制的方式儲存,不能直接讀取,需要用mysqlbinlog
#mysqlbinlog log_file
4:日誌的刪除
對於比較繁忙的OLTP系統,由於每天生產日誌量大,這些日誌如果長時間不清理,將會對磁碟空間帶來很大的浪費,因此,定期刪除日誌是DBA維護Mysql資料庫的一個重要工作內容,下面將介紹幾種刪除日誌的常見方法
(1):
執行“reset master;”命令,該命令將刪除所有二進位制日誌,新日誌的編號從“000001” 開始,命令如下
Mysql>reset master;
(2):
執行“Purge master logs to ‘mysql-bin.*****’” 命令,該命令將刪除“*****” 編號之前的所有日誌,下列中刪除了“
Mysql>purge master logs to ‘mysql-bin.000015;
從結果中發現,編號000015之前的所有日誌都已經刪除
(3):
執行“purge master logs before ‘yyyy-mm-dd hh24:min:ss’”命令,該命令將刪除日期為“yyyy-mm-dd hh24:mi:ss”之前產生的所有日誌,下列中刪除了日期在“2010-05-22 01:00:00”之前的所有日誌
Mysql>purge master logs before ‘2010-05-22 01:00:00’’;
(4):
設定引數—expire_logs_days=#(days)
#vi /etc/my.cnf
[mysqld]
--expire_logs_days=3
這樣,3天前的日誌都會被刪除,系統自動刪除