2012-03-13 51 views

回答

6

否 - general query log是你的日志查询唯一的选择 - 这是服务器宽......虽然你可以登录到一个表,然后删除你不结果需要

2

这是可能的使用Percona的工具包的pt-query-digest

如果你想监控所有SELECT S,UPDATE s和JOIN小号感人table_onetable_twotable_threemy_database,运行这样的数据库服务器上会做的伎俩:

tcpdump -s 65535 -x -nn -q -tttt -i any -c 1000 port 3306 | 
pt-query-digest --type tcpdump \ 
       --run-time 5s \ 
       --iterations 0 \ 
       --filter '$event->{fingerprint} =~ m/\b(from|join|into)\s+(`?my_database`?\.)`?(table_one|table_two|table_three)`?\b/' \ 
       --output slowlog \ 
       --no-report 

这将使用tcpdump监控所有传入的数据库流量,并将其分配到pt-query-digest工具中,该工具然后尝试将其过滤到这些表上的查询。输出将看起来像MySQL的慢查询日志。

您需要调整--filter参数中的正则表达式以适应您的需求。正如大多数正则表达式的情况一样,会出现很多边缘情况。我试图涵盖其中的一些,但在正则表达式方面,我绝不是专家。

这不是一个完美的解决方案,但它在我使用通用查询日志被禁止的某些情况下完成了这个诀窍。