mysql常见性能测试方式:
1 sysbench
这种的方式是能做基准测试,要先生成一些表,针对这些表操作,脚本设计的表都比较简单
2tpcc-mysql
这个会生成一个仓库的oltp系统,然后进行测试,比sysbench生成的表要复杂,也更加符合线上的场景
3tcpcopy
此种方式直接拷贝线上的流量,使用真实的流量在测试库上运行,可以进行性能测试,对比测试和容量规划
4jmeter
这种的是测试人员使用jmeter生成环境的压测脚本,然后进行压测,dba配合监控性能。
后两种方式可以认为是线上环境的真实情况,总之结合业务场景的测试才是真实的数据,脱离业务的性能测试一般都不完整。
下面介绍下tcpcopy的方式,这种方式无需测试人员的介入,dba可以方便的进行性能相关测试。
相关的连接如下:
https://www.cnblogs.com/Bccd/p/6740149.html
http://imysql.cn/2011/10/22/using-tcpcopy-for-request-replication-or-testing.html
http://blog.youkuaiyun.com/heizistudio/article/details/49761083
https://github.com/session-replay-tools/tcpcopy/issues/173
https://github.com/session-replay-tools/mysql-replay-module
https://www.cnblogs.com/phennry/p/6382755.html?utm_source=itdadao&utm_medium=referral
下面是几个注意点,安装步骤 忽略
1 intercept,注意此处的port是测试环境的port,之前我配置成了线上的,结果包过去了,但是mysql库中一直没有数据,在tcpcopy的日志中一直提示,many connections can’t be established
/usr/local/intercept/sbin/intercept -i eth0 -F ‘tcp and src port 8888’ -d
2 tcpcopy 的使用将本机的3333端口的流量导入50:8888 intercept是48
/usr/local/tcpcopy/sbin/tcpcopy -x 3333-10.xxx.50:8888 -s 10.xxx.48