更新时间:2022-06-03 23:20:25
个人博客: alex-my.xyz
CSDN: blog.csdn.net/alex_my
启动
sudo /usr/local/mysql/support-files/mysql.server start
停止
sudo /usr/local/mysql/support-files/mysql.server stop
重启
sudo /usr/local/mysql/support-files/mysql.server restart
通过命令开启
查看当前开启状态
show variables like '%slow_query%';
输出:
slow_query_log = OFF
slow_query_log_file = /xxx/xxx/xxx-slow.log
查看超时时间
show variables like 'long_query_time';
输出:
long_query_time = 10.000000
设置开启状态
set global slow_query_log=1
设置超时时间
set global long_query_time=5;
需要注意的是,设置完后,直接执行show variables like 'long_query_time';
显示的仍然是原来的时候。
show variables like 'long_query_time';
show global variables like 'long_query_time';
通过my.cnf开启
查看当前是使用的哪个my.cnf
ps aux | grep mysqld
如果在输出中有指定my.cnf,就是那个。
如果没有,则执行以下命令查找。
mysql --help|grep 'my.cnf'
输出:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf
添加慢查询日志参数
[mysqld]
...
# 慢查询日志开关,ON/OFF,默认OFF
slow_query_log = ON
# 慢查询日志存储路径,不填写也会生成一个host_name-slow.log
slow_query_log_file = /data/logs/mysql/slow_query.log
# 慢查询日志阈值,超过这个时间时,就会记录起来。也可以设置为毫秒,比如0.01秒
long_query_time = 3
# 未使用索引的查询也会被记录起来, 如果代码没有优化,这个会生成很多很多日志
log_queries_not_using_indexes = ON
...
slow_query_log_file
路径一定要有可执行权限。chmod
long_query_time
位5秒。执行SELECT SLEEP(9)
, 则会在slow_query.log中记录如下日志:
Time: 170724 18:13:45
User@Host: uzonedb[uzonedb] @ [127.0.0.1] Id: 69
Query_time: 9.000228 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0
SET timestamp=1500891225;
SELECT SLEEP(9);
mysqldumpslow
工具。mysqldumpslow --help
查看参数。示例, 返回记录次数最多的10条语句
mysqldumpslow -s c -t 10 /data/logs/mysql/slow_query.log