服务器IO测试,及利用sysbench工具进行mysql oltp性能测试

简介:

背景

      公司打算2018年有把服务迁移到云上的计划,于是选择了市场上的几款云产品来进行比较,其中对磁盘IO与mysql读写性能的测试是很重要的一个环节。故此,针对云产品的磁盘IO以及云数据库的读写,进行了一些粗略的测试。

      这里测试的服务器来自腾讯云,这里暂且不讨论云的性能如何,只针对测试的方法来进行讲诉。


sysbench工具

      测试连续IO,我们可以利用linux的dd命令,但是如何测试随机IO呢?sysbench就是一个用于测试随机IO的很好选择。


安装sysbench:

项目地址:https://github.com/akopytov/sysbench

1
2
3
4
5
6
7
8
9
下载项目到本地,解压:
# unzip master.zip
# cd sysbench-master/
# ./autogen.sh
 
编译参数中指定mysql相关目录
# ./configure --prefix=/usr/local/sysbench --with-mysql-includes=/usr/local/mysql/include --with-mysql-libs=/usr/local/mysql/lib
# echo  '/usr/local/mysql/lib/' >> /etc/ld.so.conf
# ldconfig



安装完sysbench之后,就可以进行IO的测试了,这里测试的磁盘,都是腾讯云的SSD数据盘:



连续IO测试(dd)

测试方法:

数据盘(写):# dd if=/dev/zero of=/opt/data/test.iso bs=1024M count=5 conv=fdatasync

数据盘(读):# dd if=/opt/data/test.iso of=/dev/zero bs=1024M count=5 iflag=direct



随机IO测试(sysbench)

测试方法:

数据盘:

# cd /opt/data/

# sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndrw prepare



Mysql oltp基准测试

利用项目中的oltp.lua文件来准备测试所需要的数据:


# cd /usr/local/src/sysbench-master/tests/include/oltp_legacy/
# sysbench --mysql-host=xx.xx.xx.xx --mysql-port=3306 --mysql-user=root --mysql-password=xxxxxxx --test=oltp.lua --oltp_tables_count=10 --oltp-table-size=1000000 --rand-init=on --db-driver=mysql prepare

--test=oltp.lua 表示调用当前目录下oltp.lua 脚本进行 oltp 模式测试

--oltp_tables_count=10 表示会生成 10 个测试表

--oltp-table-size=100000 表示每个测试表填充数据量为 100000 

--rand-init=on 表示每个测试表都是用随机数据来填充的

--db-driver=mysql 代表使用mysql驱动连接数据库

1.png

2.png

开始测试:

1
# sysbench --mysql-host=xx.xx.xx.xx --mysql-port=3306 --mysql-user=root --mysql-password=xxxxxxx --test=oltp.lua --oltp_tables_count=10 --oltp-table-size=100000 --threads=8 --oltp-read-only=off --report-interval=10 --rand-type=uniform  --time=3600 --max-requests=0 --percentile=99 --db-driver=mysql  run

--num-threads=8 表示发起 8个并发连接

--oltp-read-only=off 表示不要进行只读测试,也就是会采用读写混合模式测试

--report-interval=10 表示每10秒输出一次测试进度报告

--rand-type=uniform 表示随机类型为固定模式,其他几个可选随机模式:uniform(固定),gaussian(高斯),special(特定的),pareto(帕累托)

--time=3600 表示最大执行时长为 1个小时

--max-requests=0 表示总请求数为 0,因为上面已经定义了总执行时长,所以总请求数可以设定为 0;也可以只设定总请求数,不设定最大执行时长

--percentile=99 表示设定采样比例,默认是 95%,即丢弃1%的长请求,在剩余的99%里取最大值


测试结果:

3.png

可以看到相关的测试结果:

Mysql-tps:926.04/S

Mysql-qps:18520.74/s


删除测试数据:

1
# sysbench -mysql-host=xx.xx.xx.xx --mysql-port=3306 --mysql-user=root --mysql-password=xxxxxx  --test=oltp.lua --oltp_tables_count=10 --oltp-table-size=100000 --threads=8 --oltp-read-only=off --report-interval=10 --rand-type=uniform  --time=3600 --max-requests=0 --percentile=99 --db-driver=mysql cleanup









本文转自 icenycmh 51CTO博客,原文链接:http://blog.51cto.com/icenycmh/2056913,如需转载请自行联系原作者
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
存储 缓存 监控
MySQL服务器配置优化:my.cnf参数调优指南
本文深入解析了MySQL核心配置参数及性能优化技巧,涵盖内存结构、调优原则、存储引擎优化、查询性能优化等内容,通过实战案例帮助读者构建高性能MySQL服务器配置,解决常见的性能瓶颈问题。
1536 0
|
JavaScript 数据可视化 Docker
简易制作MCP服务器并测试
本文介绍了如何简易制作并测试MCP服务器,包括环境搭建、代码实现及Docker部署。首先通过uv包创建项目,在main.py中定义MCP服务器及其工具和资源函数。接着详细说明了在Windows上安装uv、配置Docker镜像加速、生成requirements.txt文件以及编写Dockerfile的过程。最后,通过构建和运行Docker容器部署MCP服务器,并使用Node.js工具测试其功能,确保服务器正常工作。此教程适合初学者快速上手MCP服务器的开发与部署。
5239 63
|
关系型数据库 MySQL Linux
在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾
以上就是在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾的步骤。这个过程就像是一场接力赛,数据从MySQL数据库中接力棒一样传递到备份文件,再从备份文件传递到其他服务器,最后再传递回MySQL数据库。这样,即使在灾难发生时,我们也可以快速恢复数据,保证业务的正常运行。
711 28
|
存储 SQL 关系型数据库
服务器数据恢复—云服务器上mysql数据库数据恢复案例
某ECS网站服务器,linux操作系统+mysql数据库。mysql数据库采用innodb作为默认存储引擎。 在执行数据库版本更新测试时,操作人员误误将在本来应该在测试库执行的sql脚本在生产库上执行,导致生产库上部分表被truncate,还有部分表中少量数据被delete。
447 25
|
安全 关系型数据库 MySQL
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
|
安全 关系型数据库 MySQL
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
|
Oracle 关系型数据库 MySQL
使用崖山YMP 迁移 Oracle/MySQL 至YashanDB 23.2 验证测试
这篇文章是作者尚雷关于使用崖山YMP迁移Oracle/MySQL至YashanDB 23.2的验证测试分享。介绍了YMP的产品信息,包括架构、版本支持等,还详细阐述了外置库部署、YMP部署、访问YMP、数据源管理、任务管理(创建任务、迁移配置、离线迁移、校验初始化、一致性校验)及MySQL迁移的全过程。
|
SQL 缓存 关系型数据库
使用温InnoDB缓冲池启动MySQL测试
使用温InnoDB缓冲池启动MySQL测试
373 0
|
SQL 缓存 关系型数据库
MySQL8.4 Enterprise安装Firewall及测试
MySQL8.4 Enterprise安装Firewall及测试
546 0
|
安全 关系型数据库 MySQL
MySQL8使用物理文件恢复MyISAM表测试
MySQL8使用物理文件恢复MyISAM表测试
384 0

推荐镜像

更多