在Linux系统上安装和配置tpcc-mysql
进行MySQL的TPC-C基准测试,通常涉及以下几个步骤。请注意,由于tpcc-mysql
不是一个官方工具,它可能需要从第三方仓库获取,如Percona提供的版本。
前置条件
- 确保MySQL或MariaDB已安装 :在开始之前,请确保你的系统中已经安装了MySQL或者MariaDB数据库,并且正在运行。
在编译之前需要安装mysql和mysql编译时链接的库
bash
sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev
安装tpcc-mysql
-
克隆仓库:
可以从Percona的GitHub仓库获取
tpcc-mysql
源码。bashgit clone https://github.com/percona/tpcc-mysql.git cd tpcc-mysql/src
-
编译源码:
在
tpcc-mysql
目录下执行以下命令来编译源码。bashmake
tpcc-mysql包含所需要的sql脚本文件
-
创建TPC-C表并加载数据:
使用
tpcc-mysql
提供的脚本创建必要的数据库、用户以及导入测试数据。bash# 创建数据库(例如:tpcc) mysql -e "CREATE DATABASE tpcc;" # 加载schema mysql tpcc < create_table.sql # 创建外键 mysql tpcc < add_fkey_idx.sql # 加载初始数据,-w 参数指定仓库数量,默认为1,根据机器性能调整 ./tpcc_load localhost -d tpcc user password -w 1000
-
运行测试:
使用如下命令开始测试,其中参数可以根据实际情况调整。
语法:
bash./tpcc_start -h[host] -d[database] -u[user] -p[password] -w[warehouses] -c[connections] -r[warmup_time] -l[running_time]
示例
groovy./tpcc_start -hlocalhost -dtpcc1000 -uroot -pyour_password -w1000 -c64 -r30 -l120
参数说明:
-
-w1000:使用 1000 个仓库
-
-c64:并发连接数为 64
-
-r30:预热阶段 30 秒
-
-l120:测试运行 120 秒
运行完成后会输出 TPS(每秒事务数)、RT(响应时间)等指标。
常见问题
Q1: 报错 can't connect to local MySQL server through socket '/tmp/mysql.sock'
A: 修改代码中连接方式为 TCP 而不是 socket。修改 tpcc.c 文件中的连接部分,添加:
groovy
my_data->sock = mysql_init(NULL);
mysql_real_connect(my_data->sock, "127.0.0.1", user, password, schema, 3306, NULL, 0);
你遇到的错误是:
1698, 28000, Access denied for user 'root'@'localhost'
❗问题原因
这个错误表示:
MySQL 拒绝了用户
root@localhost
的登录请求。
这通常是因为 MySQL 的 root 用户使用了插件认证方式(如 auth_socket
或 unix_socket
),而不是传统的密码认证。这意味着即使你知道 root 用户"应该"有密码,也不能通过 -p
参数进行登录。
✅ 解决方法一:修改 root 用户的认证方式(推荐)
你可以让 root 用户使用标准的密码认证方式登录:
步骤 1:用免密方式登录 MySQL
bash
mysql -u root
如果你能成功进入 MySQL 命令行,说明你是通过 socket 插件登录的。
步骤 2:修改 root 用户的认证方式并设置密码
执行以下 SQL 命令:
sql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
FLUSH PRIVILEGES;
将
'your_password'
替换为你想设置的密码。
步骤 3:退出 MySQL
sql
exit;