社内のMySQLマスターのtcpdumpの様子。マスタ切り替えした後に切り替え先でクエリが流れているかをみる。単に3306ポートのパケットを流すだけでもよいが、接続確立に失敗しているがパケットは流れてくるという状況もあるので、SQL文が流れているかまでみるのがよい。
tcpdump -tttt -l -i eth0 -A -n -s 0 dst port 3306 | grep -iE "select|update|delete|insert"
-tttt
は人間に読みやすい形式のタイムスタンプを付与する-l
は line buffered。パケット数の大きい環境で負荷を軽くする-A
はアスキー表示-n
はIPアドレスの逆引きをしない。DNSリゾルバに負荷をかけないため-s 0
は出力をtruncateせずに全部だす-i
はネットワークインタフェースを指定。複数のインタフェースがついていることもあるので、ip a
で確認しておこうdst port 3306
宛先ポート番号が3306
tcpdumpのオプション、わかりきっているようで、そういえば line bufferedしてなかったとか、tの数何個だっけとかちょっとした気付きがある。
追記
Prepared Statementになっていると文字列では引っかからないとのこと。