程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> mysql的binlog太大太多占用大量磁盤的解決

mysql的binlog太大太多占用大量磁盤的解決

編輯:關於MYSQL數據庫

       現象:網站訪問越來越慢,最後無法訪問了,經過檢查發現磁盤滿了。仔細查詢下來確認是由於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);

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved