mysql怎么跟踪sql 跟踪mysql执行命令

mysql怎么查询执行sql的记录 -- 打开sql 执行记录功能
set global log_output='TABLE'; -- 输出到表
set global log=ON; -- 打开所有命令
执行记录功能general_log, 所有语句: 成功和未成功的.
set global log_slow_queries=ON; -- 打开慢查询 sql 记录
slow_log, 执行成功的: 慢查询语句和未使用索引的语句
set global long_query_time=0.1; -- 慢查询时间限制(秒)
set global log_queries_not_using_indexes=ON; -- 记录未使用索引的sql 语句
-- 查询sql 执行记录
select * from mysql.slow_log order by 1; -- 执行成功的:慢查询语句,和未
使用索引的语句
select * from mysql.general_log order by 1; -- 所有语句: 成功和未成功的.-- 关闭sql 执行记
MySQL V3.4如何跟踪SQL语句在MsSQL Server中我们要追踪SQL,只需要开启MS SQL中的事件追踪器(SQL Server Profiler)就可以了,而且设置非常的方便 。但在MySQL中要实现类似功能需要做些处理,而且操作也比较繁琐 —— 鼠标党,被MS毁了 。
要启用MySQL的Sql Trace,需要启用查询日志功能,各个版本操作不一,下面简要说明:
在MySql5.1.12之前
在my.cnf或者my.ini中的[mysqld]节下配置:
log = /path/for/file/live-query.log
而这些所有的参数都是可以在线设置的,也就是说,如果你不想因为修改设置而重启MySql的话 , 那么在线设置应该是个更好的选择,在进入MySql的操作中:
--这里按照最新版本来设置
--查询关于log的设置
SHOW VARIABLES LIKE 'general_log%';

返回结果类似:
+------------------+------------------------------------------------------------
------------------+
| Variable_name| Value
|
+------------------+------------------------------------------------------------
------------------+
| general_log| OFF
|
| general_log_file | dev-mc.log
|
【mysql怎么跟踪sql 跟踪mysql执行命令】+------------------+------------------------------------------------------------
------------------+
2 rows in set (0.00 sec)
注意,general_log_file 的默认值是'机器名'.log
*/
-- 开启日志
SET GLOBAL general_log ='ON';
-- 设置日志的文件路径:本例在Windows下
SET GLOBAL general_log_file='D:/MySql/live-query.log';
-- 设置完之后 , 就已经生效了
如何实时监控mysql中的SQL语句的执行情况首先介绍下 pt-stalk , 它是 Percona-Toolkit 工具包中的一个工具,说起 PT 工具包大家都不陌生,平时常用的 pt-query-digest、 pt-online-schema-change 等工具都是出自于这个工具包 , 这里就不多介绍了 。
pt-stalk 的主要功能是在出现问题时收集 OS 及 MySQL 的诊断信息,这其中包括:
1. OS 层面的 CPU、IO、内存、磁盘、网络等信息;
2. MySQL 层面的行锁等待、会话连接、主从复制 , 状态参数等信息 。
而且 pt-stalk 是一个 Shell脚本,对于我这种看不懂 perl 的人来说比较友好,脚本里面的监控逻辑与监控命令也可以拿来参考,用于构建自己的监控体系 。
三、使用
接着我们来看下如何使用这个工具 。
pt-stalk 通常以后台服务形式监控 MySQL 并等待触发条件,当触发条件时收集相关诊断数据 。
触发条件相关的参数有以下几个:
function:
° 默认为 status,代表监控 SHOW GLOBAL STATUS 的输出;
° 也可以设置为 processlist,代表监控 show processlist 的输出;
variable:
° 默认为 Threads_running,代表 监控参数 , 根据上述监控输出指定具体的监控项;
threshold:
° 默认为 25,代表 监控阈值,监控参数超过阈值,则满足触发条件;

推荐阅读