过滤或记录特定表的MySQL日志

时间:2017-11-22 17:43:15

标签: mysql mysql-slow-query-log

在MySQL中,从文件/var/log/mysql/mysql.log获取日志,我们可以通过使用tail命令拖尾此文件来监控实时查询。

问题是所有查询都在这里记录,有没有办法在触发特定表的查询时从尾部进行日志记录或过滤

提前致谢

1 个答案:

答案 0 :(得分:1)

我使用pt-query-digest

根据表名创建过滤器很棘手,并且取决于一些未记录的功能。

pt-query-digest --filter '$qr->distill($event->{arg}) =~ /\bMyTable\b/' \
 /var/log/mysql/mysql-slow.log

注意我解析慢查询日志,而不是一般查询日志。我更喜欢使用慢查询日志,因为它中包含更多信息。

在生产服务器上运行此操作时也要小心。我发现脚本占用了大量资源,如果您的日志太大,它可能会干扰您的服务器负载。我建议您将日志记录到其他主机,其中高负载不会干扰您的生产应用。