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. 分析每秒统计和最终汇总报告

相关推荐
她说彩礼65万3 分钟前
C语言 整形提升及算数转换
linux·服务器·c语言
RenPenry4 分钟前
2026 在Linux上搭建CS2插件服务器
linux·运维·服务器·cs2·debian13
Deitymoon24 分钟前
linux——TCP编程
linux·服务器
云栖梦泽31 分钟前
Linux内核与驱动:9.驱动中的中断机制
linux
格林威33 分钟前
Windows 实时性补丁(RTX / WSL2)
linux·运维·人工智能·windows·数码相机·计算机视觉·工业相机
xuxie9935 分钟前
N22 key驱动
linux·运维·服务器
c++逐梦人43 分钟前
Linux多线程
linux·服务器
开心码农1号1 小时前
RabbitMQ 生产运维命令大全
linux·开发语言·ruby
IMPYLH1 小时前
Linux 的 nl 命令
linux·运维·服务器·bash
咖喱o1 小时前
路由策略
linux·服务器·网络