#!/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. [bzoj4602][Sdoi2016]齿轮——dfs

    题目 现有一个传动系统,包含了N个组合齿轮和M个链条.每一个链条连接了两个组合齿轮u和v,并提供了一个传动比x : y.即如果只考虑这两个组合齿轮,编号为u的齿轮转动x圈,编号为v的齿轮会转动y圈.传 ...

  2. win 7 浏览器被篡改小插曲

    今天下班回家,打开台式机发现IE,火狐都被篡改了.作为运维都会有点强迫症.这是个桌面系统,实在是没兴趣捣鼓.但是还是没办法,经常要用.等我下次有空了,直接换linux好了. 于是开始排查问题吧: 1. ...

  3. python算法:LinkedList(双向线性链表)的实现

    LinkedList是一个双向线性链表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer).由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一 ...

  4. js实现侧边栏信息展示效果

    目前的网页都右侧边栏,有的是在左侧,类似于导航栏,如一些购物商城,还有一些是在网页的右下角,一般是提示客服信息和微信/QQ等服务. 这里都涉及到一个动画效果的展示,即点击侧边栏时会在侧边栏的右侧或者左 ...

  5. 网关协议:CGI、FastCGI、WSGI

    CGI就像是一座桥,把网页和WEB服务器中的执行程序连接起来,它把HTML接收的指令传递给服务器的执行程序,再把服务器执行程序的结果返还给HTML页. CGI CGI即通用网关接口(Common Ga ...

  6. nginx [error] open() "/usr/local/nginx/logs/nginx.pid" failed的解决

    今天关闭nginx后重启不了: nginx -s reload 结果报错: nginx: [error] open() "/usr/local/nginx/logs/nginx.pid&qu ...

  7. 将datatable导出为excel的三种方式(转)

    一.使用Microsoft.Office.Interop.Excel.DLL 需要安装Office 代码如下:  2         public static bool ExportExcel(Sy ...

  8. 神器mimikatz使用命令方法总结

    神器mimikatz使用命令方法总结 文章地址:http://www.isharepc.com/300.html mimikatz是一款功能强大的轻量级调试神器,通过它你可以提升进程权限注入进程读取进 ...

  9. python3 while循环及for循环

    yueer = 18 count = 0 while count < 3: yueerage = int(input('悦儿多大呢:')) if yueerage == yueer: print ...

  10. NOIP2011选择客栈

    n家客栈,1~n编号,每家按照某一种色调装饰,共k种,每家客栈都设有咖啡店,每家咖啡店均有各自的最低消费两位游客,要求住在颜色相同,且不是同一个客栈,在两人的客栈间选择咖啡店(包括他们住的客栈),要求 ...