旋转mysql慢查询日志

时间:2011-01-05 07:14:55

标签: mysql performance

我的服务器的MySQL慢查询日志日益增长(现在37 MB),所以我想旋转它。如果我将当前日志文件移动到另一个文件夹,MySQL会自动创建另一个日志文件吗?想想它就像我正在删除当前的日志文件一样,当另一个慢速查询到来时,MySQL会自动创建一个新文件吗?

由于

3 个答案:

答案 0 :(得分:2)

你只是不能使用logrotate来做到这一点,你必须先在my.cnf中更改文件名,然后再做想做的事情。重新加载mysql。

如果您想要logrotate方式,则必须禁用该时间的慢速查询日志。

logroate事情是由percona团队建议的并且适合我。

/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 long_query_time=@lqt_save;'
    endscript
    rotate 150
}

答案 1 :(得分:1)

您可以使用logrotate脚本定期轮换MySQL日志,并可能保留有限数量的先前日志(以节省空间)。您可以使用您喜欢的任何计划进行配置。

就个人而言,我发现使用Webmin GUI

进行配置很容易

答案 2 :(得分:-2)

你可以设置一个日常的cron,它将ziping并清空日志文件:

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

当然,如果您的慢查询日志每天都记录了如此多的内容,那么您(或其他人)应该调查并修复错误的查询:)