MySQL基线测试

HH MySQL1 12,8536字数 3347阅读11分9秒阅读模式

前言

其实MySQL基线测试已经不是什么新鲜的话题了,这应该是作为DBA的基本的技能了。大家都知道使用一些工具去做(sysbench、tpcc-mysql、tpc-c等等)。本篇文章不是告诉你相关的工具具体怎么用,更不是告诉你工具输出的报告应该如何去看,这些在现在的互联网中一搜一大把。本篇文章告诉你的是一个流程,做一个测试我们需要做一些什么、如何提取我们需要的信息,并生成可视化报告。在之后的监控我们就可以使用输出的报告作为基准,从而来定位问题和瓶颈。

收集数据的重要

测试最重要的就是在测试过程中收集的数据,各个方面的数据越多对以后的参照对比越有利。比如收集磁盘IO、CPU、网络情况等等。如果少收集了相关资源数据很可能在以后就不知道相关资源的瓶颈。如你没有收集IO资源的使用变化情况。你就不知道你的MySQL的写能力到达什么时候是个瓶颈,就不知道要如何去预防了。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-test-for-baseline/

我使用的工具

  • tpcc-mysqlPercona的一款流行的开元的测试工具。(当然也可以使用sysbench,这里建议使用sysbench 5,有很多新的特性)。
  • orzdba阿里的一款监测MySQL相关性能的工具。
  • nmonIBM的一款搜集监测IO、CPU等信息的工具。
  • nmon analyser和nmon配套使用的分析工具。
  • tpcc_report.py笔者使用python编写的,用来分析tpcc-mysql测试完输出的信息并输出报表。
  • orzdba_report.py笔者使用python编写的,用来分析orzdba监控输出的数据并生成报表。

感谢那些为开源做贡献的团队们。向他们致敬!  ^_^文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-test-for-baseline/

由于笔者编写的Python脚本使用到了pandas和matplotlib,所以使用之前需要安装好这些模块。笔者为了方便没有去安装这些模块,而是使用Canopy这个免费版的集成套件,只要安装了他就能使用相关模块了。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-test-for-baseline/

软件版本:文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-test-for-baseline/

软件 版本 说明
Canopy 1.6.1-rh5-64
Python 2.7.10 Canopy中自带的

测试步骤

1、使用tpcc-mysql加载数据到MySQL中文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-test-for-baseline/

# 创建45个数据仓库并填充数据
##          |hostname:port| |dbname| |user| |password| |WAREHOUSES|
./tpcc_load 127.0.0.1:3306   tpcc45   root   root       45

2、运行orzdba 收集mysql相关性能数据,生成log.xxxx-xx-xx收集数据文件文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-test-for-baseline/

这边我对orzdba稍微做了些修改,为了获得更加连续的数据文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-test-for-baseline/

