美文网首页
mysql运维语句

mysql运维语句

作者: yahzon | 来源:发表于2019-04-15 18:57 被阅读0次

    按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"的
    

    相关文章

      网友评论

          本文标题:mysql运维语句

          本文链接:https://www.haomeiwen.com/subject/nyupwqtx.html