MySQL Sniffer是奇虎360开源的工具项目,这个项目代码其实已经很久没有更新了。不过总的来说并不妨碍使用(操作系统centos6、7系列)。
正所谓工欲善其事必先利其器,MySQL Sniffer就是这种好用的利器。有些时候为了诊断或分析MySQL相关问题,如性能问题定位、异常SQL请求等,一般会使用tcpdump做一些分析。对于mysql实时的连接监控通常会使用"mysqladmin/show full processlist"查看,也可直接查询processlist表。一个偏网络底层且阅读“艰涩”,一个偏重交互性不适合实时的监控分析。虽然说我们可以开启general_log进行统计,但general_log开启后1是非常损耗性能, 2是general_log的内容还需要自己二次加工(还可以使用pt-tools)。当我们“嫌弃”上述3种方式分析问题时,不妨试一下mysql-sniffer。
这个工具实时抓取到MySQLServer 端的请求,并格式化输出。输出内容包括访问包括时间、访问用户、来源 IP、访问 Database、命令耗时、返回数据行数、执行语句。在客户端、WebServer端无法有效跟踪特定SQL查询时显得尤其有用。
实时抓取MySQL客户端请求输出演示
输出内容的字段按顺序分别是:时间,访问用户,来源 IP,访问 Database,命令耗时,返回数据行数,执行语句
./mysql-sniffer -i "网卡设备名" -p "DB监听端口"
项目可以在gitee上搜索“qihoo360git/mysql-sniffer”。