MySQL - 配置慢日志输出

一、慢查询日志相关参数

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按照扫描行数最多的

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值