如何实时监控mysql中的SQL语句的执行情况?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何实时监控mysql中的SQL语句的执行情况?相关的知识,希望对你有一定的参考价值。

装了 Oralce SQL Developer看到Oralce SQL Developer中有 工具---监视SQL 这个菜单,但是在选择连接的时候无可选项,如果创建新连接,则也是无法添加到这个选择项窗口中,疑惑,难道oracle这个工具不能监控mysql?还是我应该另外装别的工具呢?

首先介绍下 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,代表 监控阈值,监控参数超过阈值,则满足触发条件;

    ∘ 监控参数的值非数字时,需要配合 match 参数一起使用,如 processlist 的 state 列;

    cycles:

    ∘ 默认为 5,表示连续观察到五次满足触发条件时,才触发收集;

    连接参数:host、password、port、socket。

    其他一些重要参数:

    iterations:该参数指定 pt-stalk 在触发收集几次后退出,默认会一直运行。

    run-time:触发收集后,该参数指定收集多长时间的数据,默认 30 秒。

    sleep:该参数指定在触发收集后,sleep 多久后继续监控,默认 300 秒。

    interval:指定状态参数的检查频率,判断是否需要触发收集,默认 1 秒。

    dest:监控数据存放路径,默认为 /var/lib/pt-stalk。

    retention-time :监控数据保留时长,默认 30 天。

    daemonize:以后台服务运行,默认不开启。

    log:后台运行日志,默认为 /var/log/pt-stalk.log。

    collect:触发发生时收集诊断数据,默认开启。

    ∘ collect-gdb:收集 GDB 堆栈跟踪,需要 gdb 工具。

    ∘ collect-strace:收集跟踪数据,需要 strace 工具。

    ∘ collect-tcpdump:收集 tcpdump 数据,需要 tcpdump 工具。

参考技术A MYSQL中没有实时监控。 一般是通过查看普通查询日志来看执行了哪些SQL语句。当然也可以自己改写MYSQL的源代码以实时输出执行了什么SQL语句。 参考技术B MySQL数据库的导入,有两种方法: 1) 先导出数据库SQL脚本,再导入; 2) 直接拷贝数据库目录和文件。 在不同操作系统或MySQL版本情况下,直接拷贝文件的方法可能会有不兼容的情况发生。 所以一般推荐用SQL脚本形式导入。 参考技术C 要分析的数据库是mysql,但装的工具是Oralce SQL Developer 参考技术D 有啥意义呀?-0-#目的查一下执行了什么sql语句,我现在设置了输出到日志文件中了,能看到,但是没有执行时间的分析

如何创建监视SQL语句的事件监控器

参考技术A 打2008事件探查器工具栏按钮新建跟踪连要跟踪数据库实例确定即新建跟踪查看链接数据库实例语句执行创建完跟踪
每客户端都ClientProcessID想跟踪客户端语句执行情况:
先让客户端查询报表通事件探查器看看ClientProcessID暂停事件探查
文件——属性——筛选——面找ClientProcessID,等于处双击填入客户端ClientProcessID,确定重新启追看客户端运行情况!

以上是关于如何实时监控mysql中的SQL语句的执行情况?的主要内容,如果未能解决你的问题,请参考以下文章

sqlserver2008 监控某个表的改动情况

ELK搭建:搭建mysql性能执行效率监控平台

查看Mysql实时执行的Sql语句

MySQL 到 SQL Server 实时数据同步实操分享

MySQL 到 SQL Server 实时数据同步实操分享

MySQL 到 SQL Server 实时数据同步实操分享