Linux + MySQL + Sysbench 一键部署和压测教程

1️⃣ 系统准备

  • 系统:Rocky Linux 9.6
  • MySQL 版本:8.0.39
  • 数据库账号:sbtest / 密码 SbTest@123456
  • 数据库名称:sbtest

如果你使用 Windows,也可以通过虚拟机安装 Linux 做测试。


2️⃣ 安装 Sysbench

  1. 配置 Sysbench 官方仓库:
bash 复制代码
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash
  1. 安装 Sysbench:
bash 复制代码
sudo yum -y install sysbench
  1. 验证安装:
bash 复制代码
sysbench --version

正常显示版本号即可。


3️⃣ MySQL 数据库准备

  1. 登录 MySQL 并创建测试库:
bash 复制代码
mysql -u root -p -e "CREATE DATABASE sbtest;"
  1. 确保 sbtest 用户有权限访问 sbtest 数据库:
bash 复制代码
mysql -u root -p -e "GRANT ALL PRIVILEGES ON sbtest.* TO 'sbtest'@'127.0.0.1'; FLUSH PRIVILEGES;"
  1. 测试连接:
bash 复制代码
mysql -u sbtest -pSbTest@123456 -h127.0.0.1 sbtest

成功连接即可。


4️⃣ 构造测试表与测试数据

使用 Sysbench prepare 命令生成数据:

bash 复制代码
sysbench \
  --db-driver=mysql \
  --mysql-host=127.0.0.1 \
  --mysql-port=3306 \
  --mysql-user=sbtest \
  --mysql-password=SbTest@123456 \
  --mysql-db=sbtest \
  --tables=20 \
  --table-size=1000000 \
  oltp_read_write \
  --db-ps-mode=disable \
  prepare

参数说明:

参数 说明
--tables=20 创建 20 张测试表
--table-size=1000000 每张表 100 万条数据
oltp_read_write 测试类型:读写模式
--db-ps-mode=disable 禁用 Prepared Statements
prepare 生成表和数据

执行完成后,会在 sbtest 数据库中生成 sbtest1~sbtest20 测试表。


5️⃣ 执行压测

5.1 综合读写压测

bash 复制代码
sysbench \
  --db-driver=mysql \
  --time=300 \
  --threads=10 \
  --report-interval=1 \
  --mysql-host=127.0.0.1 \
  --mysql-port=3306 \
  --mysql-user=sbtest \
  --mysql-password=SbTest@123456 \
  --mysql-db=sbtest \
  --tables=20 \
  --table-size=1000000 \
  oltp_read_write \
  --db-ps-mode=disable \
  run
  • --time=300:压测 300 秒
  • --threads=10:使用 10 个并发线程
  • --report-interval=1:每秒输出一次统计信息

5.2 只读压测

bash 复制代码
sysbench \
  --db-driver=mysql \
  --time=300 \
  --threads=10 \
  --report-interval=1 \
  --mysql-host=127.0.0.1 \
  --mysql-port=3306 \
  --mysql-user=sbtest \
  --mysql-password=SbTest@123456 \
  --mysql-db=sbtest \
  --tables=20 \
  --table-size=1000000 \
  oltp_read_only \
  --db-ps-mode=disable \
  run

5.3 插入/更新/删除等专项测试

  • 删除性能:
bash 复制代码
oltp_delete
  • 更新索引字段:
bash 复制代码
oltp_update_index
  • 更新非索引字段:
bash 复制代码
oltp_update_non_index
  • 插入性能:
bash 复制代码
oltp_insert
  • 写入性能(纯写):
bash 复制代码
oltp_write_only

命令用法一致,只需把 oltp_read_write 换成对应模式即可。


6️⃣ 清理测试数据

bash 复制代码
sysbench \
  --db-driver=mysql \
  --mysql-host=127.0.0.1 \
  --mysql-port=3306 \
  --mysql-user=sbtest \
  --mysql-password=SbTest@123456 \
  --mysql-db=sbtest \
  --tables=20 \
  --table-size=1000000 \
  oltp_read_write \
  --db-ps-mode=disable \
  cleanup

清理后 sbtest1~sbtest20 表会被删除。


7️⃣ 压测结果说明

Sysbench 会输出每秒统计以及最终汇总报告:

每秒统计示例

复制代码
[ 22s ] thds: 10 tps: 380.99 qps: 7312.66 (r/w/o: 5132.99/1155.86/1321.35) lat (ms, 95%): 21.33 err/s: 0.00 reconn/s: 0.00
  • thds:线程数
  • tps:每秒事务数
  • qps:每秒请求数
  • (r/w/o):读/写/其他请求数
  • lat (ms, 95%):95% 请求延迟
  • err/s:每秒错误请求数
  • reconn/s:每秒重连数

总体汇总示例

复制代码
transactions: 105180 ( 350.6 per sec.)
queries: 2103977 ( 7013.26 per sec.)
Latency (ms): min: 4.32, avg: 13.42, max: 45.56, 95th percentile: 21.33
  • 总事务数、QPS、平均/最大/最小延迟、95% 请求延迟
  • 错误和重连数帮助判断数据库稳定性

压测结果会根据硬件、MySQL 配置、表大小和并发线程数不同而差异很大。


✅ 总结

  1. 安装 Sysbench 并验证
  2. 创建测试数据库 sbtest 和用户 sbtest
  3. 使用 prepare 构造数据表
  4. 使用 run 进行各种类型压测
  5. 使用 cleanup 清理数据
  6. 分析每秒统计和最终汇总报告

相关推荐
我是小灰灰吖10 小时前
QT在线安装器使用指南:从下载到配置完整教程
linux·qt·ubuntu
GlueNa2SiO310 小时前
第十八章 Linux故障排查与恢复
linux·服务器·笔记·学习
灯澜忆梦11 小时前
【MySQL10】进阶篇 | 索引_#2性能优化
数据库·sql·mysql·性能优化
寺中人11 小时前
Linux 基础命令入门实战教程:从零掌握常用操作,新手快速上手
linux·运维·服务器·shell·linux 命令·linux 基础教程·linux 入门
小张成长计划..12 小时前
【Linux】18:基础IO
linux·运维·服务器
MIXLLRED12 小时前
解决——Ubuntu远程桌面指令更换网络
linux·网络·ubuntu
啊哈一半醒13 小时前
Windows 虚拟机搭建 CentOS 全过程(2026 最新版 + 踩坑解决)
linux·windows·centos
wunaiqiezixin13 小时前
MIT 6.S081 lazy 前置篇(lab5):缺页异常、惰性分配、写时复制、页面换出
linux·unix·os·xv6·mit6.s081
Benszen13 小时前
云计算基础-13:Linux网络管理实战-1
linux·运维·云计算
_kerneler14 小时前
Linux tiny RCU
linux