zoukankan      html  css  js  c++  java
  • mysql性能检查脚本-部分


    #!/bin/sh
    #ocpyang@126.com

    export black='33[0m'
    export boldblack='33[1;0m'
    export red='33[31m'
    export boldred='33[1;31m'
    export green='33[32m'
    export boldgreen='33[1;32m'
    export yellow='33[33m'
    export boldyellow='33[1;33m'
    export blue='33[34m'
    export boldblue='33[1;34m'
    export magenta='33[35m'
    export boldmagenta='33[1;35m'
    export cyan='33[36m'
    export boldcyan='33[1;36m'
    export white='33[37m'
    export boldwhite='33[1;37m'


    cecho ()

    ## -- Function to easliy print colored text -- ##
     
     # Color-echo.
     # 參数 $1 = message
     # 參数 $2 = color
    {
    local default_msg="No message passed."

    message=${1:-$default_msg} # 假设$1没有输入则为默认值default_msg.
    color=${2:-black}  # 假设$1没有输入则为默认值black.

    case $color in
     black)
       printf "$black" ;;
     boldblack)
       printf "$boldblack" ;;
     red)
       printf "$red" ;;
     boldred)
       printf "$boldred" ;;
     green)
       printf "$green" ;;
     boldgreen)
       printf "$boldgreen" ;;
     yellow)
       printf "$yellow" ;;
     boldyellow)
       printf "$boldyellow" ;;
     blue)
       printf "$blue" ;;
     boldblue)
       printf "$boldblue" ;;
     magenta)
       printf "$magenta" ;;
     boldmagenta)
       printf "$boldmagenta" ;;
     cyan)
       printf "$cyan" ;;
     boldcyan)
       printf "$boldcyan" ;;
     white)
       printf "$white" ;;
     boldwhite)
       printf "$boldwhite" ;;
    esac
      printf "%s "  "$message"
      tput sgr0   # tput sgr0即恢复默认值
      printf "$black"

    return
    }


    cechon ()  

     # Color-echo.
     # 參数1 $1 = message
     # 參数2 $2 = color
    {
    local default_msg="No message passed."
        # Doesn't really need to be a local variable.

    message=${1:-$default_msg} # 假设$1没有输入则为默认值default_msg.
    color=${2:-black}  # 假设$1没有输入则为默认值black.

    case $color in
     black)
      printf "$black" ;;
     boldblack)
      printf "$boldblack" ;;
     red)
      printf "$red" ;;
     boldred)
      printf "$boldred" ;;
     green)
      printf "$green" ;;
     boldgreen)
      printf "$boldgreen" ;;
     yellow)
      printf "$yellow" ;;
     boldyellow)
      printf "$boldyellow" ;;
     blue)
      printf "$blue" ;;
     boldblue)
      printf "$boldblue" ;;
     magenta)
      printf "$magenta" ;;
     boldmagenta)
      printf "$boldmagenta" ;;
     cyan)
      printf "$cyan" ;;
     boldcyan)
      printf "$boldcyan" ;;
     white)
      printf "$white" ;;
     boldwhite)
      printf "$boldwhite" ;;
    esac
      printf "%s"  "$message"
      tput sgr0   # tput sgr0即恢复默认值
      printf "$black"

    return
    }

    #set mysql evn
    MYSQL_USER=system  #mysql的username
    MYSQL_PASS='password'  #mysql的登录用户密码
    MYSQL_HOST=192.168.2.188

    #1.the server infomation
    echo "the system basic infomation:"
    echo "***********************************************************************"
    echo
    hostname=`hostname`  #主机名

    ipaddress=`ifconfig |grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'` #IP地址

    gtway=`cat  /etc/sysconfig/network|grep GATEWAY|awk -F "=" '{print $2}'` #网关

    cpuinfo=`cat /proc/cpuinfo|grep "name"|cut -d: -f2 |awk '{print "*"$1,$2,$3,$4}'|uniq -c` #cpu

    phmem=`dmidecode | grep -A 16 "Memory Device$" |grep Size:|grep -v "No Module Installed"|awk '{print "*" $2,$3}'|uniq -c` #物理内存数量

    sysver=`cat /etc/issue | head -1` #--系统版本号


    kerver=`uname -a  |awk '{print $3}'`  #内核版本号


    #mem usage
    mem_total=$(free -m |grep Mem|awk '{print $2}')
    mem_used=$(free -m |grep Mem|awk '{print $3}')
    mem_rate=`expr $mem_used/$mem_total*100|bc -l`

    cechon "1.1 server hostname is:" red
    echo ${hostname}

    cechon "1.2 server ipaddree is: " red
    echo  ${ipaddress}

    cechon "1.3 server gateway is: " red
    echo ${gtway}


    cechon "1.4 server cpuinfo is: " red
    echo ${cpuinfo}


    cechon "1.5 server Physical memory number is: " red
    echo ${phmem}


    cechon "1.6 server version  is: " red
    echo ${sysver}


    cechon "1.7 server system kernel version is: " red
    echo ${kerver}

    cechon "1.8 server Physical memory number is:" red
    echo  ${phmem}


    cechon "1.9 server  memory usage rate is: " red
    echo ${mem_rate:0:5}%


    cechon "1.10 server  disk usage  is: " red
    echo
    #disk usage
    df -H |awk -F ' ' '{ print $1,$2,$3,$4,$5,$6}'

    echo
    cechon "1.11 server  CPU load average  is: " red
    echo
    uptime | awk 'BEGIN{print "1min, 5min, 15min"}   {print $10,$11,$12}'

    echo
    cechon "1.12 server  started services   is: " red
    echo
    chkconfig --list | grep on
    echo

    echo
    cechon "1.13 server  CPU free   is: " red
    top -b -n 1 | grep Cpu | awk '{print $5}' | cut -f 1 -d "."
    echo


    cechon "1.14 mysql ESTABLISHED connect   is: " red
    echo
    netstat -an -t | grep ":3306" | grep ESTABLISHED | awk '{printf "%s %s ",$5,$6}' | sort |sed  's/^::ffff://'
    echo

    cechon "1.15 server  ESTABLISHED  TCP connect number   is: " red
    echo
    netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
    echo

    echo
    echo "***********************************************************************"
    echo


    #2.mysql版本号
    v_01="select @@version;"
    v_02="v02.`date +%Y%m%d%H%M%S`.txt"
    mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e"${v_01}" >${v_02}
    v_03=`cat ${v_02} | grep -v @@version`
    cechon "2.1 mysql runing version is: ${v_03} " red
    echo "                                                                           "
    rm -rf ${v_02}
    mysql_port=`cat /usr/local/mysql/my.cnf |grep port| sed -n 1p`
    cechon "2.2 mysql port is: ${mysql_port} " red
    echo "                                                                           "


    #3.系统mysql的进程数
    mysql_processnum=`ps -ef | grep "mysql" | grep -v "grep" | wc -l`
    cechon "3. mysql process number is: ${mysql_processnum} " red
    echo "                                                                           "


    #4.client连接的mysql进程数

    conn_01="conn01.`date +%Y%m%d%H%M%S`.txt"
    conn_02="show processlist;"
    mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e"${conn_02}" | grep -v Id >${conn_01}
    client_conn_num=`cat ${conn_01} |wc -l`
    cechon "4. mysql client connect number  is: ${client_conn_num} " red
    echo "                                                                           "
    rm -rf ${conn_01}

    #5.QPS(每秒事务量)

    qps_01="show global status like 'Questions';"
    qps_re="qpsre.`date +%Y%m%d%H%M%S`.txt"
    mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e"${qps_01}" |grep -v Variable_name
    |cut -f 2 >${qps_re}
    qps_02=`cat ${qps_re}`
    qps_03=`cat /proc/uptime |awk '{print $1}'`  
    qps_04=`awk 'BEGIN{print '${qps_02}' / '${qps_03}'}'` #shell默认不支持浮点运算
    cechon "5. current mysql server QPS is: ${qps_04:0:5} " red
    echo "                                                                           "
    rm -rf ${qps_re}

    #6.TPS(每秒事务量)
    tps_01="show  status where Variable_name in('Com_commit'); "
    tps_02="show  status where Variable_name in('Com_rollback'); "
    tps_re01="tpsre01.`date +%Y%m%d%H%M%S`.txt"
    tps_re02="tpsre02.`date +%Y%m%d%H%M%S`.txt"
    mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e"${tps_01}" |grep -v Variable_name
    |cut -f 2 >${tps_re01}
    mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e"${tps_02}" |grep -v Variable_name
    |cut -f 2 >${tps_re02}
    tps_03=`cat ${tps_re01}`
    tps_04=`cat ${tps_re02}`
    tps_sum=`awk 'BEGIN{print '${tps_03}' + '${tps_04}'}'` #shell默认不支持浮点运算
    tps_uptime=`cat /proc/uptime |awk '{print $1}'`
    tps_avg=`awk 'BEGIN{print '${tps_sum}' / '${tps_uptime}'}'` #shell默认不支持浮点运算
    cechon "6. current mysql server TPS is: ${tps_avg} " red
    echo "                                                                           "
    rm -rf ${tps_re01}
    rm -rf ${tps_re02}


    #7.key Buffer 命中率

    #key_buffer_read_hits = (1-key_reads / key_read_requests) * 100%

    kbrd_01="show  status like 'Key_reads'; "
    kbrd_02="show  status like 'Key_read_requests'; "
    kbrd_re01="kbrd01.`date +%Y%m%d%H%M%S`.txt"
    kbrd_re02="kbrd02.`date +%Y%m%d%H%M%S`.txt"
    mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e"${kbrd_01}" |grep -v Variable_name
    |cut -f 2 >${kbrd_re01}
    mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e"${kbrd_02}" |grep -v Variable_name
    |cut -f 2 >${kbrd_re02}

    kbrd_03=`cat ${kbrd_re01}`
    kbrd_04=`cat ${kbrd_re02}`


    if [ "${kbrd_03}" -eq 0 ];then
     cechon "7.1 there is no any value!" green
     echo "                                                                           "
    else
     kbrd_05=`awk 'BEGIN{print '${kbrd_03}' / '${kbrd_04}'}'` #shell默认不支持浮点运算
     kbrd_06=`awk 'BEGIN{print '1-${kbrd_05}'}'` #shell默认不支持浮点运算
     key_buffer_read_hits=`awk 'BEGIN{print '${kbrd_06}' * 100}'`
     cechon "7.1 current mysql key_buffer_read_hits is: ${key_buffer_read_hits:0:5}% " red
     echo "                                                                           "
    fi
     

    rm -rf ${kbrd_re01}
    rm -rf ${kbrd_re02}


    #key_buffer_write_hits = (1-key_writes / key_write_requests) * 100%

    kbwd_01="show  status like 'Key_writes'; "
    kbwd_02="show  status like 'Key_write_requests'; "
    kbwd_re01="kbwd01.`date +%Y%m%d%H%M%S`.txt"
    kbwd_re02="kbwd02.`date +%Y%m%d%H%M%S`.txt"
    mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e"${kbwd_01}" |grep -v Variable_name
    |cut -f 2 >${kbwd_re01}
    mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e"${kbwd_02}" |grep -v Variable_name
    |cut -f 2 >${kbwd_re02}

    kbwd_03=`cat ${kbwd_re01}`
    kbwd_04=`cat ${kbwd_re02}`

    if [ "${kbwd_03}" -eq 0  ] ;then
     cechon "7.2 there is no any value!" green
     echo "                                                                           "
    else
     kbwd_05=`awk 'BEGIN{print '${kbwd_03}' / '${kbwd_04}'}'` #shell默认不支持浮点运算
     kbwd_06=`awk 'BEGIN{print '1-${kbwd_05}'}'` #shell默认不支持浮点运算
     key_buffer_write_hits=`awk 'BEGIN{print '${kbwd_06}' * 100}'`
     cechon "7.2 current mysql key_buffer_write_hits is: ${key_buffer_write_hits:0:5}% " red
     echo "                                                                           "
    fi

    rm -rf  ${kbwd_re01}
    rm -rf  ${kbwd_re02}

    #8.InnoDB Buffer命中率
    #Innodb_buffer_read_hits = (1 - innodb_buffer_pool_reads / innodb_buffer_pool_read_requests) * 100%
    innob_01="show  status like 'Innodb_buffer_pool_reads'; "
    innob_02="show  status like 'Innodb_buffer_pool_read_requests'; "
    innob_re01="innob_re01.`date +%Y%m%d%H%M%S`.txt"
    innob_re02="innob_re02.`date +%Y%m%d%H%M%S`.txt"
    mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e"${innob_01}" |grep -v Variable_name
    |cut -f 2 >${innob_re01}
    mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e"${innob_02}" |grep -v Variable_name
    |cut -f 2 >${innob_re02}

    innob_03=`cat ${innob_re01}`
    innob_04=`cat ${innob_re02}`
    if [ "${innob_03}" -eq 0  ] ;then
     cechon "8. there is no any value!" green
     echo "                                                                           "
    else
     innob_05=`awk 'BEGIN{print '${innob_03}' / '${innob_04}'}'` #shell默认不支持浮点运算
     innob_06=`awk 'BEGIN{print '1-${innob_05}'}'` #shell默认不支持浮点运算
     innodb_buffer_read_hits=`awk 'BEGIN{print '${innob_06}' * 100}'`
     cechon "8. current mysql Innodb_buffer_read_hits is: ${innodb_buffer_read_hits:0:5}% " red
     echo "                                                                           "
    fi
    rm -rf ${innob_re01}
    rm -rf ${innob_re02}


    #9.Query Cache命中率
    #Query_cache_hits =((Qcache_hits/(Qcache_hits+Qcache_inserts+Qcache_not_cached))*100)

    qc_01="show  status like 'Qcache_hits'; "
    qc_02="show  status like 'Qcache_inserts'; "
    qc_03="show  status like 'Qcache_not_cached'; "

    qc_re01="qc_re01.`date +%Y%m%d%H%M%S`.txt"
    qc_re02="qc_re02.`date +%Y%m%d%H%M%S`.txt"
    qc_re03="qc_re03.`date +%Y%m%d%H%M%S`.txt"

    mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e"${qc_01}" |grep -v Variable_name
    |cut -f 2 >${qc_re01}
    mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e"${qc_02}" |grep -v Variable_name
    |cut -f 2 >${qc_re02}
    mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e"${qc_03}" |grep -v Variable_name
    |cut -f 2 >${qc_re03}


    qc_04=`cat ${qc_re01}`
    qc_05=`cat ${qc_re02}`
    qc_06=`cat ${qc_re03}`

    if [ "${qc_04}" -eq 0  ] ;then
     cechon "9. there is no any value!" green
     echo "                                                                           "
    else
     qc_07=`awk 'BEGIN{print '${qc_04}' + '${qc_05}' + '${qc_06}' }'`
     qc_08=`awk 'BEGIN{print  '${qc_04}'/'${qc_07}'}'`
     query_cache_hits=`awk 'BEGIN{print '${qc_08}' * 100}'`
     cechon "9. current mysql query_cache_hits is: ${query_cache_hits:0:5}% " red
     echo "                                                                           "
    fi
    rm -rf ${qc_re01}
    rm -rf ${qc_re02}
    rm -rf ${qc_re03}


     

  • 相关阅读:
    计算机组成原理
    爬取斗图
    视频爬取
    经典段子爬取
    爬取哈哈笑话
    爬取昵图网
    爬取校花网
    python操作docker
    正则表达式
    UUID
  • 原文地址:https://www.cnblogs.com/cynchanpin/p/6776368.html
Copyright © 2011-2022 走看看