IP架构

sysbench部署服务器:172.17.100.107

压测服务器:172.17.100.100

MySQL部署目录:/usr/local/mysql

前置工作

1.完成MySQL的安装(MySQL5.7最新版本自动部署脚本:MySQL5.7自动部署脚本

2.完成动态库文件的安装

yum install -y openssl libtool


#可能遇到的报错

1.在make之前,需要修改lib库,否则会得到一个报错:/usr/bin/ld: cannot find -lmysqlclient_r

因为安装中指向的lib是/usr/local/mysql/lib

cd /usr/local/mysql/lib

ln -s libmysqlclient.so.20.3.9 libmysqlclient_r.so

2.make的时候没有明显错误,执行./sysbench时报错

./sysbench: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory

ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64

如果报错为

/usr/local/sysbench/bin/sysbench: error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory

那么就执行

ln -s /usr/local/mysql/lib/libmysqlclient.so.20 /usr/lib64


sysbench安装部分

①叶总优化版(在MGR测试中有坑...常规版本已经更新在文末)

先说一下这个坑:在对单机测试和主从环境的测试中,叶总的版本可用;

但是在后面完成MGR搭建后采用该sysbench进行测试,会出现1032(主键冲突)的报错,目前暂时没有对该报错进行深入研究,只是确定经过大约反反复复10余次测试(中途重装2次MGR)均出现了报错;

 

下载

在叶总的网站去把sysbench压缩包下载下来

wget http://imysql.com/wp-content/uploads/2014/09/sysbench-0.4.12-1.1.tgz

部署

tar -xf sysbench-0.4.12-1.1.tgz

mv sysbench-0.4.12-1.1 sysbench

cp -r sysbench /usr/local/sysbench

cd /usr/local/sysbench

./autogen.sh

#生成configure文件

./configure --prefix=/usr/local/sysbench/ --with-mysql-includes=/usr/local/mysql/include/ --with-mysql-libs=/usr/local/mysql/lib/

注意此处的includes必须是mysql对应的include目录,libs也是mysql对应的lib目录

完成安装

make&&make install

(确认没有报错)

验证安装

/usr/local/sysbench/bin/sysbench --help

如果出现下列文字,说明部署成功

[root@GTID01 bin]# /usr/local/sysbench/bin/sysbench --help

Missing required command argument.Usage: sysbench [general-options]... --test= [test-options]... command

General options:

--num-threads=N            number of threads to use [1]

--max-requests=N            limit for total number of requests [10000]

...

增加环境变量

echo -e "export PATH=\$PATH:/usr/local/sysbench/bin" >> /etc/profile

source /etc/profile


使用sysbench进行测试的准备工作

前置阅读:sysbench中的lua脚本详解


使用sysbench进行测试

先到被测试的库里建库,建用户,授权(这里通过107去测试100库)

mysql -h 172.17.100.100 -uroot -p

...

create database sbtest; ##因为lua脚本里面这里设置的就是sbtest库,库名需要与脚本里的内容保持一致

create user tpcc@'172.17.100.%' identified by 'tpcc';

grant all privileges on sbtest.* to tpcc@'172.17.100.%';

flush privileges;


会产生报错的操作(将oltp.lua中的mysiam修改成innodb后,会找不到表)

cd /usr/local/sysbench/sysbench/tests/db/

cp oltp.lua oltp_innodb.lua

sed -i 's/myisam/innodb/g' /usr/local/sysbench/sysbench/tests/db/oltp_innodb.lua


测试多表的压测(根据叶总的视频,sysbench支持percona多表,但不支持官方版本,不过我在测试中并未发现官方版本不能使用sysbench的情况)

执行prepare

sysbench --mysql-host=172.17.100.100 --mysql-port=3306 --mysql-user=tpcc --mysql-password=tpcc --test=/usr/local/sysbench/sysbench/tests/db/oltp.lua --oltp_tables_count=10 --oltp-table-size=100000 --rand-init=on prepare

...

sysbench 0.5: multi-threaded system evaluation benchmark

Creating table 'sbtest1'...

Inserting 100000 records into 'sbtest1'

...

Creating table 'sbtest10'...

Inserting 100000 records into 'sbtest10

执行run

sysbench --mysql-host=172.17.100.100 --mysql-port=3306 --mysql-user=tpcc --mysql-password=tpcc --test=/usr/local/sysbench/sysbench/tests/db/oltp.lua --oltp_tables_count=10 --oltp-table-size=100000 --num-threads=4 --oltp-read-only=off --report-interval=5 --rand-type=uniform --max-time=30 --max-requests=0 --percentile=99 run

--num-threads=4    //线程数为4

--max-time=30      //测试时间为30s

--report-interval=5    //报告打印周期为5s

--oltp-read-only=off    //非只读操作测试

--max-requests=0                //最大执行次数这里不做限制,只由max-time进行限制

4线程

 
 

8线程

 
 

16线程

 
 

read: 38024     //读总数,select语句

write: 10864    //写总数,insert、delete、update语句

other: 5432     //其它语句,如commit等

total: 54320           //总的执行语句数

transactions: 2716 (90.31 per sec.)  //总的事物数(★每秒处理事物数:TPS★)

read/write requests: 48888 (1625.67 per sec.)  //读写请求次数(★每秒的读写次数:QPS★)

other operations: 5432 (180.63 per sec.)    //其它操作的每秒执行数

General statistics:

total time: 30.0726s        //总时间

total number of events: 2716    //★事物总数★

total time taken by event execution: 480.7371s   //所有事务耗时相加(不考虑并行因素)

response time:    //应答时间

min: 21.62ms    //最小

avg: 177ms    //平均

max: 598.59ms    //最大

approx. 99 percentile: 421.51ms  //99%语句执行时间

Threads fairness:  //线程公平性

events (avg/stddev): 169.7500/2.38

execution time (avg/stddev): 30.0461/0.02

 

需要重点关注的几个测试结果

★总的事物数,每秒事务数TPS,QPS,时间统计信息(最大、最小、平均、99%以上语句响应时间)★

通过sysbench结果来判定数据库的能力主要还是通过TPS

执行清除

sysbench --mysql-host=172.17.100.100 --mysql-port=3306 --mysql-user=tpcc --mysql-password=tpcc --mysql-db=sbtest --oltp-tables-count=10 --oltp-table-size=100000 --num-threads=16 --max-requests=0 --max-time=30 --report-interval=1 --test=/usr/local/sysbench/sysbench/tests/db/oltp.lua cleanup

sysbench 0.5: multi-threaded system evaluation benchmark

Dropping table 'sbtest1'...

Dropping table 'sbtest2'...

Dropping table 'sbtest3'...


②原始版本(该版本目前只测试了MGR环境,常规环境没有验证过,但应该没有问题)

大体的安装和叶总版本差不多,这里就写的简略一些了

前置条件准备

yum install -y openssl libtool gcc make automake pkgconfig libaio-devel vim-common

下载并安装

wget https://github.com/akopytov/sysbench/archive/master.zip

tar -xf master.zip

mkdir -p /usr/local/sysbench/

cd sysbench-master/

./autogen.sh

./configure --prefix=/usr/local/sysbench/ --with-mysql --with-mysql-includes=/usr/local/mysql/include --with-mysql-libs=/usr/local/mysql/lib

make

make install

#如果后面验证那一步报错是18,就把下面的20换成18,反正我CenOS6.8的环境不执行下面这句都是报20的错

ln -s /usr/local/mysql/lib/libmysqlclient.so.20 /usr/lib64

echo -e "export PATH=\$PATH:/usr/local/sysbench/bin" >> /etc/profile

source /etc/profile

#验证

sysbench --version

#自行去目标数据库完成建用户(tpcc/tpcc),建库(sbtest)

执行测试

sysbench /usr/local/sysbench/share/sysbench/oltp_read_write.lua --mysql-host=172.17.100.101 --mysql-port=3306 --mysql-user=tpcc --mysql-password=tpcc --mysql-db=sbtest --tables=5 --table_size=100000 --mysql_storage_engine=Innodb prepare

sysbench /usr/local/sysbench/share/sysbench/oltp_read_write.lua --mysql-host=172.17.100.101 --mysql-port=3306 --mysql-user=tpcc --mysql-password=tpcc --mysql-db=sbtest --tables=5 --table_size=100000 --mysql_storage_engine=Innodb --threads=3 --time=600 --warmup-time=10 --report-interval=10 --rand-type=uniform run

晒一个测试图(针对MGR组的单主库进行写操作)

 

作者:飞翔的Tallgeese
链接:https://www.jianshu.com/p/d0abdc29cd7a
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

最新文章

  1. java的基础知识运算符
  2. TopShelf&Quartz.Net实现多任务的值守
  3. MemSQL start[c]up Round 2 - online version C. More Reclamation(博弈)
  4. HQueue:基于HBase的消息队列
  5. 高手看了,感觉惨不忍睹——关于“【ACM】杭电ACM题一直WA求高手看看代码”
  6. IDF实验室-简单编程-特殊的日子 writeup
  7. 基于php常用正则表达整理(下)
  8. 核心J2EE模式 - 截取过滤器
  9. nopCommerce 3.9 大波浪系列 之 引擎 NopEngine
  10. MSSQL 如何采用sql语句 获取建表字段说明、字段备注、字段类型、字段长度
  11. WinFormEx
  12. A brief introduction to per-cpu variables
  13. linux之sleep
  14. Spring IOC 低级容器解析
  15. centos7 --kubeadm安装
  16. 【转】(五)unity4.6Ugui中文教程文档-------概要-UGUI Interaction Components
  17. leetcode127
  18. 【原】通过Spring-Session实现不同系统之间的单点登录
  19. 多维尺度变换MDS(Multidimensional Scaling)
  20. Apache ab 测试结果的分析

热门文章

  1. 三年总结出来的11个JPA和Hibernate查询配置小技巧
  2. linux——运维基础,与常用命令
  3. stm32f429 仿真器不能识别芯片
  4. 预处理、编译、汇编、链接、启动代码、相关command
  5. nginx精准反向代理
  6. js中的分页
  7. Jupyter Notebook 插件安装
  8. Python 文件操作(1)
  9. NLP学习(1)---Glove模型---词向量模型
  10. 火狐新版移除developer Toolbar和无法关闭自动更新的解决