mysql 慢日志怎么按时间查询

mysql 慢日志怎么按时间查询,第1张

这是一个慢查询日志的展示工具,能够帮助 DBA 或者开发人员分析数据库的性能问题,给出全面的数据摆脱直接查看 slow-log。QAN(Query Analytics)

PMM 目前有 2 个版本,但是对于 QAN 来说其大致由三部分组成:

QAN-Agent(client):负责采集 slow-log 的数据并上报到服务端

QAN-API(server):负责存储采集的数据,并对外提供查询接口

QAN-APP:专门用来展示慢查询数据的 grafana 第三方插件

1. 数据流转

slow-log -->QAN-Agent -->QAN-API <-->QAN-APP(grafana)

2. pmm1 架构图

3. pmm2 架构图

在MySQL客户端中输入命令:

show

variables

like

'%quer%'

其中红框标注的选项是:

-slow_query_log是否记录慢查询。用long_query_time变量的值来确定“慢查询”。

-slow_query_log_file慢日志文件路径

-long_query_time慢日志执行时长(秒),超过设定的时间才会记日志

Linux:

在/etc/my.cnf配置文件的[mysqld]选项下增加:

slow_query_log=TRUE

slow_query_log_file=/usr/local/mysql/slow_query_log.txt

long_query_time=3

Windows:

在my.ini配置文件的[mysqld]选项下增加:

slow_query_log=TRUE

slow_query_log_file=c:/slow_query_log.txt

long_query_time=3

重启MySQL后,可发现已经开启慢查询日志

    根据笔者上一篇文章—Linux系统上记录用户 *** 作的审计日志 。本文来利用相同的方法记录MYSQL *** 作的审计日志。

    使用用mysql工具连接MySQL server的所有 *** 作会默认记录到~/.mysql_history文件中,这个文件会把所有 *** 作记录下来,包括创建用户和修改用户的明文密码,这在生产系统上是不安全的。如果不想保存,仅仅删除是不行的(文件不存在会再建立),要直接将其软连接到垃圾箱。

     ln  -s  /dev/null  ~/.mysql_history

    利用上一篇文章相同的方法记录MYSQL *** 作的审计日志,是因为mysql工具本身就是有一个shell, 每次mysql连接退出后,都会把此次 *** 作的信息记录到~/.mysql_history文件中。那么可以重新定义MYSQL_HISTFILE环境变量来保存mysql日志。

    先看置于/etc/profile.d目录下的环境变量的脚本mysql_history.sh,和loginlog类似。

      在测试时,发现平时使用的普通用户在 *** 作mysql后无法记录,而root用户(平时没有 *** 作过mysql)可以记录成功。后来在在~/.mysql_history文件找到了 *** 作记录,估计是这个文件还存在的原因,删除后才记录到新的MYSQL_HISTFILE定义的路径。

      和loginlog一样,需要定期删除过期日志,以下脚本置于/etc/cron.weekly 目录下。

        delete_time=15

        find /opt/mysqllog/  -mtime +$delete_time -name '*.log' -exec rm -r {} \

      但是相比于loginlog,mysqllog有两点暂时没有解决。

    1、定义最大的记录条数history.maxSize不知在哪定义,my.cnf?

    2、每一条命令的时间记录添加。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6158340.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-16
下一篇 2023-03-16

发表评论

登录后才能评论

评论列表(0条)

保存