2011-01-05 95 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 
}