我的服务器的MySQL慢查询日志日益增长(现在37 MB),所以我想旋转它。如果我将当前日志文件移动到另一个文件夹,MySQL会自动创建另一个日志文件吗?想想它就像我正在删除当前的日志文件一样,当另一个慢速查询到来时,MySQL会自动创建一个新文件吗?
由于
答案 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
当然,如果您的慢查询日志每天都记录了如此多的内容,那么您(或其他人)应该调查并修复错误的查询:)