• Docker中的mysql开启慢查询日志


    1.查看容器

    docker ps

    2.进入容器

    docker exec -it 7b7b345abeb6 /bin/bash

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

    方法一:通过sql语句

    1.登入mysql

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

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

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

     

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

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

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

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

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

    方法二 : 修改mysql配置文件

    1. 编辑mysql配置文件(如果提示命令不存在,按照步骤2安装vim)
      vim /etc/mysql/my.cnf
    2. 安装vim
      1. #更新数据源列表
      2. apt-get update
      3. #安装vim
      4. apt-get install vim
    3. 修改my.cnf配置文件,在[mysqld]下的下方加入
      1. [mysqld]
      2. slow_query_log = ON
      3. slow_query_log_file = /var/lib/mysql/tmp_slow.log //linux
      4. long_query_time = 1
    4. 重启mysql容器
      1. #先退出容器
      2. exit
      3. #关闭,重启容器
      4. docker kill 7b7b345abeb6
      5. docker start 7b7b345abeb6
      6. #进入容器
      7. docker exec -it 7b7b345abeb6 /bin/bash
    5. 查看慢查询日志
      1. #方法一直接查看
      2. cat -n /var/lib/mysql/7b7b345abeb6-slow.log
      3. #方法二通过mysql自带的工具查看, 显示出慢查询日志中最慢的10条sql
      4. mysqldumpslow -t 10 /var/lib/mysql/7b7b345abeb6-slow.log
      5. #方法三 详细的sql情况(方法二的详细版)
      6. mysqldumpslow -a -s t -t 10 /var/lib/mysql/7b7b345abeb6-slow.log

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

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

  • 相关阅读:
    Tomcat运行常见问题
    MongoDB - 事务支持
    零束智能算法引擎赋能,打造数字座舱AI“大脑”
    《网络是怎样连接的》Charpter 1 笔记
    子类加@Data后,IDEA调试时“出现”父类属性无值
    beego-高级查询——QueryTable,orm
    学习pytorch7 神经网络的基本骨架--nn,module的使用
    02-2、PyCharm中文乱码的三处解决方法
    torchvision.transforms 数据预处理:Normalize()
    鸿蒙HarmonyOS实战-Web组件(页面跳转和浏览记录)
  • 原文地址:https://blog.csdn.net/java_zhulinghai/article/details/126541978