sysbench对linux服务器上mysql8.0版本性能压测
一: 安装sysbench工具
sysbench是一个模块化的、跨平台、多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况,它主要包括以下几种方式的测试:磁盘io性能、数据库性能、内存分配及传输速度等,
它主要包括以下几种方式的测试:
1、cpu性能
2、磁盘io性能
3、调度程序性能
4、内存分配及传输速度
5、POSIX线程性能
6、数据库性能(OLTP基准测试)
目前sysbench主要支持 MySQL,pgsql,oracle 这3种数据库
本文只介绍针对Mysql进行压测
1. 安装sysbench
sudo yum -y install sysbench
2. 查看是否安装成功
二:创建测试数据库
1. 登录mysql
如果是docker安装的数据库
进入MySQL容器
使用docker exec
命令进入正在运行的MySQL容器。假设你的容器名为mysql
2.输入数据库的密码登录
3. 创建测试库
create database 你的库名,我的是sbtest,创建成功使用show databases;命令查看数据库是否存在
三:使用sysbench创建测试表跟表数据
数据存在之后开始创建数据表跟数据
在创建表跟数据之前因为首次使用susbench工具 对于它的命令还不太熟悉我把踩过的坑意义一 一 讲明
基于sysbench创建数据表跟数据的时候网上有各种诠释
先上我的命令行
sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=你的mysql用户名 --mysql-password=你的mysql密码 --mysql-db=创建的数据库 --db-driver=mysql --tables=20 --table-size=1000000 --report-interval=10 --threads=128 --time=300 prepare
先看第一句:sysbench /usr/share/sysbench/oltp_read_write.lua 这句话的意思在你sysbench安装目录中查找读或者写的 .lua,一定要进入目录中查找是否有这个文件(我的是默认安装),如果你指定了安装目录则到你指定的目录中查找,
特别注意的是每个 --xxx-xx=xxx 之间 一定要注意空格
=号后面的值一定不要留空格
如果出现Unrecognized command line argument: prepare 一定是语法有错
网上有很多加了 --test=./tests/db/oltp.lua --oltp_tables_count=10 我到安装目录下一看没有这两果断的去掉
如果出现了以下问题一定是 --mysql-host地址的问题 一开始我用的localhost 后来该成了127.0.0.1
最后解释一下命令行的意思:
命令行中的参数说明:
--db-driver=mysql:代表数据库驱动
--time=300:这个就是说连续访问300秒
--threads=128:这个就是说用128个线程模拟并发访问
--report-interval=10:这个就是说每隔10秒输出一下压测情况
--mysql-host=你的数据库链接地址 --mysql-port=数据库端口 --mysql-user=用户名 --mysql-password=数据库密码:数据库的用户和密码等信息
--mysql-db=tssysbench --tables=20 --table_size=1000000:这一串的意思,就是说在sbtest这个库里,构造20个测试表,每个测试表里构造100万条测试数据,测试表的名字会是类似于sbtest1,sbtest2这个样子的
/usr/share/sysbench/oltp_read_write:这个就是说,执行oltp数据库的读写测试
最后有一个prepare,意思是参照这个命令的设置去构造出来我们需要的数据库里的数据,他会自动创建20个测试表,每个表里创建100万条测试数据,所以这个工具是非常的方便的。
下面是执行过程中的输出信息
执行完之后用navicat 连接一下服务器上的数据库刷新表结构看看或者用命令行看一下也可以
四:数据库性能测试
数据库读写性能测试,将执行指令最后的prepare修改成run:
sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-host=数据库地址 --mysql-port=mysql端口 --mysql-user=你的mysql用户名 --mysql-password=你的mysql密码 --mysql-db=你的库 --db-driver=mysql --tables=20 --table-size=1000000 --report-interval=10 --threads=64 --time=30 run
最终输出结果(此图仅供参考)