前言
在没有来阿里云之前,有些信息采集的不是那么全,经常用percona的工具,对于非阿里云的客户,或者您的信息采集的不是那么全的情况下,我相信这个工具会给您带来很大的便利。
MySQL信息采集
对于DBA来说除了qps,tps,系统状态的监控之外,SQL的采集这是非常重要的一块,如果要想采集SQL的话,一般有几种途径:
开general_log
这个开销非常大,每条SQL都会记入general_log
抓TCP包
抓包方式常用的就是tcpdump,这种方式的代价要小得多
tcpdump -i en1 -s 65535 -x port 3306
想记录下来
tcpdump -i en1 -s 65535 port 3306 -x -q -n -tttt > mysql_tcpdump.txt
记录下来就要看包里的内容了,怎么看呢?
pt-query-digest
tcpdump -s 65535 -x -nn -q -tttt -i any -c 1000 port 3306 > mysql.tcp.txt
pt-query-digest --type tcpdump mysql.tcp.txt
或者
#!/bin/bash
tcpdump -i any -s 0 -l -w - dst port 3306 | strings | perl -e '
while(<>) { chomp; next if /^[^ ]+[ ]*$/;
if(/^(SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK|CREATE|DROP|ALTER|CALL)/i)
{
if (defined $q) { print "$q\n"; }
$q=$_;
} else {
$_ =~ s/^[ \t]+//; $q.=" $_";
}
}'
虽然percona的包在6,7年前都已经出来,原来还是mk-系列,但是老工具拿来温习下效果也是非常不错的。
参考
https://www.databasejournal.com/features/mysql/article.php/3916226/Troubleshooting-MySQL-Slow-Queries-with-Tcpdumps.htm
https://www.percona.com/doc/percona-toolkit/2.2/pt-query-digest.html