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
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

sysbench 压测的更多相关文章

  1. sysbench对MySQL的压测,使用sysbench压测磁盘io

    QPS - query per secondTPS - transaction per second 不是特别关注,每个业务场景中事务标准是不一样的 Ⅰ.sysbench测试框架 Ⅱ.常用测试脚本 [ ...

  2. 05:Sysbench压测-innodb_deadlock_detect参数对性能的影响

    目录 sysbench压测-innodb_deadlock_detect参数对性能的影响 一.OLTP测试前准备 二.进行OLTP测试 三.测试结果解读: 四.关于测试后的结论: 五.关于测试后的性能 ...

  3. 04:Sysbench压测-innodb_flush_log_at_trx_commit,sync_binlog参数对性能的影响

    目录 sysbench压测-innodb_flush_log_at_trx_commit,sync_binlog参数对性能的影响 一.OLTP测试前准备 二.MySQL 数据落盘的过程 三.参数说明 ...

  4. 用sysbench压测MySQL,通过orzdba监控MySQL

    1.1 安装sysbench wget https://codeload.github.com/akopytov/sysbench/zip/0.5 unzip 0.5 cd sysbench-0.5/ ...

  5. sysbench压测过程

    1.sysbench安装(sysbench1.1.0)  [root@master soft]# ls sysbench1.1.0.zip sysbench1.1.0.zip 解压: [root@ma ...

  6. 【MySQL】sysbench压测服务器及结果解读

    主要压测范围包括CPU测试.磁盘IO测试.线程测试.OLTP测试等,那么sysbench就可以满足我们的压测需求.下面我们简单来看下sysbench的安装使用以及压测结果的解读. 一.sysbench ...

  7. sysbench压测自装MySQL数据库

    压测准备 测试机器 2vCPUs | 4GB | s6.large.2 CentOS 7.6 64bit 建立测试库 create database test_db character set utf ...

  8. 使用sysbench压测磁盘io

    Ⅰ.sysbench安装 cd /usr/local/src yum -y install make automake libtool pkgconfig libaio-devel git clone ...

  9. sysbench压测mysql

    MySQL数据库测试 select   1.先创建数据库test,再准备数据 time /usr/local/sysbench/bin/sysbench --test=oltp --num-threa ...

随机推荐

  1. MySQL的启动方式

    MySQL常用启动方式: windows 和linux 上都可以使用 mysql --help|grep my.cnf 过滤查看关于MySQL对应 配置文件my.cnf [root@bqh-118 b ...

  2. 2.Vue调试工具vue-devtools的安装步骤和使用

    1.安装步骤: 打开谷歌浏览器设置 -->扩展程序 -->勾选开发者模式 --->加载已解压的扩展程序 --->选择“chrome扩展”文件夹即可:

  3. python-----将图片与标注的xml坐标水平翻转

    我们做机器学习的时候,总会用到很多训练集,然后我们的数据比较少的时候,就可以将图片翻转标注.代码如下: #!/usr/bin/env python # -*- coding: utf-8 -*- # ...

  4. Splay树详解

    更好的阅读体验 Splay树 这是一篇宏伟的巨篇 首先介绍BST,也就是所有平衡树的开始,他的China名字是二叉查找树. BST性质简介 给定一棵二叉树,每一个节点有一个权值,命名为 ** 关键码 ...

  5. 记录一些python内置函数

    整理一些内置函数,平时用得比较少,但是时不时遇上,记录一下吧(嘻嘻(●'◡'●)) 1.help() 查看模块or函数的帮助文档 help(pandas) #模块 Help on package pa ...

  6. Python3+Appium学习笔记06-noReset参数

    百度很多文章说noReset这个参数是用来防止重复安装app的.可能这是以前的用法.目前最新版本appium默认是清除session信息,并且不会删除应用的. ​ noReset这个参数,根据appi ...

  7. JVM之Java运行时数据区(线程隔离区)

    来源 JVM会在会在执行Java程序过程中把所管理的内存划分为若干区域,主要包括程序计数器(Program Counter Register),虚拟机栈(VM Stack),本地方法栈(Native ...

  8. Django内置email发送邮件

    ###Django内置email发送邮件 ####1.首先在settings.py文件设置相关参数 ```python STATIC_URL = '/static/' # 设置邮件域名 EMAIL_H ...

  9. linux学习-添加多个硬盘和lvm配置

    原文 一般,服务器会有多个硬盘,一块硬盘分区安装操作系统,另外多块硬盘分区做存储使用.现在测试添加多块硬盘分区,使用lvm进行实现动态磁盘分配. 1.新增硬盘查看 fdisk -l 可以看到新增的两块 ...

  10. 2018VUE面试题总结

      Vue面试题 一:什么是MVVM MVVM是是Model-View-ViewModel的缩写,Model代表数据模型,定义数据操作的业务逻辑,View代表视图层,负责将数据模型渲染到页面上,Vie ...