Sybench性能测试MySQL/TIDB
一、安装部署
1.1源码/包:https://github.com/akopytov/sysbench
1.2安装工具Sysbench1.0.20版本
切换root用户执行
方式一: - Debian/Ubuntu系统: curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.deb.sh | sudo bash sudo apt -y install sysbench - RHEL/CentOS系统: curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash sudo yum -y install sysbench - Fedora系统: curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash sudo dnf -y install sysbench |
方式二: ### Debian/Ubuntu ``` shell apt -y install make automake libtool pkg-config libaio-dev # For MySQL support apt -y install libmysqlclient-dev libssl-dev # For PostgreSQL support apt -y install libpq-dev ```
### RHEL/CentOS ``` shell yum -y install make automake libtool pkgconfig libaio-devel # For MySQL support, replace with mysql-devel on RHEL/CentOS 5 yum -y install mariadb-devel openssl-devel # For PostgreSQL support yum -y install postgresql-devel ```
### Fedora ``` shell dnf -y install make automake libtool pkgconfig libaio-devel # For MySQL support dnf -y install mariadb-devel openssl-devel # For PostgreSQL support dnf -y install postgresql-devel ```
## Build and Install ``` shell ./autogen.sh # Add --with-pgsql to build with PostgreSQL support ./configure make -j make install ``` |
二、测试方法
sysbench的基本命令格式为:
sysbench –test=< test-name> [options]… < command>
主要分为三个部分:
1、–test=< test-name>
这部分是指定测试类型,基本类型有fileio,cpu,memory,threads,mutex,oltp(或者指定lua脚本)
2、[options]…
这部分包括测试需要的各种选项,有全局的也有每个测试模式自由的选项
(每个测试模式的选项可以用./sysbench –test=< test-name> help来获取)
3、< command>
控制命令,总共有五个
prepare #准备测试,主要是生成测试数据
run #执行测试,根据选项限制来执行测试
cleanup #清除准备阶段生成的测试数据
help #获取帮助文档
version #获取版本信息
几个重要的全局参数:
–num-threads=N number of threads to use [1] #测试时使用的线程数
–max-requests=N limit for total number of requests [10000] #测试过程最多执行多少次请求
–max-time=N limit for total execution time in seconds [0] #测试过程总共执行多长时间(和–max-requests效果同样,但是两个同时限定的时候谁优先还没有测试)
–report-interval=N periodically report intermediate statistics with a specified interval in seconds. 0 disables intermediate reports [0] #每隔多少秒输出测试概况(这个过程你可以观察到mysql redolog的切换情况)
–db-driver=STRING specifies database driver to use (‘help’ to get list of available drivers) #指定需求测试的数据库类型,默认是mysql
#mysql链接选项
–mysql-host=[LIST,…] MySQL server host [localhost] #mysql主机地址
–mysql-port=N MySQL server port [3306] #mysql端口
–mysql-socket=[LIST,…] MySQL socket #mysql socket文件位置,指定这个之后 其他的链接选项均可以不指定
–mysql-user=STRING MySQL user [sbtest] #用来测试的mysql用户名
–mysql-password=STRING MySQL password [] #密码
–mysql-db=STRING MySQL database name [sbtest] #测试数据库名 默认sbtest
三、MySQL/TIDB数据库读写吞吐量测试
在测试之前请预先创建数据库,并给予测试用户足够的权限。然后使用工具进行:
举例:(命令最后不是prepare,是run了,意思就是运行压测)
(1) 数据准备
sysbench --db-driver=mysql --threads=10 --report-interval=5 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=1q2w!Q@W --mysql-db=test --tables=15 --table_size=500000 oltp_insert --db-ps-mode=disable prepare
(2) 运行测试数据
sysbench --db-driver=mysql --threads=10 --report-interval=5 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=1q2w!Q@W --mysql-db=test --tables=15 --table_size=500000 oltp_insert --db-ps-mode=disable run
(3) 记录输出的测试结果
(4) 清理测试数据
sysbench --db-driver=mysql --threads=10 --report-interval=5 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=1q2w!Q@W --mysql-db=test --tables=15 --table_size=500000 oltp_insert --db-ps-mode=disable cleanup