小不的笔记

时间之外的往事

MySQL 记录所有SQL和慢SQL

通过配置文件配置日志

my.cnf 位置

查看自己版本 MySQL 默认读取配置文件的路径

1
mysql --help  grep my.cnf

我的这个版本的 MySQL 会以以下顺序读配置文件 1. /etc/my.cnf 2. /etc/mysql/my.cnf 3. /usr/local/etc/my.cnf 4. ~/.my.cnf 如果使用了自定义位置可以通过查看进程启动参数 --defaults-file

1
ps aux  grep mysqld

日志配置

通用SQL日志 (General Query Log) 记录所有mysqld做的事,连接、断开、查询。

1
2
3
# 通用SQL日志
general_log_file = /var/log/mysql/mysql.log
general_log = 1

慢SQL日志 (Slow Query Log) 记录慢SQL long_query_time 默认10,单位秒;SQL执行时间比long_query_time长的都会被记录。

1
2
3
4
5
# 慢SQL日志
log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 10
log-queries-not-using-indexes = ON

在运行时开启日志

开启日志,登录 mysql client (mysql -u root -p) 然后执行:

1
2
SET GLOBAL general_log = 'ON';
SET GLOBAL slow_query_log = 'ON';

关闭日志,登录 mysql client (mysql -u root -p) 然后执行:

1
2
SET GLOBAL general_log = 'OFF';
SET GLOBAL slow_query_log = 'OFF';

即时生效,不需要重启。 查看日志文件位置

1
show variables like '%log_file';