北在南方

每天进步一点点

  • 博客访问: 6636021
  • 博文数量: 1020
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-07 13:14
个人简介

MySQL DBA NoSQL DEVOPS

ITPUB论坛APP

ITPUB论坛APP



APP发帖 享双倍积分

文章分类

全部博文(1020)

微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅
热词专题
【工具】sysbench 0.5 简介 2017-01-08 18:47:15

分类: MySQL

一 前言 
 因为在准备做压力测试方面的工作,看到sysbench 目前最新的版本是0.5 ,相比之前的0.4的版本,最大的变化是 test 参数的改变,在压测MySQL时,新版本中test将取值为 lua脚本,该种方式给压测工作带来很大的灵活性。
二 安装
因为之前的博文中讲述过如何安装sysbench 故本文不做过多讲解,不过需要提示请确保当前系统中是否安装m4  autoconf  automake libtool 这几个包,
如果没有则通过 yum install  -y m4  autoconf  automake libtool安装
获取sysbench然后安装
  1. ./autogen.sh
  2. ./configure --prefix=/opt/sysbench --with-mysql --with-mysql-includes=/opt/mysql/include --with-mysql-libs=/usr/lib64/mysql
  3. make and make install安装完成之后 执行sysbench  --help 查看完整的帮助。
安装完成之后 执行sysbench  --help 查看完整的帮助。
三使用
之前0.5 版本test值是lua脚本,检查一下db压测可以使用那些脚本
  1. [root@rac4 11:32:45 ~/sysbench/sysbench/tests/db]
  2. # ls *.lua
  3. common.lua insert.lua oltp_simple.lua select.lua select_random_ranges.lua update_non_index.lua
  4. delete.lua oltp.lua parallel_prepare.lua select_random_points.lua update_index.lua
看看大家压测的时候用到的最典型的脚本
  1. [root@rac4 11:36:32 ~/sysbench/sysbench/tests/db]
  2. # more update_non_index.lua
  3. pathtest = string.match(test, "(.*/)") or ""
  4. dofile(pathtest .. "common.lua")
  5. function thread_init(thread_id)
  6.    set_vars()
  7. end
  8. function event(thread_id)
  9.    local table_name
  10.    local c_val
  11.    local query
  12.    table_name = "sbtest".. sb_rand_uniform(1, oltp_tables_count)
  13.    c_val = sb_rand_str("###########-###########-###########-###########-###########-###########-###########-###########-###########-###########")
  14.    query = "UPDATE " .. table_name .. " SET c='" .. c_val .. "' WHERE id=" .. sb_rand(1, oltp_table_size)
  15.    rs = db_query(query)
  16. end
如果大家会lua脚本,则可以根据自己的业务场景,简单的定制化压测脚本。

  1. cd /root/sysbench/
  2. /opt/sysbecn/bin/sysbench --test=./sysbench/tests/db/update_non_index.lua --mysql-table-engine=innodb --mysql-db=test --oltp-table-size=5000000 --mysql-user=root --mysql-socket=/srv/my3308/run/mysql.sock --oltp-tables-count=16 prepare
  3. /opt/sysbecn/bin/sysbench --test=./sysbench/tests/db/update_non_index.lua --mysql-table-engine=innodb --mysql-db=test --oltp-table-size=5000000 --mysql-user=root --mysql-socket=/srv/my3308/run/mysql.sock --oltp-tables-count=16 run
  4. /opt/sysbecn/bin/sysbench --test=./sysbench/tests/db/update_non_index.lua --mysql-table-engine=innodb --mysql-db=test --oltp-table-size=5000000 --mysql-user=root --mysql-socket=/srv/my3308/run/mysql.sock --oltp-tables-count=16 cleanup
四 遇到的问题
# ./autogen.sh
libtoolize 1.4+ wasn't found, exiting
# ./autogen.sh
automake 1.10.x (aclocal) wasn't found, exiting
说明需要安装  libtool ,automake 的安装包
安装完上述几个包之后,我还遇到了如下错误:
libtool: link: gcc -W -Wall -Wextra -Wpointer-arith -Wbad-function-cast -Wstrict-prototypes -Wnested-externs -Winline -funroll-loops -Wundef -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -Wcast-align -pthread -O2 -ggdb3 -o sysbench sysbench.o sb_timer.o sb_options.o sb_logger.o db_driver.o  tests/fileio/libsbfileio.a tests/threads/libsbthreads.a tests/memory/libsbmemory.a tests/cpu/libsbcpu.a tests/mutex/libsbmutex.a scripting/libsbscript.a drivers/mysql/libsbmysql.a -L/opt/mysql/lib -lmysqlclient_r scripting/lua/src/liblua.a -ldl -lrt -lm -pthread
/usr/bin/ld: cannot find -lmysqlclient_r
collect2: ld returned 1 exit status
原因是因为自己当前环境中没有安装 mysql-devel 导致没有 libmysqlclient_r.so.16 。解决方法
yum install -y  mysql-devel 


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

杨奇龙2017-01-10 00:08:22

mchdba:sysbench出了0.5 的 version了啊?

已经 出了 很久了 ,之前一直使用的 0.4.12 版本 。新的变化 就是变的灵活了。

回复 | 举报

mchdba2017-01-09 21:59:09

sysbench出了0.5 的 version了啊?

评论热议
请登录后评论。

登录 注册