#!/bin/sh

#ocpyang@126.com

export black='\033[0m'

export boldblack='\033[1;0m'

export red='\033[31m'

export boldred='\033[1;31m'

export green='\033[32m'

export boldgreen='\033[1;32m'

export yellow='\033[33m'

export boldyellow='\033[1;33m'

export blue='\033[34m'

export boldblue='\033[1;34m'

export magenta='\033[35m'

export boldmagenta='\033[1;35m'

export cyan='\033[36m'

export boldcyan='\033[1;36m'

export white='\033[37m'

export boldwhite='\033[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\n"  "$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 '\t' '{ 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\n",$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}

mysql性能检查脚本-部分的更多相关文章

  1. keepalived健康检查及双主MySQL健康检查脚本

    一.http检查 HTTP_GET:工作在第5层,向指定的URL执行http请求,将得到的结果用md5加密并与指定的md5值比较看是否匹配,不匹配则从服务器池中移除:此外还可以指定http返回码来判断 ...

  2. linux系统mysql连接检查脚本

    为了便于检查ECS服务器内部搭建的mysql或者RDS的mysql数据库,编写了一个mysql测试脚本,对于不熟悉命令行操作的朋友出现问题时可以检测一下.       脚本下载地址: http://j ...

  3. 一个简易的MysQL性能查询脚本

    如下: #!/bin/sh mysqladmin -P3306 -uroot -p ext |\ awk -F"|" \ "BEGIN{ count=0; }" ...

  4. MySQL性能分析脚本

    #!/usr/bin/python #!coding:utf-8 import mysql.connector as connector import json """ ...

  5. 简易的mysql性能查询脚本

    #!/bin/bash mysqladmin -P3306 -uroot -p -h127. -r -i ext |\ awk -F"|" \ "BEGIN{ count ...

  6. MYSQL性能优化的最佳20+条经验

    MYSQL性能优化的最佳20+条经验 2009年11月27日 陈皓 评论 148 条评论  131,702 人阅读 今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数 ...

  7. 借助 MySQLTuner 优化 MySQL 性能(转载的一篇文章)

    MySQLTuner 是一个 Perl 脚本,可以用来分析您的 MySQL 性能,并且基于收集到的信息给出相应的优化建议.这样子,您就可以调整 my.cnf 从而优化您的 MySQL 设置. 这边只是 ...

  8. 二十种实战调优MySQL性能优化的经验

    二十种实战调优MySQL性能优化的经验 发布时间:2012 年 2 月 15 日 发布者: OurMySQL 来源:web大本营   才被阅读:3,354 次    消灭0评论     本文将为大家介 ...

  9. MySQL性能优化的21个最佳实践

    http://www.searchdatabase.com.cn/showcontent_38045.htm MySQL性能优化的21个最佳实践 1. 为查询缓存优化你的查询 大多数的MySQL服务器 ...

随机推荐

  1. K-D树问题 HDU 4347

    K-D树可以看看这个博客写的真心不错!这里存个版 http://blog.csdn.net/zhjchengfeng5/article/details/7855241 HDU 4349 #includ ...

  2. TortoiseSVN安装使用【转】

    转自:http://www.cnblogs.com/rushoooooo/archive/2011/04/29/2032346.html TortoiseSVN是windows平台下Subversio ...

  3. 重启nginx后丢失nginx.pid,如何重新启动nginx

    http://blog.csdn.net/llnara/article/details/8691049 一句话结论: /alidata/server/nginx/sbin/nginx -c /alid ...

  4. Mac-item+zsh

    $brew cask install iterm2 $ sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/m ...

  5. HTML5-坦克大战一完成坦克上下左右移动的功能(一)

    坦克大战一完成坦克上下左右移动的功能 <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...

  6. 【 Zabbix 】nginx监控及故障重启服务

    zabbix agentd 端配置: nginx.conf 配置: location /ngx_status { stub_status on; access_log off; allow 10.0. ...

  7. 无向图Tarjan&&求树直径

    Tarjan可以用来求无向图的割点和割边 割边:\(dfn[u]<low[v]\) 割点:\(low[v]>=dfn[u]\) 求树的直径 做法1:BFS 从任意一个点开始BFS,然后找到 ...

  8. import详解

    试想一下 在工作中今年在一个项目中可能会导入某一个目录下的模块文件,那这个时候怎么样才能让Python解释器能够找到该模块进行调用呢? - 将这个模块拷贝一份到当前使用目录下. 这种方式让模块太冗余 ...

  9. import module与from module import * 两种模块导入有何区别

    #原创,转载请留言联系 区别1 import module 引用共享变量时,要使用module.变量名. 而from module import * 直接使用变量名即可 区别2(有点绕) import ...

  10. 【C++】继承时构造函数和析构函数

    1. 顺序 先调用基类的构造函数,再调用派生类构造函数.析构顺序相反. 2. 构造函数 派生类 不用初始化列表调用基类构造函数->调用基类的默认构造函数 派生类 使用初始化列表调用基类带参构造函 ...