linux环境下测试mysql+TPC-H(实测全流程:环境安装+导入数据+执行查询)

TPC-H介绍:https://blog.csdn.net/leixingbang1989/article/details/8766047
一、环境搭建
1、linux环境离线安装mysql数据库
(1)下载mysql安装包及依赖包
https://dev.mysql.com/downloads/mysql/官网下载mysql的安装包及其依赖包
选择为Red Hat Enterprise Linux /Oracle Linux ,把os的版本选择为all,直接往下拉,选择下载(mysql-8.0.28-1.el7.x86_64.rpm-bundle.tar),所有的rpm包(包含依赖包)都在里面
(2)解压mysql-8.0.28-1.el7.x86_64.rpm-bundle.tar,并将所有的rpm包都上传到linux服务器,并依次使用rpm -ivh命令安装rpm包
rpm -ivh mysql-community-common-8.0.15-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.15-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-8.0.15-1.el7.x86_64.rpm
rpm -ivh mysql-community-embedded-compat-8.0.15-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-8.0.15-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.15-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.15-1.el7.x86_64.rpm
**
若安装过程中遇到报错,如
错误:依赖检测失败: mysql-community-libs(x86-64) >= 5.7.9 被 mysql-community-client-5.7.16-1.el7.x86_64 需要:
在这里插入图片描述
原因分析:
检测出和mariadb有冲突,我们找出系统自带的mariadb,然后强制卸载。之后便可以继续正常安装。大部分都是应该是系统冲突,少部分是没有卸载干净MySQL。
解决方案:
//首先查询一下mariadb是哪一个包
rpm -qa |grep mariadb
//卸载冲突的包,加一个–nodeps系统就会强转卸载
rpm -e --nodeps mariadb-libs
卸载后再继续安装就可以了
(3)修改配置文件
vi /etc/my.cnf
#datadir=/var/lib/mysql
datadir=/data/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

(4)通过以下命令,完成对 mysql 数据库的初始化和相关配置
mysqld --initialize
chown mysql:mysql /data/mysql -R
systemctl start mysqld.service
systemctl enable mysqld ----设置MySql开机自启

启动的时候遇到启动报错:
[root@localhost /]# systemctl mysqld start
Job for mysqld.service failed because the control process exited with error code. See “systemctl status mysqld.service” and “journalctl -xe” for details.
[root@localhost /]# systemctl status mysqld.service
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since 日 2020-06-14 22:13:45 CST; 1min 16s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 19271 ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS (code=exited, status=1/FAILURE)
Process: 19241 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 19271 (code=exited, status=1/FAILURE)
Status: “Server startup in progress”
Error: 13 (权限不够)
6月 14 22:13:43 localhost.localdomain systemd[1]: Starting MySQL Server…
6月 14 22:13:45 localhost.localdomain systemd[1]: mysqld.service: main process exited, code=exited, status=1/FAILURE
6月 14 22:13:45 localhost.localdomain systemd[1]: Failed to start MySQL Server.
6月 14 22:13:45 localhost.localdomain systemd[1]: Unit mysqld.service entered failed state.
6月 14 22:13:45 localhost.localdomain systemd[1]: mysqld.service failed.
尝试修改/home/mysql的文件权限
chown -R mysql.mysql /home/mysql
还是出现上面的错误
解决
需要将Selinux临时关闭才能启动成功:
[root@localhost /]# setenforce 0
[root@localhost /]# systemctl start mysqld

启动成功
(5)通过 cat /var/log/mysqld.log | grep password 命令查看数据库的密码
2019-02-16T09:46:38.945518Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: ,#t#dlkOG0j0
(6)测试MySql安装是否成功
mysql -u root -p   
输入刚刚查到的密码,进行数据库的登陆,复制粘贴就行,MySQL 的登陆密码也是不显示的
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 11
Server version: 8.0.15
Copyright © 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the current input statement.
mysql>
通过 ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘root’; 命令来修改密码
set global validate_password.policy = 0;
set global validate_password.length=6;
ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘xhw888’;

通过 exit; 命令退出 MySQL,然后通过新密码再次登陆
至此,mysql8.0.15数据库就安装完成了。
2、安装tcph+数据导入
TPC-H是TPC提供的一个benchmark,用来生成一堆虚构的数据,测试数据库的读写能力。

下载tpc-h测试工具tpc-h-tool_v2.17.3.zip

官网地址:http://www.tpc.org/

工具下载地址:http://www.tpc.org/tpc_documents_current_versions/current_specifications.asp
文档地址:http://www.tpc.org/tpc_documents_current_versions/pdf/tpc-h_v2.17.3.pdf
在这里插入图片描述

下载的地址需要通过代理访问。下载的时候需要通过邮箱进行注册,每注册一次,只能进行一次下载。下载地址会通过邮件的形式发送到邮箱。

如果官网无法下载,可以在我的网盘里面下载

下载地址:
链接: https://pan.baidu.com/s/1G9GsDBONV6WDHLtIKls9Pw 提取码: cdta

