这是有效但不按用户/数据库过滤
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.
...
答案 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/)'