2015-12-15 3 views
0

Это работает, но не фильтрации пользователя/базы данныхPT-запрос-дайджест фильтр запросов пользователем и базой данных

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

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/)'