1. 程式人生 > >Mysql清理二進位制日誌的技巧

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-bin.000001之前編號的所有日誌

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)

,此引數的含義是設定日誌的過期天數,過來指定的天數後日志將會被自動刪除,這樣將有利於減少DBA管理日誌的工作量。

#vi /etc/my.cnf

[mysqld]

--expire_logs_days=3

這樣,3天前的日誌都會被刪除,系統自動刪除