2008年3月13日 星期四

[轉] 定期清除mysql bin log

作者: luwentao
2007-05-03
來自:http://xxo.blog.163.com/
轉自:http://www.mske.com/index.php?option=com_content&task=view&id=60&Itemid=28

udb服務器down了,因為var目錄滿了.因為/var/log/mysql目錄占用了40G的空間.

查看/etc/mysql/my.cnf ,發現

expire-logs-days = 20

把expire-logs-days 設成3,然後在mysql命令行執行

PURGE MASTER LOGS TO 'mysql-bin.000930';

即可刪除930之前的binlog



用這個語句可以清除3天前的binlog,

PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY);

所以另外還有個方法定期刪除binlog:

在contab設置:

0 1 * * * `mysql -uroot -e 'PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY);'`

---------------------------------------------------
Ivan 補充
-bin log 檔案的樣子會長的像 name-bin.index ,例如mysql-bin.123。
-這些bin log檔會存在於你mysql的資料庫所在地的資料夾中,且必定存在my.cnf,所以你可以搜尋my.cnf的所在地,會找到mysql的bin log.
-如果你的服務器因為這些bin log塞滿了硬盤使得web service(如apache)停掉的話,在Purge掉bin log檔後,可以重開機或直接重啟web service將會達到相同的效果。
-參考指令: ls -lshR , du -ha, df 可以查看檔案和硬盤的大小和剩餘..
Google