我是靠谱客的博主 魁梧自行车,最近开发中收集的这篇文章主要介绍MySQL - 配置慢日志输出,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

    • 一、慢查询日志相关参数
    • 二、慢查询日志配置:
          • 1、查看 slow_query_log 的值的状态
          • 2、设置 slow_query_log 的值为 打开(ON)
          • 3、永久设置慢查询日志状态为打开
    • 四、慢查询统计工具:mysqldumpslow

一、慢查询日志相关参数

MySql 慢查询的相关参数解释:

参数描述
slow_query_log是否开启慢查询日志,1 表示开启,0 表示关闭
log-slow-queries旧版(5.6以下版本)MySql 数据库慢查询日志存储路径。可以不设置该参数,系统则会默认给一个缺省的文件 host_name-slow.log
slow-query-log-file新版(5.6以上版本)MySql 数据库慢查询日志存储路径。可以不设置该参数,系统则会默认给一个缺省文件 host_name-slow.log
long_query_time慢查询阈值,当查询时间多于设定的阈值时,记录日志
log_query_not_using_indexes未使用索引的查询也被记录到慢查询日志中(可选)
log_output日志存储方式。
log_output=‘FILE’ 表示将日志存入文件,默认值是’FILE
log_output=‘TABLE’ 表示将日志存入数据库,这样日志信息就会被写入到 mysql.slow_log 表中。 MySql 数据库支持同时两种日志存储方式,配置的时候以逗号隔开即可,如:log_output=‘FILE,TABLE’。

日志记录到系统的专用日志表中,要比记录到文件耗费更多的系统资源,因此对于需要启动慢日志查询,又需要能够更高的系统性能,那么建议优先记录到文件


二、慢查询日志配置:

Tips:默认情况下 slow_query_log 的值为 OFF,表示慢查询日志是关闭的,可以通过设置 slow_query_log 的值来开启。

1、查看 slow_query_log 的值的状态
mysql> show variables like '%slow_query%';
+---------------------+-------------------------------------------------+
| Variable_name
| Value
|
+---------------------+-------------------------------------------------+
| slow_query_log
| OFF
|
| slow_query_log_file | /var/lib/mysql/iZbp1hcv8qx067p386viryZ-slow.log |
+---------------------+-------------------------------------------------+
2 rows in set (0.00 sec)

2、设置 slow_query_log 的值为 打开(ON)
mysql> set global slow_query_log=1;
Query OK, 0 rows affected (0.00 sec)

再次查看状态

mysql> show variables like '%slow_query%';
+---------------------+-------------------------------------------------+
| Variable_name
| Value
|
+---------------------+-------------------------------------------------+
| slow_query_log
| ON
|
| slow_query_log_file | /var/lib/mysql/iZbp1hcv8qx067p386viryZ-slow.log |
+---------------------+-------------------------------------------------+
2 rows in set (0.00 sec)



3、永久设置慢查询日志状态为打开

tips:使用 set global slow_query_log=1 开启的慢查询日志只对当前数据库生效,如果 MySQL 重启后则会失效。所以就必须修改配置文件 my.cnf


修改配置文件路径: /etc/mysql/my.cnf ,直接在 [mysqld] 下面添加这几个参数即可。

[mysqld]
# 慢查询日志开关
slow_query_log=ON
long_query_time=4
slow_query_log_file=/var/log/slow_query_log.log

重启服务:

# service mysql restart

查看修改状态:

mysql> show variables like '%query%';
+------------------------------+-----------------------------+
| Variable_name
| Value
|
+------------------------------+-----------------------------+
| binlog_rows_query_log_events | OFF
|
| ft_query_expansion_limit
| 20
|
| have_query_cache
| YES
|
| long_query_time
| 4.000000
|
| query_alloc_block_size
| 8192
|
| query_cache_limit
| 1048576
|
| query_cache_min_res_unit
| 4096
|
| query_cache_size
| 16777216
|
| query_cache_type
| OFF
|
| query_cache_wlock_invalidate | OFF
|
| query_prealloc_size
| 8192
|
| slow_query_log
| ON
|
| slow_query_log_file
| /var/log/slow_query_log.log |
+------------------------------+-----------------------------+

四、慢查询统计工具:mysqldumpslow



参数说明 官方→

Option NameDescription
-a不要将所有数字抽象为 “N”,将字符串抽象为 “S”
-n至少具有指定数字的抽象数字
–debug编写调试信息
-g只考虑与模式匹配的语句
–help显示帮助信息并退出
-h日志文件名中服务器的主机名
-i服务器实例的名称
-l不要从总时间中减去锁定时间
-r颠倒排序 Sequences
-s如何排序输出
-t仅显示前 num 个查询
–verboseVerbose mode


常见用法:

语句说明
mysqldumpslow -s c -t 10 /var/run/mysqld/mysqld-slow.log取出使用最多的10条查询
mysqldumpslow -s t -t 3 /var/run/mysqld/mysqld-slow.log取出查询时间最慢的3条慢查询
mysqldumpslow -s t -t 10 -g “left join” /database/mysql/slow-log得到按照时间排序的前 10 条里面含有左连接的查询语句
mysqldumpslow -s r -t 10 -g ‘left join’ /var/run/mysqld/mysqld-slow.log按照扫描行数最多的

最后

以上就是魁梧自行车为你收集整理的MySQL - 配置慢日志输出的全部内容,希望文章能够帮你解决MySQL - 配置慢日志输出所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部