2012-03-13 53 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參數中的正則表達式以適應您的需求。正如大多數正則表達式的情況一樣,會出現很多邊緣情況。我試圖涵蓋其中的一些,但在正則表達式方面,我絕不是專家。

這不是一個完美的解決方案,但它在我使用通用查詢日誌被禁止的某些情況下完成了這個訣竅。