启用 MySQL 的慢查询日志以及执行的 SQL 记录
概述
为了监控 MySQL 实际执行语句的效率问题,有时候需要关注 SQL 语句执行的时间问题,此时可以启用 MySQL 的慢查询; 而在开发过程中,很多时候 SQL 查询语句的组成可能是有很多个 SQL 碎片拼凑而成,要了解最终 SQL 的实际执行语句, 可能需要断点输出 SQL 或者 将其输出到日志里面,而开启了 MySQL 的查询语句记录,我们只需要查看相关的日志就可以了。
配置文件
一般为 my.cnf
,其位置根据安装方式的不同可能需要自定义。本人在 CentOS 下 yum 安装之后,其位置在 /etc/my.cnf
节点为:[mysqld]
启用慢查询
long_query_time=1
slow_query_log=1
slow_query_log_file=/var/log/mysqld/slow.log
long_query_time:最长查询时间,单位为秒。默认为 10s,可根据自己实际情况进行设置
slow_query_log:是否启用慢查询,值为 0 或 1
slow_query_log_file: 日志位置。注意 目标文件夹权限,需要 MySQL 的所有者可写;否则会强制不启用
权限的解决方案有两种:
- 建立专属的文件夹,比如本人在 log 下创建了 mysqld 目录,并将文件夹所有者改为 MySQL 进程的所有者
- 手动创建日志文件,并将文件所有者改为 MySQL 进程的所有者(通常不建议 777 权限)
启用 SQL 查询详情
general_log=1
general_log_file=/var/log/mysqld/query.log
slow_query_log:是否启用,值为 0 或 1
slow_query_log_file: 日志位置。注意 目标文件夹权限,需要 MySQL 的所有者可写;否则会强制不启用
设置 MySQL 日志记录时间点
自 MySQL 5.7.2 起,MySQL 日志内记录的时间所采用的时区不再是随系统设置的时区了,而是通过参数 log_timestamps
来控制,其默认值为 “UTC”。
log_timestamps 允许的值为 “UTC” 和 “SYSTEM”,如果恢复之前的时区追随系统设置,只需要设置为:log_timestamps=SYSTEM
即可。