使用sysbench对MySQL进行压力测试

​出自percona公司,是一款多线程系统压测工具,可以根据影响数据库服务器性能的各种因素来评估系统的性能。例如,可以用来测试文件IO,操作系统调度器,内存分配和传输速度,POSIX线程以及数据库服务器等。sysbench支持Lua脚本语言,Lua对各种测试场景的设置可以非常灵活。sysbench支持MySQL,操作系统和硬件的测试。

2.安装与使用

安装:

curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash
sudo yum -y install sysbench

使用:

​ 数据准备

#!/bin/sh
export LD_LIBRARY_PATH=/usr/local/mysql/lib/

. ~/.bash_profile

# 需要启用DEBUG模式时将下面三行注释去掉即可
#set -u
#set -x
#set -e

BASEDIR="/data/sysbench"    #创建sysbench文件目录
if [ ! -d $BASEDIR ]
then
  mkdir $BASEDIR -p
fi
cd $BASEDIR                #进入sysbench文件目录

# 记录所有错误及标准输出到 sysbench.log 中
#exec 3>&1 4>&2 1>> sysbench_prepare.log 2>&1

DBIP=192.168.1.109
DBPORT=3109
DBUSER='proxysql'
DBPASSWD='123456'
NOW=`date +'%Y%m%d%H%M'`
DBNAME="sysbench"
TBLCNT=10          #表数量
WARMUP=300          #预热时间(秒)
DURING=1800        #持续时间(秒)
ROWS=10000000      #每个表中插入1KW行数据
MAXREQ=1000000      #最大请求数为100W

#当达到持续时间或者最大请求数时,这一轮的测试就会停止

#创建sysbench专用的数据库
echo 'now create db'
mysql -h$DBIP -P$DBPORT -u$DBUSER -p$DBPASSWD -e 'create database sysbench'
echo 'create ok'
## 数据准备
echo 'now prepare data'
 sysbench /usr/share/sysbench/oltp_read_only.lua \    #必须附加lua脚本才可以初始化数据
 --mysql-host=$DBIP \
 --mysql-port=$DBPORT \
 --mysql-user=$DBUSER \
 --mysql-password=$DBPASSWD \
 --mysql-db=$DBNAME \
 --db-driver=mysql \
 --tables=10 \
 --table-size=$ROWS \
 --time=$DURING prepare

压测开始

#!/bin/bash
##
##
## 叶金荣, 知数堂培训联合创始人, 资深MySQL专家, MySQL布道师, Oracle MySQL ACE
##
## 几个注意事项:
## 1、运行sysbench的客户机和MySQL DB服务器尽量不要在同一台主机上,也包括一台宿主机上启动两个虚机的情形;
## 2、测试表的数量不宜太少,至少要求20个表以上;
## 3、每个表的数据量不宜太少,通常至少要求1千万以上,当然了,也要根据DB服务器的配置适当调整;
## 4、每次进行基准压测的时长不宜过短,通常要求持续15分钟以上;
## 5、每轮测试完毕后,中间至少暂停5分钟,或者确认系统负载完全恢复空跑状态为止;
## 6、测试DB服务器要是专用的,不能和其他业务混跑,否则测试结果就不靠谱了;
## 7、其余未尽事宜,后续再行补充。
##
## created by yejinrong@zhishutang.com
## 2017/6/3
##
## sysbench项目地址: https://github.com/akopytov/sysbench
##
####################### 2018/02/23  张锐志 ####################################
###叶老师原脚本仅适用于sysbench 0.5版本,sysbench升级到1.0后无法使用,现修改部分语法。

export LD_LIBRARY_PATH=/usr/local/mysql/lib/

. ~/.bash_profile

# 需要启用DEBUG模式时将下面三行注释去掉即可
#set -u
#set -x
#set -e

BASEDIR="/data/sysbench"
if [ ! -d $BASEDIR ]
then
  mkdir $BASEDIR -p
fi
cd $BASEDIR
#清理之前的遗留记录
rm -rf $BASEDIR/logs*
# 记录所有错误及标准输出到 sysbench.log 中
exec 3>&1 4>&2 1>> sysbench.log 2>&1

#时间单位秒
DBIP=192.168.1.109
DBPORT=3109
DBUSER='proxysql'
DBPASSWD='123456'
NOW=`date +'%Y%m%d%H%M'`
DBNAME="sysbench"
REPORT_INTERVAL=1
TBLCNT=10          #表数量
WARMUP=300          #预热时间(秒)
DURING=1800        #持续时间(秒)
ROWS=10000000      #每个表中插入1KW行数据
MAXREQ=1000000      #最大请求数为100W

#当达到持续时间或者最大请求数时,这一轮的测试就会停止

# 并发压测的线程数,根据机器配置实际情况进行调整
THERAD_NUMBER="8 64 128"

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/1e253d939222415d1aae9834a23d9d5f.html