@@ -40,7 +40,7 @@ sb_test() {
4040
4141 # 创建记录测试信息的表
4242 echo -e " \n---------------\n创建测测试结果表$m_db .$m_table \n---------------"
43- mysql -u$m_user -p$m_passwd -P$m_port -h$m_host << EOF
43+ return= $( mysql -u$m_user -p$m_passwd -P$m_port -h$m_host << EOF 2>&1
4444 CREATE TABLE IF NOT EXISTS $m_db .$m_table (
4545 scenario varchar(30) NOT NULL DEFAULT '' COMMENT '测试场景',
4646 server_name varchar(15) NOT NULL COMMENT '被测DB name',
@@ -55,8 +55,10 @@ sb_test() {
5555 95_pct_time decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '单位毫秒'
5656 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
5757EOF
58+ )
5859 if [ $? -ne 0 ]; then
59- echo " create table $m_db .$m_table failed"
60+ echo $return | sed ' s/[Ww]arning:.*password on the command.*insecure\.//'
61+ # echo "create table $m_db.$m_table failed"
6062 exit -1
6163 fi
6264
7577 echo -e " \nSysbench error! For more information see $log "
7678 exit -1
7779 fi
78- result=$( cat $log | egrep " read:|write:|read/write.*:|total:|total\ time:|approx\..*95.*:" | sed -r -e " s/[0-9]+ \(//g" -e " s/\ per sec\.\)//g" -e " s/m?s$//g" | awk ' {printf("%s
79- ",$NF)}' | sed " s/\ /,/g" | sed " s/,$//g" )
80+ result=$( cat $log | egrep " read:|write:|read/write.*:|total:|total\ time:|approx\..*95.*:" | sed -r -e " s/[0-9]+ \(//g" -e " s/\ per sec\.\)//g" -e " s/m?s$//g" | awk ' {printf("%s ",$NF)}' | sed " s/\ /,/g" | sed " s/,$//g" )
8081
8182 # 测试完成后立刻记录系统一分钟负载值,可近似认为测试过程中proxy的负载抽样
8283 load=$( ssh -p22 $4 " uptime|awk -F: '{print \$ NF}'|awk -F, '{print \$ 1}'" 2> /dev/null)
83-
84+ if [ -s $load ]; then
85+ load=0.00
86+ fi
8487 # 本次测试结果写入数据库
85- mysql -u$m_user -p$m_passwd -P$m_port -h$m_host << EOF
88+ return= $( mysql -u$m_user -p$m_passwd -P$m_port -h$m_host << EOF 2>&1
8689 INSERT INTO $m_db .$m_table (scenario,server_name,test_type,sb_threads,server_load,request_read,
8790 request_write,request_total,request_per_second,total_time,95_pct_time)
8891 VALUES ('$2 ','$4 ','$3 ','$sb_threds ','$load ',$result );
8992EOF
93+ )
9094
9195 if [ $? -ne 0 ]; then
9296 echo -e " \n----------$sb_threds 线程测试,第$i 次插入数据库时失败----------"
93- echo " INSERT VALUES ('$2 ','$4 ','$3 ',$sb_threds ,$load ,$result )"
97+ # 错误输出中排除mysql安全提示
98+ echo $return | sed ' s/[Ww]arning:.*password on the command.*insecure\.//'
99+ # echo "INSERT VALUES ('$2','$4','$3',$sb_threds,$load,$result)"
94100 exit -2
95101 fi
96102 sleep 60 # 让库歇一会,也让一分钟负载能够恢复到测试前的值
101107
102108# 结果分析函数
103109sb_analyse () {
104- mysql -u$m_user -p$m_passwd -h$m_host -P$m_port << EOF 2>&1|grep -v 'password on the command line'
110+ # 2>&1|grep部分为避免安全提示,使用该技巧就无法获取SQL执行的返回码了
111+ mysql -u$m_user -p$m_passwd -h$m_host -P$m_port << EOF 2>&1|grep -v 'password on the command line'
105112 SELECT
106113 scenario,
107114 server_name,
0 commit comments