2020年5月18日月曜日

pt-query-digestでtcpdumpから集約せずに全てのクエリーを取り出す

TL;DR


書き出しが全てなのでそれは置いておいてハマったこと。

  • pt-query-digest --type=tcpdump の2020年問題

  • --output のバリエーションは --help では調べられない

    • man pt-query-digest か、 ドキュメント を見る
    • 俺はパッチ当てようとソースコード泳いでたら気が付いた…
  • サンプル取るのに sysbench を8.0クライアントライブラリにリンクしてコンパイルしたけど、TCP経由の通信はデフォルトでSSL/TLSを使ってた

    • Connector/Cのデフォルトをそのまま使ってた

127.0.0.1:64080 と3306以外のポートを使っているので pt-query-digest --watch-server で指定する必要がある。

$ ./src/sysbench --mysql-ssl=DISABLED --mysql-user=sbtest --mysql-host=127.0.0.1 --mysql-port=64080 oltp_point_select --table_size=100 run

$ sudo tcpdump -s 65535 -x -nn -q -tttt -i any port 64080 | pt-query-digest --type=tcpdump --watch-server=127.0.0.1:64080 --no-report --output=slowlog
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
Reading from STDIN ...
TCP session 127.0.0.1:54906 had errors, will save them in /tmp/pt-query-digest-errors.fAJEZ24
# Time: 200518 19:21:39.084382
# Client: 127.0.0.1:54906
# Thread_id: 4294967296
# Query_time: 0.000168  Lock_time: 0.000000  Rows_sent: 0  Rows_examined: 0
PREPARE SELECT c FROM sbtest1 WHERE id=?;
# Time: 200518 19:21:39.084792
# Client: 127.0.0.1:54906
# Thread_id: 4294967296
# Query_time: 0.000246  Lock_time: 0.000000  Rows_sent: 0  Rows_examined: 0
EXECUTE SELECT c FROM sbtest1 WHERE id=42;
# Time: 200518 19:21:39.084989
# Client: 127.0.0.1:54906
# Thread_id: 4294967296
# Query_time: 0.000121  Lock_time: 0.000000  Rows_sent: 0  Rows_examined: 0
EXECUTE SELECT c FROM sbtest1 WHERE id=46;

うむ。

0 件のコメント :

コメントを投稿