ZBLOG

MYSQL如何查看收到了哪些SQL语句

在MySQL中,可以通过以下几种方式查看接收到的SQL语句,适用于性能分析、审计或故障排查:


1. 通用日志(General Query Log)

记录所有收到的SQL语句(包括语法错误的语句),但对性能有较大影响,建议临时开启:

-- 查看当前状态(默认关闭)
SHOW VARIABLES LIKE 'general_log%';

-- 开启通用日志(重启后失效)
SET GLOBAL general_log = 'ON';
SET GLOBAL general_log_file = '/var/log/mysql/general.log';  -- 指定日志路径

-- 关闭
SET GLOBAL general_log = 'OFF';

注意:日志会快速增长,需定期清理或限制文件大小。


2. 慢查询日志(Slow Query Log)

记录执行时间超过阈值的SQL(默认10秒):

-- 查看配置
SHOW VARIABLES LIKE 'slow_query%';
SHOW VARIABLES LIKE 'long_query_time';

-- 启用慢查询日志
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 2;  -- 设置阈值(秒)

-- 日志路径通常在:/var/lib/mysql/*-slow.log

3. Performance Schema

监控SQL执行历史(需提前配置):

-- 启用events_statements_history(记录最近执行的SQL)
UPDATE performance_schema.setup_consumers 
SET ENABLED = 'YES' 
WHERE NAME LIKE 'events_statements_history%';

-- 查看最近执行的SQL
SELECT THREAD_ID, SQL_TEXT FROM performance_schema.events_statements_history;

4. Binlog(二进制日志)

记录所有修改数据的SQL(用于主从复制/恢复):

SHOW BINARY LOGS;
SHOW BINLOG EVENTS IN 'mysql-bin.000001'; -- 需要工具解析详细信息

-- 使用mysqlbinlog工具解析:
mysqlbinlog /var/lib/mysql/mysql-bin.000001 | grep "UPDATE|INSERT|DELETE"

5. MySQL Enterprise Audit Plugin

企业版功能,提供完整的审计能力。


6. TCP层抓包

通过工具监听MySQL端口流量:

tcpdump -i eth0 port 3306 -w mysql_traffic.pcap

用Wireshark或tshark分析捕获的报文。


选择建议

  • 调试/开发:临时开启通用日志。
  • 性能优化:优先用慢查询日志和Performance Schema。
  • 安全审计:考虑企业版插件或第三方工具如Audit Plugin。


    内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=23559

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?