模拟环境:centos7
(1)解压文件:
[root@kdc soft]# unzip 8a14c643-bcc2-4ee6-8a6b-e2179e1449a3-tpc-h-tool.zip
(2)切换目录
** cd 2.17.3/dbgen/**
(3)备份makefile.suite,也可以不备份。
cp makefile.suite makefile
makefile文件主要是用来进行make编译的
(4)修改makefile文件
vim makefile
修改103~111行内容如下
103 CC = gcc #设定c语言编译器为gcc
104 # Current values for DATABASE are: INFORMIX, DB2, TDAT (Teradata)
105 # SQLSERVER, SYBASE, ORACLE, VECTORWISE
106 # Current values for MACHINE are: ATT, DOS, HP, IBM, ICL, MVS,
107 # SGI, SUN, U2200, VMS, LINUX, WIN32
108 # Current values for WORKLOAD are: TPCH
109 DATABASE= MYSQL #数据库格式为mysql
110 MACHINE = LINUX #系统环境为linux
111 WORKLOAD = TPCH #工作加载为tpch

(5)修改tpcd.h(因为设定的数据库格式为mysql,所以需要进行此步骤,如果是上面支持的数据库格式,则不需要)
vim tpcd.h
在空白位置添加
#ifdef MYSQL
#define GEN_QUERY_PLAN “”
#define START_TRAN “START TRANSACTION”
#define END_TRAN “COMMIT”
#define SET_OUTPUT “”
#define SET_ROWCOUNT “limit %d;\n”
#define SET_DBASE “use %s;\n”
#endif

(6)编译,生成dbgen
make
(7)生成tbl数据文件
./dbgen -s 1
-s 1表示生成1G的数据,如果之前生成过数据,可以通过make clean清理
(8)修改初始化脚本
编译之后有dss.ddl和dss.ri两个脚本,dss.ddl是建表脚本,dss.ri脚本是建立主键外键关联关系。
因为TPC-H benchmark本身不支持mysql,所以需要对这两个脚本进行修改
修改dss.ddl
在行首添加以下语句
drop database tpch;
create database tpch;
use tpch;

修改dss.ri,可备份一份,将内容全部修改为如下
– Sccsid: @(#)dss.ri 2.1.8.1
– tpch Benchmark Version 8.0
– CONNECT TO tpch;
use tpch;
– ALTER TABLE tpch.REGION DROP PRIMARY KEY;
– ALTER TABLE tpch.NATION DROP PRIMARY KEY;
– ALTER TABLE tpch.PART DROP PRIMARY KEY;
– ALTER TABLE tpch.SUPPLIER DROP PRIMARY KEY;
– ALTER TABLE tpch.PARTSUPP DROP PRIMARY KEY;
– ALTER TABLE tpch.ORDERS DROP PRIMARY KEY;
– ALTER TABLE tpch.LINEITEM DROP PRIMARY KEY;
– ALTER TABLE tpch.CUSTOMER DROP PRIMARY KEY;
– For table REGION
ALTER TABLE tpch.REGION
ADD PRIMARY KEY (R_REGIONKEY);
– For table NATION
ALTER TABLE tpch.NATION
ADD PRIMARY KEY (N_NATIONKEY);
ALTER TABLE tpch.NATION
– ADD FOREIGN KEY NATION_FK1 (N_REGIONKEY) references tpch.REGION;
ADD FOREIGN KEY NATION_FK1 (N_REGIONKEY) references tpch.REGION(R_REGIONKEY);
COMMIT WORK;
– For table PART
ALTER TABLE tpch.PART
ADD PRIMARY KEY (P_PARTKEY);
COMMIT WORK;
– For table SUPPLIER
ALTER TABLE tpch.SUPPLIER
ADD PRIMARY KEY (S_SUPPKEY);
ALTER TABLE tpch.SUPPLIER
ADD FOREIGN KEY SUPPLIER_FK1 (S_NATIONKEY) references tpch.NATION(N_NATIONKEY);
COMMIT WORK;
– For table PARTSUPP
ALTER TABLE tpch.PARTSUPP
ADD PRIMARY KEY (PS_PARTKEY,PS_SUPPKEY);
COMMIT WORK;
– For table CUSTOMER
ALTER TABLE tpch.CUSTOMER
ADD PRIMARY KEY (C_CUSTKEY);
ALTER TABLE tpch.CUSTOMER
ADD FOREIGN KEY CUSTOMER_FK1 (C_NATIONKEY) references tpch.NATION(N_NATIONKEY);
COMMIT WORK;
– For table LINEITEM
ALTER TABLE tpch.LINEITEM
ADD PRIMARY KEY (L_ORDERKEY,L_LINENUMBER);
COMMIT WORK;
– For table ORDERS
ALTER TABLE tpch.ORDERS
ADD PRIMARY KEY (O_ORDERKEY);
COMMIT WORK;
– For table PARTSUPP
ALTER TABLE tpch.PARTSUPP
ADD FOREIGN KEY PARTSUPP_FK1 (PS_SUPPKEY) references tpch.SUPPLIER(S_SUPPKEY);
COMMIT WORK;
ALTER TABLE tpch.PARTSUPP
ADD FOREIGN KEY PARTSUPP_FK2 (PS_PARTKEY) references tpch.PART(P_PARTKEY);
COMMIT WORK;
– For table ORDERS
ALTER TABLE tpch.ORDERS
ADD FOREIGN KEY ORDERS_FK1 (O_CUSTKEY) references tpch.CUSTOMER(C_CUSTKEY);
COMMIT WORK;
– For table LINEITEM
ALTER TABLE tpch.LINEITEM
ADD FOREIGN KEY LINEITEM_FK1 (L_ORDERKEY) references tpch.ORDERS(O_ORDERKEY);
COMMIT WORK;
ALTER TABLE tpch.LINEITEM
ADD FOREIGN KEY LINEITEM_FK2 (L_PARTKEY,L_SUPPKEY) references
tpch.PARTSUPP(PS_PARTKEY,PS_SUPPKEY);
alter table CUSTOMER rename to customer ;
alter table LINEITEM rename to lineitem ;
alter table NATION rename to nation ;
alter table ORDERS rename to orders ;
alter table PART rename to part ;
alter table PARTSUPP rename to partsupp ;
alter table REGION rename to region ;
alter table SUPPLIER rename to supplier ;
COMMIT WORK;

(9)建表
mysql -u root -p,输入密码后
登录mysql,执行

mysql> . path-to-tpc-h/dbgen/dss.ddl

注意.之后有一个空格,前面是dss.ddl脚本的路径

若导入时报错:The MySQL server is running with the --secure-file-priv option so it cannot execute this statement ,原因及解决方法如下:

一些版本的mysql对通过文件导入导出作了限制,默认不允许,
查看配置,执行mysql命令
SHOW VARIABLES LIKE “secure_file_priv”;
如果value值为null,则为禁止,如果有文件夹目录,则只允许改目录下文件(测试子目录也不行),如果为空,则不限制目录;

修改配置可修改mysql配置文件,查看是否有
secure_file_priv =
这样一行内容,如果没有,则手动添加,
secure_file_priv = /home
表示限制为/home文件夹
secure_file_priv =
表示不限制目录,等号一定要有,否则mysql无法启动
修改完配置文件后,重启mysql生效

执行成功之后,可用show databases查看数据库
会有一个tpch的数据库,use tpch;切换到tpch数据库下,show tables;可以看到8张表
customer ;
lineitem ;
nation ;
orders ;
part ;
partsupp ;
region ;
supplier ;

10.建立关联关系

mysql> . path-to-tpc-h/dbgen/dss.ri

如果想查看关联关系是否建立成功,可以通过show create table customer/G查看

11.导入tbl脚本

在mysql命令行下执行

load data infile “Yourdirectory/part.tbl” into table part fields terminated by “|”;
load data infile “Yourdirectory/region.tbl” into table region fields terminated by “|” lines terminated by “|\n”;
load data infile “Yourdirectory/nation.tbl” into table nation fields terminated by “|”;
load data infile “Yourdirectory/customer.tbl” into table customer fields terminated by “|”;
load data infile “Yourdirectory/supplier.tbl” into table supplier fields terminated by “|” lines terminated by “|\n”;
load data infile “Yourdirectory/orders.tbl” into table orders fields terminated by “|”;
load data infile “Yourdirectory/partsupp.tbl” into table partsupp fields terminated by “|”;
load data infile “Yourdirectory/lineitem.tbl” into table lineitem fields terminated by “|”;

需要注意的是添加了关联关系,导入数据的顺序按照关联关系导入

12.查看导入结果

mysql> SHOW TABLE STATUS FROM tpch;

3、运行查询语句
(1)通过qgen工具生成查询的sql
进入dbgen目录
cd /data/tpc-h_2.18.0_rc2/dbgen
新增一个文件编辑
如vim q.sh
内容如下
#! /bin/bash
cd queries
cp …/qgen .#将上一级目录中的qgen 和dists.dss 拷贝到 queries目录下
cp …/dists.dss .
for line in {1…22} #生成22个查询语句
do
sed -i "/^:n.
/d" $line.sql
./qgen -d l i n e > d line > d line>dline.sql
done
*
保存,退出
然后运行bash q.sh
运行完成后,在queries目录下生成了22个名为d*.sql的查询语句文件
(2)登录mysql,mysql -u -p输入数据库密码登录
在mysql中source 来运行22个查询。我这里选择了手动运行,也可以自己编写一个脚本来运行。
use tpch;
source /data/TPC-H_Tools_v3.0.0/dbgen/queries/d1.sql;

此时可能报错,需要将d1.sql中的(3)删除,再运行就可以了

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值