修改 193 行为 if ( $mycount%100000000 == 0 ) {文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-test-for-baseline/

./orzdba -mysql -innodb_rows -C 500000 -i 5 \
  -S /u01/tmp/mysql.sock \
  -L /tmp/orzdba.log -logfile_by_day &

3、运行nmon收集相关数据,生成centos7_xxxxxx_xxxx.nmon收集数据文件文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-test-for-baseline/

./nmon_x86_64_centos7 -s5 -c7200 -f -m /tmp/

4、运行tpcc-mysql进行测试文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-test-for-baseline/

./tpcc_start -h127.0.0.1 \
  -P3306                 \
  -dtpcc45               \
  -uroot                 \
  -proot                 \
  -w45                   \
  -c32                   \
  -r30                   \
  -l3600                 \
  -ftpcc45_20150220 > /tmp/report_2016-02-21.log

等待tpcc-mysql运行完以后我们就开始分析收集的数据来生成相关的报表了。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-test-for-baseline/

5、使用orzdba_report.py分析orzdba.log.xxxx-xx-xx文件生成报表文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-test-for-baseline/

orzdba_report.py源码:orzdba_report文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-test-for-baseline/

python orzdba_report.py orzdba.log.2016-02-21

查看生产的数据和图片文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-test-for-baseline/

[root@centos7 tmp]# ll pic_2016-02-21_21-26-57
total 2044
-rw-r--r--. 1 root root 262490 Feb 21 21:27 -----bytes----.jpg
-rw-r--r--. 1 root root 345998 Feb 21 21:26 -Hit%-.jpg
-rw-r--r--. 1 root root 390717 Feb 21 21:27 ---innodb rows status---.jpg
-rw-r--r--. 1 root root 318976 Feb 21 21:26 orzdba_report.xls
-rw-r--r--. 1 root root 445983 Feb 21 21:26 -QPS- -TPS.jpg
-rw-r--r--. 1 root root 317215 Feb 21 21:27 ------threads------.jpg

使用图形工具打开'---innodb rows status---.jpg'分析图片文件文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-test-for-baseline/

mysql文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-test-for-baseline/

6、使用tpcc_report.py分析report_xxxx-xx-xx.log生产报表和图片文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-test-for-baseline/

tpcc_report.py源码:tpcc_report文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-test-for-baseline/

python tpcc_report.py report_2016-02-21.log

查看生产的数据和图片文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-test-for-baseline/

[root@centos7 tmp]# ll tpcc_2016-02-21_22-05-51
total 1636
-rw-r--r--. 1 root root  12531 Feb 21 22:05 90%respons_time.csv
-rw-r--r--. 1 root root 446487 Feb 21 22:05 90%respons_time.jpg
-rw-r--r--. 1 root root   5345 Feb 21 22:05 late_count.csv
-rw-r--r--. 1 root root 375425 Feb 21 22:05 late_count.jpg
-rw-r--r--. 1 root root  12611 Feb 21 22:05 max_respons_time.csv
-rw-r--r--. 1 root root 429396 Feb 21 22:05 max_respons_time.jpg
-rw-r--r--. 1 root root  38722 Feb 21 22:05 report_2016-02-21.log
-rw-r--r--. 1 root root   7865 Feb 21 22:05 test_count.csv
-rw-r--r--. 1 root root 327258 Feb 21 22:05 test_count.jpg

使用图形工具打开' test_count.jpg '分析图片文件文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-test-for-baseline/

mysql

7、使用nmon_analyser来分析centos7_xxxxxx_xxxx.nmon生产报表

注意:之前使用WPS打开nmon analyser v47.xlsm文件来分析的时候会报错,因此一直以来我就使用office2007了。不知道现在WPS能不能用了。

nmon analyser v47.xlsm分析出一个excel文件这个文件里面有分析的数据和图表。如下显示的是磁盘IO相关信息:

mysql

mysql

还有其他很多信息如CPU、NET等等的这边就不一一列举了。

结束语

MySQL基线测试并不是只是光光使用一下测试工具就行的了。重要的还是要能收集到竟可能多的信息。其实,只在MySQL层面做基线测试还是远远不够的。还应该在应用程序的层面来测试,从而查看MySQL的性能表现等等。

这边只是介绍了一下整个基线测试的基本流程,具体工具的使用还需要大家自行去了解了。

nmon相关文件:nmon_analyser_v47 、centos7_160221_2008centos7_160221_2008.nmon(xls)

orzdba相关文件:orzdba.logpic_2016-02-21_21-26-57.tar

tpcc-mysql相关文件:report_2016-02-21tpcc_2016-02-21_22-05-51.tar

 

昵称:HH
QQ:275258836
ttlsa群交流沟通(QQ群②:6690706 QQ群③:168085569 QQ群④:415230207(新) 微信公众号:ttlsacom)

感觉本文内容不错,读后有收获?

逛逛衣服店,鼓励作者写出更好文章。

weinxin
我的微信
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
HH
  • 本文由 发表于 13/04/2016 00:18:47
  • 转载请务必保留本文链接:https://www.ttlsa.com/mysql/mysql-test-for-baseline/
评论  1  访客  1
    • 呵呵
      呵呵 9

      rm -rf * 后
      人生真是寂寥如雪……

    评论已关闭!