用户和数据库进行pt-query-digest过滤查询

时间:2015-12-15 22:20:02

标签: mysql percona

这是有效但不按用户/数据库过滤

pt-query-digest /var/lib/mysql/mysql-slow.log --since="$(date +%Y-%m-%d -d '1 day ago')" --user=phpmyadmin --database=my_table --limit 20

这会返回错误

pt-query-digest /var/lib/mysql/mysql-slow.log --since="$(date +%Y-%m-%d -d '1 day ago')" --limit 20 --filter '$event->{db} eq "my_table" && $event->{user} =~ /phpmyadmin/'

错误

Pipeline process 12 (filter) caused an error: Use of uninitialized value in string eq at (eval 33) line 1, <$fh> line 149273.
Will retry pipeline process 11 (filter) 100 more times.
Pipeline process 12 (filter) caused an error: Use of uninitialized value in string eq at (eval 33) line 1, <$fh> line 149274.
...

1 个答案:

答案 0 :(得分:1)

1 - 您是否正在使用{db}属性按表格过滤(“my_table”)?尝试运行这样的操作来查看输入的可用属性:

pt-query-digest                    \
slow-queries160201.log             \
--filter 'print Dumper $event'  \
--no-report                        \
--sample 1

这将打印一个可用于过滤的Lock_time => '0.000026'等参数列表。您可能无法通过表格进行过滤。

2 - 试试这个:

--filter '(($event->{db} || "") =~ m/mydb/) && ($event->{user} || "") =~ m/myuser/)'