Docker中的mysql开启慢查询日志

15 篇文章 0 订阅
5 篇文章 0 订阅

1.查看容器

docker ps

2.进入容器

docker exec -it 7b7b345abeb6 /bin/bash

有两种修改方法,一种是通过sql语句(mysql重启后失效),另外一种是修改配置文件(永久有效)

方法一:通过sql语句

1.登入mysql

mysql -u root -p
#然后输入密码

2.查看是否开启了慢查询日志、设置的阈值、慢查询日志的存放位置

show variables like 'slow%';
#不同版本会有区别所以也可以使用第二种方法查看(两个百分号%)
show variables like '%slow%';

 

 如图所示,并未开启慢查询 slow_query_log为OFF

3.开启慢查询日志,设置阈值

#开启慢查询
set global slow_query_log = ON;
#修改慢sql的阈值,sql执行超过阈值的时候就会记录到慢日志的log文件中。
set global slow_launch_time = 3;//根据需要设置秒数

4.退出mysql,查看慢查询日志

#退出mysql
exit
#查看慢查询日志
cat -n /var/lib/mysql/7b7b345abeb6-slow.log

方法二 : 修改mysql配置文件

  1. 编辑mysql配置文件(如果提示命令不存在,按照步骤2安装vim)
    vim /etc/mysql/my.cnf
  2. 安装vim
    #更新数据源列表
    apt-get update
    #安装vim
    apt-get install vim
  3. 修改my.cnf配置文件,在[mysqld]下的下方加入
    [mysqld]
    slow_query_log = ON
    slow_query_log_file = /var/lib/mysql/tmp_slow.log //linux
    long_query_time = 1
  4. 重启mysql容器
    #先退出容器
    exit
    #关闭,重启容器
    docker kill 7b7b345abeb6
    docker start 7b7b345abeb6
    #进入容器
    docker exec -it 7b7b345abeb6 /bin/bash
  5. 查看慢查询日志
    #方法一直接查看
    cat -n /var/lib/mysql/7b7b345abeb6-slow.log
    
    #方法二通过mysql自带的工具查看,  显示出慢查询日志中最慢的10条sql
    mysqldumpslow -t 10 /var/lib/mysql/7b7b345abeb6-slow.log  
    
    #方法三 详细的sql情况(方法二的详细版)
    mysqldumpslow -a -s t -t 10 /var/lib/mysql/7b7b345abeb6-slow.log
    
    #方法四 得到访问次数最多的10个SQL
    mysqldumpslow -s c -t 10 /var/lib/mysql/7b7b345abeb6-slow.log
    
    #方法五 得到按照时间排序的前10条里面含有左连接的查询语句。
    mysqldumpslow -s t -t 10 -g "left join" /var/lib/mysql/7b7b345abeb6-slow.log
    
    #方法六 得到返回记录集最多的10个SQL。
    mysqldumpslow -s r -t 10 /var/lib/mysql/7b7b345abeb6-slow.log
    
    #方法七 可以配合more命令使用
    mysqldumpslow -s r -t 10 /var/lib/mysql/7b7b345abeb6-slow.log | more

    1)mysqldumpslow还有一些其他参数,可以通过mysqldumpslow --help查看
    2)mysqldumpslow能将相同的慢SQL归类,并统计出相同的SQL执行的次数,每次执行耗时多久、总耗时,每次返回的行数、总行数,以及客户端连接信息等。
     

    mysqldumpslow语法说明:
    -s ,按照什么方式起来排序。默认at,也就是按照平均查询时间来排序。都是按照倒序排列。
    al: average lock time 平均锁定时间
    ar: average rows sent 平均返回行数
    at: average query time 平均查询时间
    c: count 总执行次数
    l: lock time 总锁定时间
    r: rows sent 总返回行数
    t: query time 总查询时间
    -t ,show the top n queries,显示前多少名的记录
    -a ,默认不开启这个选项。mysqldumpslow将相似的SQL的值(字符串或者数字)替换为N,开启该选项,则显示真实值。不开启该选项,有点类似于Oracle的绑定变量的记录。
    -g ,类似于grep命令,过滤出需要的信息。如,只查询A表的慢查询记录。
    -l ,总时间中包含锁定时间

后记:如果慢查询日志文件太大,清理方案.

1.先关闭慢查询日志(参考开头的方法)

2.修改慢查询日志原文件名称

mv 7b7b345abeb6-slow.log 7b7b345abeb6-slow.log.bak

3.创建新的慢查询日志文件

touch 7b7b345abeb6-slow.log

新文件的创建者(所属人)不是mysql并且文件所属的用户组不是mysql会导致,mysql无法写入日志文件报错.解决方法

#1.查询原文件所属人和所属组,文件的读写权限
ls -l 7b7b345abeb6-slow.log.bak

#2.修改文件的所属人
chown mysql 7b7b345abeb6-slow.log

#3.修改文件的所属组
chgrp mysql 7b7b345abeb6-slow.log

#4.文件读写权限相同,无需修改

       

4.重新开启慢查询日志

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值