我想处理我的MySQL慢查询日志,并检索最近24小时的条目,目前不支持日志轮换。
下面是一个示例日志条目
# Query_time: 0.000431 Lock_time: 0.000124 Rows_sent: 8 Rows_examined: 25
SET timestamp=1415792064;
SELECT `username`, `password`, `date_created` From joomla_users
ORDER BY `kid` DESC;
# User@Host: joomla[joomla] @ [192.168.168.100]我想使用awk或grep或类似的解决方案,可以通过命令行或脚本的一部分来识别在过去24小时内放置在mysql慢查询日志文件中的条目,方法是比较每个条目的"SET TIMESTAMP“行,并将这些条目放入单独的日志文件中。
发布于 2014-11-14 08:31:14
我强烈建议使用Percona Toolkit的查询摘要工具进行此类分析。它的安装很简单,基本上就是你想要分析慢查询所做的事情(根据查询足迹,而不是查询中的单个参数来分析它们,排除基于REGEX表达式的特定类型的查询,等等)
看看Percona工具包(http://www.percona.com/doc/percona-toolkit/2.1/pt-query-digest.html)。如果您决定使用它,下面的代码应该很容易适应
pt-query-digest --since '2014-11-01' --filter '$event->{arg} =~ m/^select/i' /var/log/mysql/mysql-slow-query.log > /tmp/pt_slow_nov这就是说,从2014-11-01开始分析查询,只查看select查询,从/var/ log /mysql/log query.log读取慢查询日志(显然,您需要引用您的文件位置),并将分析输出到/tmp/pt_log_nov。如果您熟悉grep和awk,那么将该查询的-- to部分参数化并将其放入cron中应该是非常简单的。
https://stackoverflow.com/questions/26920378
复制相似问题