繁体   English   中英

旋转mysql慢查询日志

[英]rotating mysql slow query log

我的服务器的MySQL慢查询日志每天都在增长(现在为37 MB),因此我想对其进行轮换。 如果我将当前的日志文件移动到另一个文件夹,那么MySQL会自动创建另一个日志文件吗? 认为它就像我要删除当前的日志文件一样,那么当另一个慢查询出现时,MySQL会自动创建一个新的日志文件吗?

谢谢

您根本无法使用logrotate来做到这一点,您必须首先更改my.cnf中的文件名,然后再执行任何操作。重新加载mysql。

如果要使用logrotate方式,则必须在该时间禁用慢查询日志。

percona团队建议使用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 long_query_time=@lqt_save;'
    endscript
    rotate 150
}

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

就个人而言,我发现使用Webmin GUI进行配置很容易

您可以设置每日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

当然,如果您的慢查询日志每天都有如此多的内容记录,则您(或其他人)应该调查并解决错误的查询:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM