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配置文件
- 编辑mysql配置文件(如果提示命令不存在,按照步骤2安装vim) vim /etc/mysql/my.cnf
- 安装vim #更新数据源列表 apt-get update #安装vim apt-get install vim
- 修改my.cnf配置文件,在[mysqld]下的下方加入 [mysqld] slow_query_log = ON slow_query_log_file = /var/lib/mysql/tmp_slow.log //linux long_query_time = 1
- 重启mysql容器 #先退出容器 exit #关闭,重启容器 docker kill 7b7b345abeb6 docker start 7b7b345abeb6 #进入容器 docker exec -it 7b7b345abeb6 /bin/bash
- 查看慢查询日志 #方法一直接查看 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 ,总时间中包含锁定时间
