【问题标题】:How to parse MySQL slow query log for last 24 hours of entries如何解析最近 24 小时条目的 MySQL 慢查询日志
【发布时间】:2014-11-13 23:26:24
【问题描述】:

我想处理我的 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 或可以通过命令行或作为脚本的一部分执行的类似解决方案,通过比较“SET”来识别过去 24 小时内放置在 mysql 慢查询日志文件中的条目每个条目的 TIMESTAMP" 行,并将所述条目放入单独的日志文件中。

【问题讨论】:

    标签: mysql linux awk sed grep


    【解决方案1】:

    我强烈建议使用 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 开始分析查询,只查看选择查询,从 /var/log/mysql/slow-query.log 读取慢查询日志(显然你需要参考你的文件位置)并将分析结果输出到 /tmp/pt_slow_nov。如果您熟悉 grep 和 awk,那么参数化该查询的 --since 部分并将其粘贴在 cron 中应该非常简单。

    【讨论】:

      猜你喜欢
      • 2015-09-19
      • 1970-01-01
      • 1970-01-01
      • 2010-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-18
      • 1970-01-01
      相关资源
      最近更新 更多