其实MySQL基线测试已经不是什么新鲜的话题了,这应该是作为DBA的基本的技能了。大家都知道使用一些工具去做(sysbench、tpcc-mysql、tpc-c等等)。本篇文章不是告诉你相关的工具具体怎么用,更不是告诉你工具输出的报告应该如何去看,这些在现在的互联网中一搜一大把。本篇文章告诉你的是一个流程,做一个测试我们需要做一些什么、如何提取我们需要的信息,并生成可视化报告。在之后的监控我们就可以使用输出的报告作为基准,从而来定位问题和瓶颈。
测试最重要的就是在测试过程中收集的数据,各个方面的数据越多对以后的参照对比越有利。比如收集磁盘IO、CPU、网络情况等等。如果少收集了相关资源数据很可能在以后就不知道相关资源的瓶颈。如你没有收集IO资源的使用变化情况。你就不知道你的MySQL的写能力到达什么时候是个瓶颈,就不知道要如何去预防了。
感谢那些为开源做贡献的团队们。向他们致敬! ^_^
由于笔者编写的Python脚本使用到了pandas和matplotlib,所以使用之前需要安装好这些模块。笔者为了方便没有去安装这些模块,而是使用Canopy这个免费版的集成套件,只要安装了他就能使用相关模块了。
软件版本:
软件 | 版本 | 说明 |
Canopy | 1.6.1-rh5-64 | |
Python | 2.7.10 | Canopy中自带的 |
1、使用tpcc-mysql加载数据到MySQL中
1 2 3 | # 创建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收集数据文件
这边我对orzdba稍微做了些修改,为了获得更加连续的数据
修改 193 行为 if ( $mycount%100000000 == 0 ) {
1 2 3 | . / 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收集数据文件
1 | . / nmon_x86_64_centos7 – s5 – c7200 – f – m / tmp / |
4、运行tpcc-mysql进行测试
1 2 3 4 5 6 7 8 9 10 | . / tpcc_start – h127 . 0.0.1 \ – P3306 \ – dtpcc45 \ – uroot \ – proot \ – w45 \ – c32 \ – r30 \ – l3600 \ – ftpcc45_20150220 > / tmp / report_2016 – 02 – 21.log |
等待tpcc-mysql运行完以后我们就开始分析收集的数据来生成相关的报表了。
5、使用orzdba_report.py分析orzdba.log.xxxx-xx-xx文件生成报表
orzdba_report.py源码:orzdba_report
1 | python orzdba_report .py orzdba .log . 2016 – 02 – 21 |
查看生产的数据和图片
1 2 3 4 5 6 7 8 | [ 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’分析图片文件
6、使用tpcc_report.py分析report_xxxx-xx-xx.log生产报表和图片
tpcc_report.py源码:tpcc_report
1 | python tpcc_report .py report_2016 – 02 – 21.log |
查看生产的数据和图片
1 2 3 4 5 6 7 8 9 10 11 | [ 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 ‘分析图片文件
7、使用nmon_analyser来分析centos7_xxxxxx_xxxx.nmon生产报表
注意:之前使用WPS打开nmon analyser v47.xlsm文件来分析的时候会报错,因此一直以来我就使用office2007了。不知道现在WPS能不能用了。
nmon analyser v47.xlsm分析出一个excel文件这个文件里面有分析的数据和图表。如下显示的是磁盘IO相关信息:
还有其他很多信息如CPU、NET等等的这边就不一一列举了。
MySQL基线测试并不是只是光光使用一下测试工具就行的了。重要的还是要能收集到竟可能多的信息。其实,只在MySQL层面做基线测试还是远远不够的。还应该在应用程序的层面来测试,从而查看MySQL的性能表现等等。
这边只是介绍了一下整个基线测试的基本流程,具体工具的使用还需要大家自行去了解了。
nmon相关文件:nmon_analyser_v47 、centos7_160221_2008、centos7_160221_2008.nmon(xls)
orzdba相关文件:orzdba.log、 pic_2016-02-21_21-26-57.tar
tpcc-mysql相关文件:report_2016-02-21、 tpcc_2016-02-21_22-05-51.tar
文章转载来自:trustauth.cn