Mysql查询历史SQL执行记录

一、mysql查看正在执行的sql语句

show processlist;

二、mysql查看已经执行的历史sql语句(方法:开启日志模式)

SETGLOBAL log_output =‘TABLE’;SETGLOBAL general_log =‘ON’; //日志开启

文件位置:/home/root/mysql/data/mysql/general_log.CSV

SETGLOBAL log_output =‘FILE’;SETGLOBAL general_log =‘OFF’; //日志关闭

注意:在查询到所需要的记录之后,应尽快关闭日志模式,占用磁盘空间比较大

三、mysql查看是否开启日志模式

show variables like ‘%log_output%’;

show variables like ‘%general_log%’;

### 查询 MySQL 数据库历史执行 SQL 的方法 在 MySQL 中,可以通过多种方式查询历史执行SQL 语句。以下是几种常见的实现方法: #### 方法一:通过 INFORMATION_SCHEMA.PROCESSLIST 表 如果需要实时监控当前正在运行的 SQL 语句,可以切换到 `information_schema` 数据库查询 `PROCESSLIST` 表中的数据[^1]。 ```sql USE information_schema; SELECT * FROM information_schema.`PROCESSLIST` WHERE info IS NOT NULL; ``` 该方法仅适用于获取当前活动连接上正在执行SQL 语句,无法用于查询过去的 SQL 记录。 --- #### 方法二:启用 General Query Log 功能 为了记录所有的 SQL 执行历史,可以开启 MySQL 的通用查询日志功能 (General Query Log)[^3]。具体操作如下: 1. **确认 general_log 是否已启用** ```sql SHOW VARIABLES LIKE 'general_log%'; ``` 2. **设置 general_log 参数** 如果未启用,则可通过以下命令动态修改配置: ```sql SET GLOBAL general_log = ON; SET GLOBAL log_output = 'TABLE'; -- 将日志存储至表中以便于查询 ``` 3. **查询 history_sql 表** 启用后,所有执行过的 SQL 都会被写入 `mysql.general_log` 表中,可按需筛选: ```sql SELECT * FROM mysql.general_log ORDER BY event_time DESC LIMIT 10; ``` 需要注意的是,长期开启此功能可能会显著增加磁盘 I/O 和性能开销,因此建议仅在调试或特定场景下临时启用。 --- #### 方法三:利用 Binary Logs (Binlogs) 当启用了 Binlog 日志时,MySQL 会自动保存所有 DML/DDL 操作的历史记录[^4]。这些记录可用于回溯指定时间段内的 SQL 变更情况。 1. **导出指定时间范围的日志文件** 使用 `mysqlbinlog` 工具提取目标区间的数据: ```bash mysqlbinlog --base64-output=decode-rows -vv \ --start-datetime='2023-04-04 14:00:00' \ --stop-datetime='2023-04-04 15:00:00' \ /path/to/mysql-bin.000043 > /tmp/sql_record.txt ``` 2. **过滤关键字** 对生成的结果进一步处理以定位具体的 SQL 语句: ```bash grep config_json /tmp/sql_record.txt ``` 这种方法适合分析较长时间跨度的操作记录,但不支持读取只读模式下的非事务型变更。 --- #### 方法四:基于慢查询日志 (Slow Query Log) 对于耗时较长或者效率较低的 SQL 请求,也可以借助 Slow Query Log 来追踪其行为特征[^2]。虽然它主要关注性能瓶颈而非全面覆盖每条指令,但在某些情况下仍然非常有用。 启动步骤类似于上述提到的 General Query Log 设置过程,只需调整对应的变量即可: ```sql SET GLOBAL slow_query_log = ON; SET GLOBAL long_query_time = 1; -- 定义阈值为超过一秒即视为缓慢请求 ``` 随后查阅相关文档路径下的 `.log` 文件内容完成后续解析工作。 --- ### 总结 综上所述,针对不同需求可以选择合适的方案来满足实际业务要求。例如短期测试推荐采用 Method Two;而对于生产环境则优先考虑 Method Three 并配合其他辅助工具共同协作达成目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值