Docker中的mysql开启慢查询日志

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 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 ,总时间中包含锁定时间
经验分享 程序员 微信小程序 职场和发展