Kat*_*kas 4 mysql performance configuration slow-log
有没有办法让 MySQL 慢日志每天启动新的日志文件?目前它只是一个大文件,并且每天都必须grep行。为每一天的慢日志设置单独的文件会方便得多。
我是否必须配置 my.cnf 或某些 linux 功能?
更新
正如 Aaron 指出的那样,复制和截断可能会错过一些条目。所以更安全的方法是移动和FLUSH
。
原来的
这篇文章有我使用的轮转慢查询日志的基本原理。基本上你需要将慢日志复制到一个新文件,然后截断slow.log的内容:
cp log/slow.log log/slow.log.`date +%M`; > log/slow.log
Run Code Online (Sandbox Code Playgroud)
如果你只是将慢日志移动到一个新文件并创建一个新的 'slow.log',它不会工作,因为移动的文件仍然具有相同的 inode,而 mysql 仍然打开它。我想移动文件然后发出FLUSH SLOW LOGS
命令会起作用,因为这会关闭文件并重新打开,但我发现复制和截断同样有效并且不需要登录到 mysql。
他的文章提到在 Linux 中使用 logrotate,但我只是做了一个 cronjob,每天在午夜运行一次来为我做这件事。
此外,为了解决复制问题FLUSH LOGS
:
FLUSH LOGS、FLUSH MASTER、FLUSH SLAVE 和 FLUSH TABLES WITH READ LOCK(带或不带表列表)在任何情况下都不会写入二进制日志,因为如果复制到从属设备会导致问题。[源代码]
所以不会,因为这些语句没有写入二进制日志,所以不会干扰复制。出于您的目的,我会指定FLUSH SLOW LOGS
仅关闭/打开慢查询日志。
归档时间: |
|
查看次数: |
6384 次 |
最近记录: |