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

 我来答
爱可生云数据库
2020-10-20 · MySQL开源数据库领先者
爱可生云数据库
爱可生,金融级开源数据库和数据云服务整体解决方案提供商;优秀的开源数据库技术,企业级数据处理技术整体解决方案提供商;私有云数据库云服务市场整体解决方案提供商。
向TA提问
展开全部

首先介绍下 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 工具。

奔跑的窝牛的家
高粉答主

推荐于2018-04-22 · 每个回答都超有意思的
知道顶级答主
回答量:3.6万
采纳率:98%
帮助的人:4518万
展开全部
如果是这样的话,你可以看看关于mysql的触发器的东西。
Rainbow702 写道引用最好可以日志或其它方式记录下来数据库本身应该就有操作日志的啊问题补充:我用的hibernate的PostDeleteEvent,还是有些问题
hibernate自带的监听
jkxydp 写道用spring的aop啊,在删除记录的方法上加一个记录日志的切入点去记录啊,dao层一般增、删、改、查的方法都是单独出来的吧,在所有删除记录的方法上写切入点。
或者使用loger,其它的都不写,就在删除的方法里面写上日志应该就没问题。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阳光上的桥
2016-11-04 · 知道合伙人软件行家
阳光上的桥
知道合伙人软件行家
采纳数:21423 获赞数:65813
网盘是个好东东,可以对话和传文件

向TA提问 私信TA
展开全部
可以查看日志文件【机器名-slow.log】,里面有执行缓慢的语句,看看是否需要优化程序还是修改数据库结构。

可以show full processlist查看正在执行的语句。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
euler13
2018-04-22
知道答主
回答量:12
采纳率:0%
帮助的人:7926
展开全部

慢查询的话可以开启慢查询日志,生产环境可以开启。

1.启用慢查询日志记录 (建议生产环境开启)

vim /etc/mysql/mariadb.conf.d/50-server.cnf

或者 vim /etc/mysql/my.cnf

slow_query_log=1

log-queries-not-using-indexes

long_query_time=1

log-slow-queries=/data/log/mysql/log-slow-queries.log 

超过1s的都认为是慢查询。 开启慢查询以后,可以在慢查询日志文件中查看运行慢的SQL,

$ tail -f /data/log/mysql/log-slow-queries.log

2.监测所有SQL,可以开启MySQL General Log,监测所有SQL请求(生产环境不建议开启)

管理员登陆

$ mysql -u root -p

#设置存放路径

set global general_log_file=/data/log/mysql_general_log.log;

#设置开启general log, 1开启(0关闭),即时生效,不用重启MySQL

set global general_log=1;

详情参考:MySQL查询监测

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
季淼闾丘越
2019-11-23 · TA获得超过1164个赞
知道小有建树答主
回答量:1792
采纳率:100%
帮助的人:8.4万
展开全部
有啥意义呀?-0-#目的查一下执行了什么sql语句,我现在设置了输出到日志文件中了,能看到,但是没有执行时间的分析
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式