現象:網站訪問越來越慢,最後無法訪問了,經過檢查發現磁盤滿了。仔細查詢下來確認是由於mysql的binlog太多太大占用了空間。
分析過程及解決方案:通常出現這種問題都應該登錄服務器檢查磁盤、內存和進程使用的情況,通過top、df –h和free –m來檢查,發現磁盤空間滿了。再進一步通過du –sh對可以的目錄進行檢查,發現是mysql的binlog占用空間過大。清理binlog的方法如下:
1) 設置日志保留時長expire_logs_days自動刪除
查看當前日志保存天數:
show variables like '%expire_logs_days%';
這個默認是0,也就是logs不過期,可通過設置全局的參數,使他臨時生效:
set global expire_logs_days=7;
設置了只保留7天BINLOG, 下次重啟mysql這個參數默認會失敗,所以需在my.cnf中設置
expire_logs_days = 7
2) 手動刪除BINLOG (purge binary logs)
用於刪除列於在指定的日志或日期之前的日志索引中的所有二進制日志。這些日志也會從記錄在日志索引文件
PURGE {MASTER | BINARY} LOGS TO 'log_name'
PURGE {MASTER | BINARY} LOGS BEFORE 'date'
例如:
PURGE MASTER LOGS TO 'mysql-bin.010';
PURGE MASTER LOGS BEFORE '2008-06-22 13:00:00';
PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY);