sysbench进行MySQL性能测试

yum install gcc gcc-c++ autoconf automake make libtool bzr mysql-devel git
git clone https://github.com/akopytov/sysbench.git
cd sysbench
git checkout 1.0.18
./autogen.sh
./configure --prefix=/usr --mandir=/usr/share/man
make && make install

 

show variables like '%innodb_buffer_pool_size%'

OLTP读写混合场景压测

步骤一:准备数据
sysbench --db-driver=mysql --mysql-host=127.0.0.1 --mysql-port=19126 --mysql-user=root --mysql-password='Admin@dev()' --mysql-db=sbtest --table_size=25000 --tables=100 --events=0 --time=300 --threads=10 oltp_read_write prepare
步骤二:运行workload
sysbench --db-driver=mysql --mysql-host=127.0.0.1 --mysql-port=19126 --mysql-user=root --mysql-password='Admin@dev()' --mysql-db=sbtest --table_size=25000 --tables=100 --events=0 --time=300 --threads=10 oltp_read_write run
步骤三:清理数据
sysbench --db-driver=mysql --mysql-host=127.0.0.1 --mysql-port=19126 --mysql-user=root --mysql-password='Admin@dev()' --mysql-db=sbtest --table_size=25000 --tables=100 --events=0 --time=300 --threads=10 oltp_read_write cleanup

OLTP只读场景压测

步骤一:准备数据
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 oltp_read_only prepare

步骤二:运行workload
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 --skip-trx=1 --report-interval=1 oltp_read_only run

步骤三:清理数据
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

OLTP只写场景压测

步骤一:准备数据
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 oltp_write_only prepare

步骤二:运行workload
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

步骤三:清理数据
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

SysBench参数说明
参数 说明
db-driver 数据库引擎。
mysql-host RDS实例连接地址。
mysql-port RDS实例连接端口。
mysql-user RDS实例账号。
mysql-password RDS实例账号对应的密码。
mysql-db RDS实例数据库名。
table_size 测试表大小。
tables 测试表数量。
events 测试请求数量。
time 测试时间。
threads 测试线程数。
percentile 需要统计的百分比,默认值为95%,即请求在95%的情况下的执行时间。
report-interval 表示N秒输出一次测试进度报告,0表示关闭测试进度报告输出,仅输出最终的报告结果。
skip-trx 是否跳过事务。
1:跳过
0:不跳过

 

 

阿里云  MySQL性能测试报告模板

请将测试后的结果,在以下模板中进行填写,替换下文中的“xxxx”部分。

一、测试环境

1、RDS实例信息
数据库版本:xxxx,例如:MySQL 8.0
实例规格:xxxx,例如:rds.mysql.c2.xlarge
地域可用区:xxxx,例如:华东1(杭州)可用区H
类型及系列:xxxx,例如:常规实例 (高可用版)
存储类型:xxxx,例如:本地SSD盘
检查是否开启高性能模板:可在"服务可用性"页面中查看,可以从RDS控制台上获取

2、ECS自建数据库信息
主库:
数据库版本:xxxx,例如:MySQL 8.0
数据库规格:xxxx,请填写innodb_buffer_pool_size的大小
所在可用区:xxxx,请填写ECS的可用区 例如:华东 1 可用区 H
ECS实例规格: xxxx,例如:ecs.g6.8xlarge
ECS的CPU:xxxx,例如:32核
ECS的内存:xxxx,例如:128 GiB

备库:
数据库版本:xxxx,例如:MySQL 8.0
数据库规格:xxxx, 请填写innodb_buffer_pool_size的大小
所在可用区:xxxx,请填写ECS的可用区 例如:华东 1 可用区 H
ECS实例规格: xxxx,例如:ecs.g6.8xlarge
ECS的CPU:xxxx,例如:32核
ECS的内存:xxxx,例如:128 GiB

3、sysbench端的ECS实例信息

实例规格: xxxx,例如:ecs.g6.8xlarge
所在可用区:xxxx,例如:华东 1 可用区 H
CPU:xxxx,例如:32核
内存:xxxx,例如:128 GiB

注释:以上信息可以从ECS控制台上获取

4、sysbench和数据库间的ping延迟

(1)压测机和RDS的网络延迟:xxxx ,例如:0.1ms
(2)压测机和自建数据库的网络延迟:xxxx ,例如:0.1ms

 

二、测试结果

1、读写混合场景

sysbench线程数:xxxx,例如:16
TPS:xxxx,例如:99999
QPS:xxxx,例如:99999
RT: xxxx,例如:50.00ms
压测命令:
例如: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=16 --percentile=95 --report-interval=1 oltp_read_write run

压测结果截图:请截图

 

 

2、只读场景

sysbench线程数:xxxx,例如:16
TPS:xxxx,例如:99999
QPS:xxxx,例如:99999
RT: xxxx,例如:50.00ms
压测命令:
例如: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=16 --percentile=95 --report-interval=1 oltp_read_write run
压测结果截图:请截图

3、只写场景

sysbench线程数:xxxx,例如:16
TPS:xxxx,例如:99999
QPS:xxxx,例如:99999
RT: xxxx,例如:50.00ms
压测命令:
例如: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=16 --percentile=95 --report-interval=1 oltp_read_write run
压测结果截图:请截图