Centos install sysbench and test MySQL performance (tps, qps...)

Command line input

curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash
sudo yum -y install sysbench

Download and install sysbench

Check the version after installation

sysbench --version

If the version number is displayed, the installation is correct

Insert picture description here

Check the parameters for testing MySQL (this tool can not only be used to test MySQL, but also CPU, etc.)

Insert picture description here


Turn over

mysql 选项:
   --mysql-host=[LIST,...] MySQL 服务器主机 [localhost]
   --mysql-port=[LIST,...] MySQL 服务器端口 [3306]
   --mysql-socket=[LIST,...] MySQL 套接字
   --mysql-user=STRING MySQL 用户 [sbtest]
   --mysql-password=STRING MySQL 密码 []
   --mysql-db=STRING MySQL 数据库名称 [sbtest]
   --mysql-ssl[=on|off] 使用 SSL 连接,如果在客户端库中可用 [off]
   --mysql-ssl-cipher=STRING 对 SSL 连接使用特定的密码 []
   --mysql-compression[=on|off] 使用压缩,如果在客户端库中可用 [off]
   --mysql-debug[=on|off] 跟踪所有客户端库调用 [off]
   --mysql-ignore-errors=[LIST,...] 要忽略的错误列表,或“所有”[1213,1020,1205]
   --mysql-dry-run[=on|off] 试运行,假装所有 MySQL 客户端 API 调用都成功了,不执行 [off]

The articles I found before, use the very old version (1.0.5) of the tool, and the whole article is basically the same, and the version I currently download is 1.0.20. After trying it, I found that their commands are not used. Accurate, will report an error.

After looking up the information in many places, I finally found the usage method and command in line with the newer version.

First of all, this test has three stages : 1. Data preparation prepare; 2. Start test run; 3. Clear data clean.

One, prepare the data

# 首先创建数据库,接下来的操作都在这个数据库进行
mysql -uroot -p123456
show databases;
create sbtest;
# 执行模式为complex,使用了10个表,每个表有10万条数据,客户端的并发线程数为10,执行时间为120秒,每10秒生成一次报告
sysbench oltp_common.lua --time=120 --mysql-host=xxx.xx.xx.xx --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=sbtest --table-size=1000000 --tables=10 --threads=10 --events=999999999 --report-interval=10 prepare

Insert picture description here

2. Start the test

# 将测试结果导出到文件中,便于后续分析
sysbench oltp_read_write.lua --time=120 --mysql-host=xxx.xx.xx.xx --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=sbtest --table-size=1000000 --tables=10 --threads=10 --events=999999999  --report-interval=10  run
Insert picture description here

Three, clean up the data

//执行完测试后,清理数据,否则后面的测试会受到影响
sysbench oltp_read_write.lua --time=120 --mysql-host=xxx.xx.xx.xx --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=sbtest --table-size=1000000 --tables=10 --threads=16 --events=999999999  --report-interval=10  cleanup
Insert picture description here
oltp_common.lua :执行的测试脚本。因为我们使用 yum 进行安装,所以胖友需要 cd /usr/share/sysbench/ 目录下,看到 sysbench 自带的 lua 测试脚本。
--time :最大的总执行时间,以秒为单位,默认为 10 秒。
--events :最大允许的事件个数,默认为 0 个。
应该和 --time 互相形成最大的执行时间与次数。
MySQL 相关参数
--mysql-host :MySQL server host 。
--mysql-port :MySQL server port 。
--mysql-user :MySQL server 账号。
--mysql-password :MySQL server 密码。
--mysql-db :MySQL Server 数据库名。
--table-size :表记录条数。
--tables :表名。
--threads :要使用的线程数,默认 1 个。
--report-interval :以秒为单位定期报告具有指定间隔的中间统计信息,默认为 0 ,表示禁用中间报告。
prepare :执行准备数据。
oltp_read_write.lua :执行的测试脚本。此时,我们在 /usr/share/sysbench/ 下,寻找我们想要测试的场景。
oltp_read_write.lua ,表示混合读写,在一个事务中,默认比例是:select:update_key:update_non_key:delete:insert = 14:1:1:1:1 。这也是为什么,我们测试出来的 TPS 和 QPS 的比例,大概在 1:18~20 左右。相当于说,一个事务中,有 18 个读写操作。
run :执行测试。
clean : 清空数据

The above content is my own practice, refer to https://zhuanlan.zhihu.com/p/90773766