SysBench工具介绍

SysBench是一个跨平台且支持多线程的模块化基准测试工具,用于评估系统在运行高负载的数据库时相关核心参数的性能表现。可绕过复杂的数据库基准设置,甚至在没有安装数据库的前提下,快速了解数据库系统的性能。

安装方法

yum install gcc gcc-c++ autoconf automake make libtool bzr mysql-devel git mysql
git clone https://github.com/akopytov/sysbench.git
##从Git中下载Sysbench
cd sysbench
##打开sysbench目录
git checkout 1.0.18
##切换到sysbench 1.0.18版本
./autogen.sh
##运行autogen.sh
./configure --prefix=/usr --mandir=/usr/share/man
make
##编译
make install

测试用例

OLTP读写混合场景压测

1. 准备数据

#  # --mysql-host 填入mysql映射的ip,--mysql-port 填入映射的端口,用户填入测试的用户 --mysql-password 填入密码  --mysql-db 填入测试数据库,没有的话需要事先创建  --table_size表空间单位mb threads= 填入线程数
sysbench --db-driver=mysql --mysql-host=XXX --mysql-port 填入映射的端口=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=2500 --tables=100 --events=0 --time=300  --threads=XXX oltp_read_write prepare

2.  运行压测

#  --mysql-host 填入mysql映射的ip,--mysql-port 填入映射的端口,用户填入测试的用户 --mysql-password 填入密码  --mysql-db 填入测试数据库,没有的话需要事先创建  --table_size表空间单位mb threads= 填入线程数
sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=25000 --tables=100 --events=0 --time=300   --threads=XXX --percentile=95 --report-interval=1 oltp_read_write run

3. 清理数据

#  --mysql-host 填入mysql映射的ip,--mysql-port 填入映射的端口,用户填入测试的用户 --mysql-password 填入密码  --mysql-db 填入测试数据库,没有的话需要事先创建  --table_size表空间单位mb threads= 填入线程数
sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=25000 --tables=100 --events=0 --time=300   --threads=XXX --percentile=95  oltp_read_write cleanup

OLTP只写场景压测

1. 准备数据

#  # --mysql-host 填入mysql映射的ip,--mysql-port 填入映射的端口,用户填入测试的用户 --mysql-password 填入密码  --mysql-db 填入测试数据库,没有的话需要事先创建  --table_size表空间单位mb threads= 填入线程数
sysbench --db-driver=mysql --mysql-host=XXX --mysql-port 填入映射的端口=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=4500 --tables=100 --events=0 --time=300  --threads=XXX  oltp_write_only prepare

2.  运行压测

#  --mysql-host 填入mysql映射的ip,--mysql-port 填入映射的端口,用户填入测试的用户 --mysql-password 填入密码  --mysql-db 填入测试数据库,没有的话需要事先创建  --table_size表空间单位mb threads= 填入线程数
sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=25000 --tables=100 --events=0 --time=300   --threads=XXX --percentile=95 --report-interval=1 oltp_write_only run

3. 清理数据

#  --mysql-host 填入mysql映射的ip,--mysql-port 填入映射的端口,用户填入测试的用户 --mysql-password 填入密码  --mysql-db 填入测试数据库,没有的话需要事先创建  --table_size表空间单位mb threads= 填入线程数
sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=25000 --tables=100 --events=0 --time=300   --threads=XXX --percentile=95  oltp_write_only cleanup

OLTP只读场景压测

1. 准备数据

#  # --mysql-host 填入mysql映射的ip,--mysql-port 填入映射的端口,用户填入测试的用户 --mysql-password 填入密码  --mysql-db 填入测试数据库,没有的话需要事先创建  --table_size表空间单位mb threads= 填入线程数
sysbench --db-driver=mysql --mysql-host=XXX --mysql-port 填入映射的端口=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=2500 --tables=100 --events=0 --time=300  --threads=XXX oltp_read_only prepare

2.  运行压测

#  --mysql-host 填入mysql映射的ip,--mysql-port 填入映射的端口,用户填入测试的用户 --mysql-password 填入密码  --mysql-db 填入测试数据库,没有的话需要事先创建  --table_size表空间单位mb threads= 填入线程数
sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=25000 --tables=100 --events=0 --time=300   --threads=XXX --percentile=95 --report-interval=1 oltp_read_only run

3. 清理数据

#  --mysql-host 填入mysql映射的ip,--mysql-port 填入映射的端口,用户填入测试的用户 --mysql-password 填入密码  --mysql-db 填入测试数据库,没有的话需要事先创建  --table_size表空间单位mb threads= 填入线程数
sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=25000 --tables=100 --events=0 --time=300   --threads=XXX --percentile=95  oltp_read_only  cleanup