2011-01-05 94 views
2

我的服務器的MySQL慢速查詢日誌日益增長(現在37 MB),所以我想旋轉它。如果我將當前日誌文件移動到另一個文件夾,那麼MySQL會自動創建另一個日誌文件?想想看,我正在刪除當前的日誌文件,那麼當另一個緩慢的查詢出現時,MySQL會自動創建一個新的日誌文件嗎?旋轉mysql緩慢查詢日誌

感謝

回答

1

您可以使用logrotate腳本定期旋轉MySQL的日誌,並可能保留以前的日誌(以節省空間)的數量有限。您可以使用您喜歡的任何時間表進行配置。

就個人而言,我發現它易於使用Webmin GUI

+0

我在CentOS上安裝了webmind,但無法打開它。它說webmin服務正在運行,我可以通過https://www.myserver.com:10000/訪問它,但是當我在瀏覽器中打開它時,什麼都不會發生。我嘗試過使用和不使用https。 SSL安裝在服務器上。 – Ali 2011-01-05 07:37:37

+0

然後,您應該首先解決webmin問題,也許在superuser.com上詢問。或者,也許,你應該問**如何設置** logrotate條目;) – 2011-01-05 07:40:19

+0

好吧,我設法運行webmin。我還在日誌旋轉中添加了MySQL,讓我們看看會發生什麼。 – Ali 2011-01-14 07:37:24

-1

您可以設置每天的cron將被資平,清空日誌文件配置:

zip /tmp/$(date +%Y-%m-%d)-slow-query-log.zip /var/lib/mysql/slow-queries.log 
cat /dev/null > /var/lib/mysql/slow-queries.log 

當然,如果你慢查詢日誌有你每天(或其他人)應該調查並修復這些不好的查詢,所以記錄的內容太多:)

+1

這通常是不明智的。請參閱http://www.mysqlperformanceblog.com/2013/04/18/rotating-mysql-slow-logs-safely/和http://dev.mysql.com/doc/refman/5.1/en/log-file- maintenance.html。 – Neek 2013-07-29 03:46:22

1

你簡直不能使用logrotate來做到這一點,你必須首先更改my.cnf中的文件名,做任何想做的事加載mysql。

如果您需要logrotate方式,那麼您必須禁用當時的慢速查詢日誌。

perrota團隊建議使用logrotate,併爲我工作。

/var/mysql/slow_query.log { 
    nocompress 
    create 660 mysql mysql 
    size 1G 
    dateext 
    missingok 
    notifempty 
    sharedscripts 
    postrotate 
     /usr/local/bin/mysql -e 'select @@global.long_query_time into @lqt_save; set global long_query_time=2000; select sleep(2); FLUSH LOGS; select sleep(2); set global [email protected]_save;' 
    endscript 
    rotate 150 
}