#!/bin/bash

# Script Name: mysql_status_check.sh

# Description: check mysql servers status

# Author: Xinggang Wang - OpsEye.com

# Create Date: 2012/3/30

#获取MySQL所在服务器IP/端口/用户名/密码

read -p "Host=" HOST

read -p "Port=" PORT

read -p "User=" USER

read -sp "Password=" PASSWORD

echo

#默认为127.0.0.1/3306/root

if [ "${HOST}" = "" ]

then

HOST='127.0.0.1'

fi

if [ "${PORT}" = "" ]

then

PORT='3306'

fi

if [ "${USER}" = "" ]

then

USER='root'

fi

#注意密码为空的时候的格式

mysql_list="

$HOST:$PORT:$USER:$PASSWORD

"

#计算函数,提高脚本效率

compute(){

formula="$1"

awk 'BEGIN{printf("%.2f",'$formula')}' 2>/dev/null &&

echo $value || echo NULL

}

for mysql in $mysql_list

{

host=${mysql%%:*}

port=$(echo $mysql|awk -F: '{print $2}')

user=$(echo $mysql|awk -F: '{print $3}')

passwd=${mysql##*:}

[ -z "$passwd" ] && mysql="mysql -h$host -P$port -u$user" ||

mysql="mysql -h$host -P$port -u$user -p$passwd"

unset Uptime

# 把show global status的值赋给相应的参数名称(这里相当于大量的变量赋值操作)

eval $( $mysql -e "show global status" | awk '{print $1"=\x27"$2"\047"}')

[ X = X"$Uptime" ] && continue

# Mysql VER

VER=`$mysql -e"status;"|grep 'Server version'|awk '{print $3}'`

# Uptime

UPTIME=`compute "$Uptime/3600/24"`

# Threads_connected

threads_connected=`compute "$Threads_connected"`

# QPS Questions/Uptime

qps=`compute "$Questions/$Uptime"`

# TPS (Com_commit + Com_rollback)/Uptime

tps=`compute "($Com_commit+$Com_rollback)/$Uptime"`

# Reads Com_select + Qcache_hits

reads=`compute "$Com_select+$Qcache_hits"`

# Writes Com_insert + Com_update + Com_delete + Com_replace

writes=`compute "$Com_insert+$Com_update+$Com_delete+$Com_replace"`

# Read/Writes Ratio reads/writes*100%

rwratio=`compute "$reads/$writes*100"`%

# MyISAM Key_buffer_read_hits (1 - Key_reads/Key_read_requests) * 100

key_buffer_read_hits=`compute "(1-$Key_reads/$Key_read_requests)*100"`%

# MyISAM Key_buffer_write_hits (1 - Key_writes/Key_write_requests) * 100

key_buffer_write_hits=`compute "(1-$Key_writes/$Key_write_requests)*100"`%

# Query_cache_hits (Qcache_hits / (Qcache_hits + Qcache_inserts)) * 100%

query_cache_hits=`compute "$Qcache_hits/($Qcache_hits+$Qcache_inserts)*100"`%

# Innodb_buffer_read_hits (1 - Innodb_buffer_pool_reads/Innodb_buffer_pool_read_requests) * 100

innodb_buffer_read_hits=`compute "(1-$Innodb_buffer_pool_reads/$Innodb_buffer_pool_read_requests)*100"`%

# Thread_cache_hits (1 - Threads_created / Connections) * 100%

thread_cache_hits=`compute "(1-$Threads_created/$Connections)*100"`%

# Slow_queries_per_second Slow_queries / Uptime * 60

slow_queries_per_second=`compute "$Slow_queries/$Uptime"`

# Select_full_join_per_second Select_full_join / Uptime * 60

select_full_join_per_second=`compute "$Select_full_join/$Uptime*60"`

# select_full_join_in_all_select (Select_full_join / Com_select) * 100

select_full_join_in_all_select=`compute "($Select_full_join/$Com_select)*100"`%

# MyISAM Lock Contention (Table_locks_waited / Table_locks_immediate) * 100

myisam_lock_contention=`compute "($Table_locks_waited/$Table_locks_immediate)*100"`%

# Temp_tables_to_disk (Created_tmp_disk_tables / Created_tmp_tables) * 100

temp_tables_to_disk_ratio=`compute "($Created_tmp_disk_tables/$Created_tmp_tables)*100"`%

# print formated MySQL status report

title="******************** MySQL--${HOST}--${PORT} ***********************"

width=$((`echo "$title"|wc -c`-1))

echo "$title"

export IFS=':'

while read name value ;do

printf "%36s :\t%10s\n" $name $value

done

Uptime:$UPTIME days

Threads connected:$threads_connected

QPS:$qps

TPS:$tps

Reads:$reads

Writes:$writes

Read/Writes Ratio:$rwratio

MyISAM Key buffer read hits(>99%):$key_buffer_read_hits

MyISAM Key buffer write hits:$key_buffer_write_hits

Query cache hits:$query_cache_hits

InnoDB buffer read hits(>95%):$innodb_buffer_read_hits

Thread cache hits(>90%):$thread_cache_hits

Slow queries per second:$slow_queries_per_second

Select full join per second:$select_full_join_per_second

Select full join in all select:$select_full_join_in_all_select

MyiSAM lock contention(<1%):$myisam_lock_contention

Temp tables to disk ratio:$temp_tables_to_disk_ratio

EOF

unset IFS

for i in `seq $width`;{ echo -n "*";};echo

}

exit 0

检查mysql数据库脚本_MYSQL 数据库状态检查脚本(Python版)相关推荐

  1. mysql自动异地备份脚本_MYSQL数据库自动本地/异地双备份/MYSQL增量备份

    构建高安全电子商务网站之(网站文件及数据库自动本地/异地双备份)架构图 继续介绍Linux服务器文件备份,数据库备份,数据安全存储相关的电子商务系统架构.针对安全性有多种多样的解决方案,其中数据备份是 ...

  2. centos72安装mysql配置密码_MySQL数据库之170419、Centos7下完美安装并配置mysql5.6

    本文主要向大家介绍了MySQL数据库之170419.Centos7下完美安装并配置mysql5.6 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. linxu环境: centos ...

  3. mysql 索引修复_mysql数据库索引损坏及修复经验分享

    推荐:Windows Server 2003 下配置 MySQL 集群(Cluster)教程这篇文章主要介绍了Windows Server 2003 下配置 MySQL 集群(Cluster)教程,本 ...

  4. mysql 默认密码_mysql数据库安装

    1.下载mysql数据库.我下载的是MySQL8.记住下载存放安装包的路径.双击开始安装. 2.按照下图勾选同意,然后点击下一步.此处没有截图,在网上找的. 3.左边蓝色区域可以看到安装到那一步了,安 ...

  5. mysql数据库崩_mysql数据库崩溃_MySQL

    bitsCN.com 有一个crm系统,其中有做了一个报表统计,其中源码和数据库放在同意一台机子上,数据库用mysql:但在今天突然报错页面提示不能用root@locahost连接 用命令行登录,提示 ...

  6. mysql多源复制相同数据库名称_mysql数据库多源复制方案

    概述 由于目前生产环境的mysql数据库分布在两台服务器,若从单一主从来看,配置很简单,但是需要将两台服务器的数据库同步到一台从库上面,需要进行更多配置和注意事项.多源复制有两种方案,Binlog+P ...

  7. mysql数据库别名_MySQL数据库表名、列名、别名区分大小写的问题

    MySQL在Linux下数据库名.表名.列名.别名大小写规则是这样的: 1.数据库名与表名是严格区分大小写的: 2.表的别名是严格区分大小写的: 3.列名与列的别名在所有的情况下均是忽略大小写的: 4 ...

  8. mysql数据库监控程序_mysql数据库监控利器lepus天兔工具安装和部署

    需要的核心包如下: 以下软件包只需要部署在监控机即可.被监控机无需部署. 1.MySQL 5.0及以上(必须,用来存储监控系统采集的数据) 2.Apache 2.2及以上 (必须,WEB服务器运行服务 ...

  9. 数据库 mysql详解_MySQL数据库详解

    一.数据库概述 1.数据库与文件系统文件系统对比. 数据冗余和不一致性 数据访问 数据格式相对独立 数据完整性和原子性 数据的并发访问 数据的安全性问题 2.数据库概念 1.DBMS:数据库管理系统 ...

  10. mysql 苏勇_MySQL数据库基础学习笔记(整理自苏勇老师的MySQL基础课程视频)

    一.mysql安装及基本配置 1.安装 Mysql官网:www.mysql.com 开源版本(MySQL Community Server) --安装系统自带版本(如果需要更高版本可到官网下载) # ...

最新文章

  1. Unity超级角色控制器研究(四)——地形检测
  2. VS2013安装oepncv2.4.10 以及opencv 3.0.0
  3. Android 微信分享图片
  4. JSON与Protocol Buffers的一些比较
  5. 【华为云技术分享】漫谈LiteOS-Huawei_IoT_Link_SDK_OTA 开发指导
  6. 什么样的架构师才是真正的架构师?
  7. apk html启动图,apk添加启动图(AddApkSplashTools)
  8. TCP_NODELAY详解
  9. 三容水箱液位控制系统_过程控制实验-三容水箱液位控制系统
  10. git clone提示鉴权失败
  11. 有趣的符号图画(颜文字)(I have a AC dream)(神兽护体)(保佑你次次Accepted)
  12. Switch 块、Switch 表达式、Switch 模式匹配,越来越好用的 Switch
  13. SRE-网站可靠性工程
  14. uni-app海报(合成图片)demo
  15. No operator matches the given name and argument types. You might need to add explicit type casts
  16. 这个彩蛋表明,图灵测试评估的也许不是计算机,而是人类……
  17. 在市场买一个小鸡都要20多块,为什么加工好的童子鸡才19块?
  18. 《Dreamweaver CS6 完全自学教程》笔记 第十章:表单的使用
  19. 【面经】2022年软件测试面试题大全(持续更新)附答案
  20. 【报告分享】快消行业巨量引擎营销攻略-群邑GroupM巨量引擎(附下载)

热门文章

  1. ssl 1606 选课
  2. 第二阶段 站立会议 10
  3. iptables 端口转发--内网实现上网
  4. struts2基本介绍
  5. c++ 接口继承和实现继承
  6. xampp 无法启动appche mysql
  7. Linux小工具bc使用
  8. 给datagrid模板页里面的控件动态赋值
  9. 项目maven依赖成功,但编译一直报错:引用项目的类路径找不到
  10. 开放接口API安全性之签名验证【url签名算法】