当前位置: 当前位置:首页 >IT科技类资讯 >dba+开源工具:8.0升级无障碍!基于MySQL协议的抓包工具 正文

dba+开源工具:8.0升级无障碍!基于MySQL协议的抓包工具

2025-11-04 19:09:20 来源:多维IT资讯作者:域名 点击:153次

mysql_sniffer工具简介

mysql_sniffer 是源工议一个基于 MySQL 协议的抓包工具,用来实时抓取 MySQL 服务端的具升级无基于请求,并格式化输出,障碍抓包输出内容包括访问时间、工具来源 IP、源工议执行的具升级无基于SQL语句。

在进行MySQL 8.0升级时,障碍抓包了解新版本对SQL语法的工具改变和新增的功能是非常重要的。通过使用mysql_sniffer,源工议DBA可以在升级之前对现有的具升级无基于SQL语句进行抓取和分析,以确保在新版本中能够正常运行。障碍抓包

使用mysql_sniffer工具可以带来以下几点好处:

对SQL语法的工具改变有更深入的了解:MySQL 8.0引入了一些新的SQL语法,也对一些旧的源工议语法进行了修改或弃用。通过mysql_sniffer,具升级无基于DBA可以抓取并分析现有的障碍抓包SQL语句,以确定它们是否会受到这些改变的影响。发现并解决潜在的问题:如果在新版本中,免费源码下载某些SQL语句无法正常运行,那么通过mysql_sniffer,DBA可以提前发现这些问题,并在升级之前进行修复。

有一些已知SQL语法与MySQL 8.0不兼容,例如:

复制select NVL(id/0,YES) from test.t1 where id = 1; select user_id,sum(amount) from test.user group by user_id DESC limit 10;1.2.

第一条语句,NVL函数是MariaDB特有的,在MySQL 8.0中,要改成:

复制select IFNULL(id/0,YES) from test.t1 where id = 1;1.

第二条语句,在MySQL 8.0中group by 字段 ASC/DESC 失效,要改成:

复制select user_id,sum(amount) from test.user group by user_id order by user_id DESC limit 10;1. 那么,如何判断业务上的未知SQL是否与MySQL 8.0兼容呢?mysql_sniffer工具可以帮助你

介绍

复制usage: mysql_sniffer [-h] -p PORT [-t TABLES [TABLES ...]] [-l LOG] [-c] [-r RUNTIME] [-v] MySQL packet sniffer options: -h, --help show this help message and exit -p PORT, --port PORT MySQL server port -t TABLES [TABLES ...], --tables TABLES [TABLES ...] Table names to capture -l LOG, --log LOG Log file path -c, --console Print log to console -r RUNTIME, --runtime RUNTIME Runtime of packet sniffing in seconds -v, --version show programs version number and exit1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.

参数解释

复制-p 指定端口,MySQL默认3306 -c 是把抓取到的SQL打印到终端 -t 指定具体的表名,例如只抓取t1,t2,t3这三张表, -t t1 t2 t3 (不支持正则表达式,请写具体的表名) -l 抓取的SQL保存在哪个文件里,不指定默认保存在mysql_packet.sql文件里 -r 抓取多长时间,单位秒1.2.3.4.5.6.7.8.9.10.11.12.13.

使用

复制hell> chmod 755 mysql_sniffer1.

在 MySQL 5.7 或者 MariaDB 机器上执行(SSH的ROOT权限)

复制shell> ./mysql_sniffer -p 33061.

将会抓取60秒数据(-r 代表抓取的时间,单位秒),默认会把线上的香港云服务器SQL语句(select/insert/update/delete)存入mysql_packet.sql文件里。

图片

图片

抓取1-10分钟数据,然后把mysql_packet.sql文件拷贝到MySQL 8.0测试环境里,然后执行下面的命令:

复制mysql -S /tmp/mysql_mysql8_1.sock yourDB < mysql_packet.sql > /dev/null1.

看报错信息。没有报错,就代表SQL是兼容的。

注:请确保生产环境和测试环境的表结构一致,测试环境不需要任何数据。

测试

1) 假定 192.168.1.1 是 MySQL 5.7 / MariaDB,在该机器上运行./mysql_sniffer -p 3306 -c

2) 在 192.168.1.2 机器上运行sysbench,模拟出生产环境数据读写。

3) mysql_sniffer会实时打印出目前运行的SQL语句。

注:工具适用于 Centos6 和 Centos7 系统。

mysql_sniffer(Centos7)mysql_sniffer_centos6(Centos6)工具研发者介绍

贺春旸,dbaplus社群金牌专家,凡普金科和爱钱进DBA团队负责人,《MySQL管理之道:性能调优、高可用与监控》第一&二版、《MySQL运维进阶指南》作者,曾任职于中国移动飞信、安卓机锋网。五次荣获dbaplus年度MVP,致力于MariaDB、MongoDB等开源技术的研究,主要负责数据库性能调优、监控和架构设计。云服务器

工具下载:https://github.com/hcymysql/mysql_sniffer

作者:IT科技类资讯
------分隔线----------------------------
头条新闻
图片新闻
新闻排行榜