mysql运维语句

2019-04-15  本文已影响0人  yahzon

按MySQL中执行时间反向排序

mysqladmin processlist --verbose |grep 'Query'|awk -F "|" '{print $7 $2 $9}'|sort -rn -k1

杀死执行时间过长的session

 cat killLongQuerySession.sh  杀掉执行时间超过300的session
#!/bin/bash
executetime=(`mysql -Bse 'show  processlist'| grep 'Query'|awk  '{print $6 " " $1}'|sort -rn|head -1`)  #第6列是运行时间,第一列为session id
time=${executetime[0]}
id=${executetime[1]}
while :
do
    maxtime=300
    if [ $time  -gt  $maxtime  ] ; then
        echo $time $id >> /tmp/killqueryid.log
        mysql -Bse "kill  $id"
    #else
    #   echo $time $id
    fi
    sleep 10 #睡眠10s
done

-- cat killWaitSession.sh 杀掉等待select中有Waiting的会话

#!/bin/bash
for i in `mysql -Bse 'show full processlist' | grep -i select |grep -i "Waiting | awk  '{print $1}'`
do
        mysql -Bse "kill  $i"
done

mysql连接相关:

SHOW PROCESSLIST; ##所有的连接信息
show status like '%max_connections%'; ##mysql最大连接数
set global max_connections=1000 ##重新设置
show variables like '%max_connections%'; ##查询数据库当前设置的最大连接数

show global status like 'Max_used_connections'; ##服务器响应的最大连接数

show status like 'Threads%';

Variable_name Value
Threads_cached    0 ##mysql管理的线程池中还有多少可以被复用的资源
Threads_connected    152 ##打开的连接数
Threads_created    550 ##表示创建过的线程数,如果发现Threads_created值过大的话,表明MySQL服务器一直在创建线程,这也是比较耗资源,可以适当增加配置文件中thread_cache_size值,查询服务器
Threads_running    1 ##激活的连接数,这个数值一般远低于connected数值,准确的来说,Threads_running是代表当前并发数

show variables like 'thread_cache_size'; 
set global thread_cache_size=60;

mysql慢查询

重新生成慢查询日志

SQL> flush slow logs;
SQL> flush general logs;


image.png

查看慢查询参数及是否开启

mysql> show variables like '%slow%';
+---------------------------+-----------------------------------+
| Variable_name             | Value                             |
+---------------------------+-----------------------------------+
| log_slow_admin_statements | OFF                               |
| log_slow_slave_statements | OFF                               |
| slow_launch_time          | 2                                 |
| slow_query_log            | OFF                               |
| slow_query_log_file       | /var/lib/mysql/localhost-slow.log |
+---------------------------+-----------------------------------+
5 rows in set (0.01 sec)

开启慢查询:cnf\inf文件方式

//慢查询时间单位秒,这里表示超过10秒算慢查询
log_query_time=6
slow-query-log=On
slow_query_log_file="mysql_show_query.log"
//记录未使用索引的query
log-query-not-using-indexes=On

开启慢查询:SQL语句方式

 set global slow_query_log=ON;

解析慢查询

# -s:排序方式。c , t , l , r 表示记录次数、时间、查询时间的多少、返回的记录数排序;
#                             ac , at , al , ar 表示相应的倒叙;
# -t:返回前面多少条的数据;
# -g:包含什么,大小写不敏感的;
mysqldumpslow -s r -t 10  /slowquery.log     #slow记录最多的10个语句
mysqldumpslow -s t -t 10 -g "left join"  /slowquery.log     #按照时间排序前10中含有"left join"的
上一篇 下一篇

猜你喜欢

热点阅读