centos mysql 慢查询、超时、连接数修改

2017-10-27 Frank 数据库

[TOC]

查看是否开启慢查询

show variables like '%quer%' ;

开启慢查询

编辑vim /etc/my.cnf
在[mysqld]下面加入慢查询的配置语句

long_query_time=1 #超过1秒的会记录
slow_query_log
#log_queries_not_using_indexes=0

重启服务

service mysqld restart

MySQL5.6+ long_query_time 无效 配置文件设置如下:

log_queries_not_using_indexes=0

set global log_queries_not_using_indexes=0;

测试查看日志

#测试
select sleep(2) ;
# 查看日志路径
show variables like '%slow%';

#查看日志分析
[root@116 mysql]# mysqldumpslow -s r -t 10 /var/run/mysqld/mysqld-slow.log

Reading mysql slow query log from /var/run/mysqld/mysqld-slow.log
Count: 1  Time=2.02s (2s)  Lock=0.00s (0s)  Rows=1.0 (1), exam[exam]@localhost
  select sleep(N)

Died at /usr/bin/mysqldumpslow line 162, <> chunk 1.

关于mysqldumpslow

-s, 是表示按照何种方式排序,c、t、l、r分别是按照记录次数、时间、查询时间、返回的记录数来排序,ac、at、al、ar,表示相应的倒叙;
-t, 是top n的意思,即为返回前面多少条的数据;
-g, 后边可以写一个正则匹配模式,大小写不敏感的;

比如
/path/mysqldumpslow -s r -t 10 /database/mysql/slow-log
得到返回记录集最多的10个查询。
/path/mysqldumpslow -s t -t 10 -g “left join” /database/mysql/slow-log
得到按照时间排序的前10条里面含有左连接的查询语句。

超时及进程数

show processlist;
show variables like '%timeout%' ;
#默认28800
set interactive_timeout = 1800 ;
set wait_timeout = 1800 ;
[mysqld]   
wait_timeout=20  
interactive_timeout=20

修改最大连接数

root登录
登录成功后执行以下语句查询当前的最大连接数:

select VARIABLE_VALUE from information_schema.GLOBAL_VARIABLES where VARIABLE_NAME='MAX_CONNECTIONS';

执行以下语句修改最大连接数:

set global max_connections = 3600;

注意:这个方法只是临时的修改了最大连接数,重新启动MySQL服务后就还原了。
要彻底解决问题还是要修改my.cnf配置文件,这里使用VI来修改,输入命令:vi /etc/my.cnf 回车;打开文件后按“i”键进入编辑状态;
在“[mysqld]”下面添加“max_connections=3600”,按Esc键进入命令模式,输入“:wq”回车(保存并退出)。
执行:service mysql restart 重新启动MySQL服务;

MySQL开启慢查询
CentOS下mysql最大连接数设置 1040 too many connection

标签: mysql

发表评论 登录

Top