Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1706036
  • 博文数量: 107
  • 博客积分: 1715
  • 博客等级: 上尉
  • 技术积分: 3168
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-18 18:42
个人简介

阿里巴巴DBA,原去哪儿网DBA。专注于MySQL源码研究、DBA运维、CGroup虚拟化及Linux Kernel源码研究等。 github:https://github.com/HengWang/ Email:king_wangheng@163.com 微博 :@王恒-Henry QQ :506437736

文章分类

全部博文(107)

文章存档

2014年(2)

2013年(38)

2012年(67)

分类: Mysql/postgreSQL

2012-04-27 11:27:17

一、编写目的

该脚本主要用于采集TPCC-MySQL进行测试时,采集必要的数据信息,包括tpc值、iomemcpu,以及mysql内部的数据等信息。主要用于之后的测试分析来用。

二、脚本功能说明

1、主要函数功能

get_key_value():用于解析--args=XXX形式的XXX值。

usage():用于输出帮助信息。

parse_options():用于解析输入参数的有效性,并对输入的参数,调用get_key_value获取响应的值。

2、主流程分析

初始化基本参数;

调用parse_options对输入的所有参数进行解析,得到参数的值;

iostat查看io使用状况;

vmstat查看虚拟内存使用状况,可以从中看到是否有swap出现;

mysqladmin查看mysql内部各个参数的值;

scripts/innodb_stat.shTPCC-MySQL提供的一个脚本,用于采集innodb的状态;

mysqladmin variables 输出当前mysql的配置参数;

sysctl 用于输出系统的一些内核参数

 

三、脚本内容

       具体脚本如下所示:

点击(此处)折叠或打开

  1. #! /bin/sh

  2. get_key_value()
  3. {
  4.     echo "$1" | sed 's/^--[a-zA-Z_-]*=//'
  5. }

  6. usage()
  7. {
  8. cat <<EOF
  9. Usage: $0 [-h] [configure-options]
  10.   -?, --help Show this help message.
  11.   --mysqldir=<VALUE> Set the mysql directory
  12.   --host=<VALUE> Set the host name.
  13.   --port=<> Set the port number.
  14.   --database=<VALUE> Set the database to test.
  15.   --user=<VALUE> Set the user name.
  16.   --password=<VALUE> Set the password.
  17.   --wh=<> Set the warehouse number.
  18.   --conns=<> Set the connection number.
  19.   --wtime=<> Set the warm time (s)
  20.   --rtime=<> Set the running time (s)
  21.   --interval=<> Set the report interval time (S)
  22.   --output=<VALUE> Set the report output directory
  23. Note: this script is intended for internal use by developers.
  24. EOF
  25. }

  26. parse_options()
  27. {
  28.   while test $# -gt 0
  29.   do
  30.     case "$1" in
  31.     --host=*)
  32.       HOST=`get_key_value "$1"`;;
  33.     --mysqldir=*)
  34.       MYSQLDIR=`get_key_value "$1"`;;
  35.     --port=*)
  36.       PORT=`get_key_value "$1"`;;
  37.     --database=*)
  38.       DATABASE=`get_key_value "$1"`;;
  39.     --user=*)
  40.       USER=`get_key_value "$1"`;;
  41.     --password=*)
  42.       PASSWORD=`get_key_value "$1"`;;
  43.     --wh=*)
  44.       WAREHOUSE=`get_key_value "$1"`;;
  45.     --conn=*)
  46.       CONNECTIONS=`get_key_value "$1"`;;
  47.     --wtime=*)
  48.       WARMTIME=`get_key_value "$1"`;;
  49.     --rtime=*)
  50.       UNTIME=`get_key_value "$1"`;;
  51.     --interval=*)
  52.       INTERVAL=`get_key_value "$1"`;;
  53.     --output=*)
  54.       OUTPUT=`get_key_value "$1"`;;
  55.     -? | --help)
  56.       usage
  57.       exit 0;;
  58.     *)
  59.       echo "Unknown option '$1'"
  60.       exit 1;;
  61.     esac
  62.     shift
  63.   done
  64. }

  65. #############################################
  66. MYSQLDIR=/opt/percona_mysql5.5.21
  67. HOST=localhost
  68. PORT=3306
  69. DATABASE=""
  70. USER=root
  71. PASSWORD=""
  72. WAREHOUSE=0
  73. CONNECTIONS=16
  74. WARMTIME=1800
  75. RUNTIME=3600
  76. INTERVAL=10
  77. OUTPUT=/tmp/


  78. parse_options "$@"

  79. iostat -mxt $INTERVAL $(($RUNTIME/$INTERVAL+1)) >> $OUTPUT/iostat_$HOST_$PORT_$DATABASE_$WAREHOUSE_$CONNECTIONS_$WAITTIME_$RUNTIME.txt &

  80. vmstat $INTERVAL $(($RUNTIME/$INTERVAL+1)) >> $OUTPUT/vmstat_$HOST_$PORT_$DATABASE_$WAREHOUSE_$CONNECTIONS_$WAITTIME_$RUNTIME.txt &

  81. $MYSQLDIR/bin/mysqladmin ext -i$INTERVAL >> $OUTPUT/mysqladminext_$HOST_$PORT_$DATABASE_$WAREHOUSE_$CONNECTIONS_$WAITTIME_$RUNTIME.txt &

  82. ./scripts/innodb_stat.sh $RUNTIME >> $OUTPUT/innodb_$HOST_$PORT_$DATABASE_$WAREHOUSE_$CONNECTIONS_$WAITTIME.txt &

  83. mysqladmin variables >> $OUTPUT/mysql_variables.res
  84. sysctl -a >> $OUTPUT/sysctl.res

  85. if [ "$DATABASE" = "" ]
  86. then
  87.   echo "Database must be a valid value"
  88.   exit
  89. fi
  90. if test $WAREHOUSE = 0
  91. then
  92.   echo "Warehouse number must greater than 0"
  93. fi

  94. ./tpcc_start -h $HOST -d $DATABASE -u $USER -w $WAREHOUSE -c $CONNECTIONS -r $WARMTIME -l $RUNTIME -i $INTERVAL >> $OUTPUT/tpcc_$HOST_$PORT_$DATABASE_$WAREHOUSE_$CONNECTIONS_$WAITTIME_$RUNTIME.txt &

阅读(2831) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~