• 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 ,总时间中包含锁定时间

  • 相关阅读:
    费用流模板
    Redis sds packed对齐理解
    碳中和大潮惊涛拍岸,科技企业如何迈入这条大江大河?
    从零开始搭建自己的cli脚手架
    【Java 进阶篇】Java XML快速入门:理解、解析和生成XML
    uniapp相关技术
    近期刷题。
    【重拾C语言】七、指针(三)指针与字符串(字符串与字符串数组;指针与字符串的遍历、拷贝、比较;反转字符串)
    Linux入门与进阶(完结篇)
    JavaScript反爬虫技巧详细攻略
  • 原文地址:https://blog.csdn.net/java_zhulinghai/article/details/126541978