我的服务器的MySQL慢查询日志每天都在增长(现在是37MB),所以我想轮换一下。如果我将当前日志文件移动到另一个文件夹,那么MySQL是否会自动创建另一个日志文件?假设我正在删除当前的日志文件,那么当另一个较慢的查询到来时,MySQL会自动创建一个新的日志文件吗?
谢谢
发布于 2011-01-05 15:17:20
您可以使用logrotate脚本定期轮换MySQL日志,并可能保留有限数量的以前日志(以节省空间)。您可以使用您喜欢的任何计划来配置它。
就我个人而言,我发现使用Webmin图形用户界面进行配置很容易
发布于 2014-09-16 01:19:29
你不能简单地使用logrotate来做到这一点,你必须首先在my.cnf中更改文件名,然后执行任何想要的do.reload。
如果您想要logrotate方式,您将不得不禁用该时间的慢查询日志。
logrotate这件事是由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
}发布于 2011-01-05 15:32:06
您可以设置一个每日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当然,如果您的慢查询日志每天都有如此多的内容被记录,那么您(或其他人)应该调查并修复这些糟糕的查询:)
https://stackoverflow.com/questions/4601658
复制相似问题