2012-03-13 25 views

Odpowiedz

6

Nie - general query log jest jedyną opcją dla zapytań rejestrowania - i to jest serwer szeroki ... chociaż można zalogować się do stolika, a następnie usunąć wyniki dont wymagają

2

Jest to możliwe przy użyciu Percona Toolkit pt-query-digest .

Jeśli chcesz monitorować wszystkie SELECT s, UPDATE s, a JOIN s dotykania table_one, table_two i table_three na my_database, działa coś takiego na serwerze bazy danych rade:

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 

Monitoruje cały przychodzący ruch bazy danych za pomocą tcpdump i umieszcza go w narzędziu pt-query-digest, które następnie próbuje odfiltrować je do zapytań w tych tabelach. Dane wyjściowe będą wyglądać jak wolny dziennik zapytań MySQL.

Musisz dopasować wyrażenie regularne w --filter argumentu do swoich potrzeb. Tak jak w przypadku większości wyrażeń regularnych, pojawi się wiele skrajnych przypadków. Próbowałem objąć kilka z nich, ale w żadnym razie nie jestem ekspertem, jeśli chodzi o wyrażenia regularne.

Nie jest to idealne rozwiązanie, ale miało to załatwi dla mnie w niektórych sytuacjach, w których za pomocą rejestru ogólnego zapytanie jest zabronione.

Powiązane problemy