YCSB and TPC-C on MySQL(避免重复load)

news2024/11/9 6:20:23

一、编译安装MySQL

下载mysql5.7.28源码

https://downloads.mysql.com/archives/community/
Select Operating System 选择 Source Code
Select OS version 选择 All Operating Systems
选择带有boost的版本
在这里插入图片描述

安装系统包

apt -y install make cmake gcc g++ perl bison libaio-dev libncurses5 libncurses5-dev libnuma-dev libssl-dev

这里可能需要安装低版本的openssl
1、下载源码包:

wget http://www.openssl.org/source/openssl-1.1.0g.tar.gz   

2、安装到/usr/local/ssl/目录下:

tar zxvf openssl-1.1.0g.tar.gz    

cd openssl-1.1.0g

./config --prefix=/usr/local/ssl 

这里可能报错:
在 Configure文件和 test/build.info这个文件

 use if $^O ne "VMS", 'File::Glob' => qw/glob/;

改成

 use if $^O ne "VMS", 'File::Glob' => qw/:glob/;
make -j8
make install -j8 

mv -f /usr/bin/openssl /usr/bin/openssl.old

mv -f /usr/include/openssl /usr/include/openssl.old

ln  -s /usr/local/ssl/bin/openssl /usr/bin/openssl    #修改软链,指向新版本的openssl路径

ln -s /usr/local/ssl/include/openssl /usr/include/openssl

echo "/usr/local/ssl/lib">>/etc/ld.so.conf 

#添加so库的路径,添加完成之后,运行ldconfig ,将新增的so 文件缓存到/etc/ld.so.cache中;

ldconfig -v    

openssl version -a   #确认版本是否为1.1.0g

添加mysql用户

groupadd mysql
useradd -r -g mysql mysql

预制一些目录

mkdir -p /mnt/install  # 存放安装后的软件
mkdir -p /mnt/data  # 存放数据
mkdir -p /mnt/log  # 存放日志
chown -R mysql:mysql /mnt

解压

tar -zxf mysql-boost-5.7.28.tar.gz

预编译

cmake -DMYSQL_UNIX_ADDR=/mnt/install -DMYSQL_UNIX_ADDR=/mnt/install/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_INNOBASE_STORAGE_ENGINE=1  -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/mnt/data -DMYSQL_TCP_PORT=3306  -DWITH_BOOST=boost -DWITH_SSL=/usr/local/ssl
# cmake -DMYSQL_UNIX_ADDR=/usr/local/mysql -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_INNOBASE_STORAGE_ENGINE=1  -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/mnt/data -DMYSQL_TCP_PORT=3306  -DWITH_BOOST=boost -DWITH_SSL=/usr/local/ssl

编译参数的参考文档:https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html

编译

make -j8

安装

指定安装目录

vim cmake_install.cmake

修改AKE_INSTALL_PREFIX "/mnt/install"为目标目录
在这里插入图片描述

make install -j8

修改安装目录的所有者和所属组

chown -R mysql:mysql /mnt

初始化,生成一个临时的mysql root用户密码

/mnt/install/bin/mysqld --initialize --user=mysql
# /usr/local/mysql/bin/mysqld --initialize --user=mysql

打印初始密码:A temporary password is generated for root@localhost: Br-)u/%:=2:9
这个密码也会写入 /root/.mysql_secret中

启动mysql,修改root密码为123456

/mnt/install/support-files/mysql.server start # 启动后,按回车回到命令行 /usr/local/mysql/support-files/mysql.server start
/mnt/install/bin/mysql -u root -p  #/usr/local/mysql/bin/mysql -u root -p
Enter Password: # 这里输入刚才生成的密码
mysql> set password for root@localhost = password('123456');

这里可能会报错mysql.server: 259: cd: can’t cd to /usr/local/mysql
解决方案:
修改 /mnt/install/support-files/mysql.server,将文件中的datadir和basedir路径配置成自定义的路径 即basedir=/mnt/install datadir=/mnt/data

目前不太方便,系统没有mysql这个命令,没有用设置开机启动

先停止mysql

/mnt/install/support-files/mysql.server stop
# /usr/local/mysql/support-files/mysql.server stop

启动mysql服务,注册成systemd服务

cp /mnt/install/support-files/mysql.server /etc/init.d/mysqld # cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
/etc/init.d/mysqld start # 这一步自动注册成systemd服务了,可以使用systemctl管理mysql了
chmod +x /etc/init.d/mysqld
systemctl stop mysqld
systemctl start mysqld
systemctl enable mysqld

添加mysql、mysqldump、mysqlpump等一系列命令

vim /etc/profile

文件末尾追加

PATH=$PATH:/mnt/install/bin
# PATH=$PATH:/usr/local/mysql/bin

验证mysql命令

source /etc/profile
mysql -u root -p 
Enter password: 123456

二、YCSB-jdbc

下载打包好的YCSB

curl -O --location https://github.com/brianfrankcooper/YCSB/releases/download/0.17.0/ycsb-0.17.0.tar.gz
tar xfvz ycsb-0.17.0.tar.gz
cd ycsb-0.17.0

安装java

sudo apt install openjdk-8-jdk -y

基于mysql版本下载

我的是5.7的用的mysql-connector-java-5.1.38-bin.jar

修改ycsb配置

vim ycsb-0.17.0/jdbc-binding/conf/db.properties
db.driver=com.mysql.jdbc.Driver
# jdbc.fetchsize=20
db.url=jdbc:mysql://127.0.0.1:3306/ycsb?useSSL=false
db.user=root
db.passwd=123456

安装python2

sudo apt install python2
#设置软连接
ln -s  /usr/bin/python2  /usr/bin/python

三、运行YCSB on MySQL

创建数据库

mysql -u root -p
CREATE DATABASE ycsb;
USE ycsb;
CREATE TABLE usertable (YCSB_KEY VARCHAR(255) PRIMARY KEY, FIELD0 TEXT, FIELD1 TEXT, FIELD2 TEXT, FIELD3 TEXT, FIELD4 TEXT, FIELD5 TEXT, FIELD6 TEXT, FIELD7 TEXT, FIELD8 TEXT, FIELD9 TEXT);

load数据

bin/ycsb load jdbc -P workloads/workloada -P ./jdbc-binding/conf/db.properties -cp ./jdbc-binding/lib/mysql-connector-java-5.1.38-bin.jar

可能会报错,jdk问题:Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate
解决办法:

cp /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.275.b01-1.el8_3.x86_64/jre/lib/security    /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.275.b01-1.el8_3.x86_64/jre/lib/security.bak
vim /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.275.b01-1.el8_3.x86_64/jre/lib/security

删除SSLv3, TLSv1, TLSv1.1
在这里插入图片描述

复制data目录

为了方便后续测试不再重新load,可以选择将/mnt/data目录copy到其他地方做备份,
当重新测试时, 先关闭mysql

sudo systemctl stop mysqld

删除/mnt/data/
然后复制回之前的版本,并修改所属者

sudo chown -R mysql:mysql /mnt/data

然后重启mysql

sudo systemctl start mysqld

run测试

bin/ycsb run jdbc -P workloads/workloada -P ./jdbc-binding/conf/db.properties -cp ./jdbc-binding/lib/mysql-connector-java-5.1.38-bin.jar

如果要更换数据集,重建表即可

mysql -u root -p
mysql > drop database ycsb;
mysql > create database ycsb;
mysql > USE ycsb;
mysql > CREATE TABLE usertable (YCSB_KEY VARCHAR(255) PRIMARY KEY, FIELD0 TEXT, FIELD1 TEXT, FIELD2 TEXT, FIELD3 TEXT, FIELD4 TEXT, FIELD5 TEXT, FIELD6 TEXT, FIELD7 TEXT, FIELD8 TEXT, FIELD9 TEXT);

四、TPCC安装

下载源码

git clone https://github.com/Percona-Lab/tpcc-mysql.git
cd tpcc-mysql/src/

编译

sudo apt-get install libmysqlclient-dev
make

五、运行TPC-C on MySQL

配置数据库

cd ..
mysql -u root -p
mysql > create database tpcc1000
mysql > exit

也可以运行mysqladmin来创建数据库:

mysqladmin create tpcc1000

可能的问题:sudo: mysqladmin: command not found
解决办法:
直接输入命令mysql或mysqladmin会发现提示命令不存在,这是由于系统默认会查找/usr/bin下的命令,如果这个命令不在这个目录下,当然会找不到命令,我们需要做的就是映射一个链接到/usr/bin目录下,相当于建立一个链接文件。
首先得知道mysql命令或mysqladmin命令的完整路径,比如mysql的路径是:/usr/local/mysql/bin/mysql,我们则可以这样执行命令:

ln -s /usr/local/mysql/bin/mysql /usr/bin
ln -s /usr/local/mysql/bin/mysqladmin /usr/bin

当提示mysqldump: command not found时同样可以通过此方法来解决。

#设置表
mysql -u root -p tpcc1000 < create_table.sql
mysql -u root -p tpcc1000 < add_fkey_idx.sql

load 数据

./tpcc_load -h 127.0.0.1 -P 3306 -d tpcc1000 -u root -p "123456" -w 10

复制data目录

为了方便后续测试不再重新load,可以选择将/mnt/data目录copy到其他地方做备份,
当重新测试时, 先关闭mysql

sudo systemctl stop mysqld

删除/mnt/data/
然后复制回之前的版本,并修改所属者

sudo chown -R mysql:mysql /mnt/data

然后重启mysql

sudo systemctl start mysqld

run测试

./tpcc_start -h 127.0.0.1 -P 3306 -d tpcc1000 -u root -p "123456" -w 10 -c 4 -r 10 -l 100

如果要更换数据集,重建表即可

mysql -u root -p
mysql > drop database tpcc1000;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1114309.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网站批量替换关键词方法

注意替换操作之前先对文件做好备份 1.下载http://downinfo.myhostadmin.net/ultrareplace5.02.rar 解压出来,运行UltraReplace.exe 2.点击菜单栏中的配置&#xff0c;全选所有文件类型,或者根据自己的需求选择部分,如htm、html、php、asp等 3.若替换单个文件,点击文件,若是要…

月薪15-25k,急招Web安全研究员

更多岗位招聘信息 请wx搜索【知了内推】小程序

CentOS 系统安装和使用Docker服务

系统环境 使用下面的命令&#xff0c;可以查看CentOS系统的版本。 lsb_release -a结果&#xff1a; 说明我的系统是7.9.2009版本的 安装Docker服务 依次执行下面的指令&#xff1a; yum install -y yum-utilsyum install -y docker即可安装docker服务 如果这样安装不成功…

python+selenium的web自动化上传操作的实现

一、关于上传操作 上传有两种情况&#xff1a; 如果是input可以直接输入路径的&#xff0c;那么直接使用send_keys(文件路径)输入路径即可&#xff1b; 非input标签的上传&#xff0c;则需要借助第三方工具&#xff1a;第三方库 pywin32、第三方工具pyautogui等等。 那这里…

Android问题笔记 - ViewPager嵌套RecyclerView,降低ViewPager灵敏度

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&…

第二证券:建仓的几种方式?

建仓是出资者在证券商场中最根本的出资行为之一。简单来说&#xff0c;就是买入股票或基金&#xff0c;以期取得股价上涨所带来的收益。建仓是证券出资的第一步&#xff0c;也是最重要的一步。在选择建仓方法之前&#xff0c;了解常见的几种方法是很有必要的。 一、现金买入 现…

“技术”已成为京东持续“低价”的底气和重要动能

监制 | 何玺 排版 | 叶媛 10月19日&#xff0c;京东宣布今年的双十一将在10月23日晚8点正式开启。 今年双十一&#xff0c;京东向全体消费者做出了两项承诺&#xff1a;一是所有商品均“现货开卖”&#xff0c;无需等待。二是“全程价保”覆盖8亿商品&#xff0c;让消费者真正…

【学习草稿】bert文本分类

https://github.com/google-research/bert https://github.com/CyberZHG/keras-bert 在 BERT 中&#xff0c;每个单词的嵌入向量由三部分组成&#xff1a; Token 嵌入向量&#xff1a;该向量是 WordPiece 分词算法得到的子单词 ID 对应的嵌入向量。 Segment 嵌入向量&#x…

SequenceFile、元数据操作与MapReduce单词计数

文章目录 SequenceFile、元数据操作与MapReduce单词计数一、实验目标二、实验要求三、实验内容四、实验步骤附&#xff1a;系列文章 SequenceFile、元数据操作与MapReduce单词计数 一、实验目标 熟练掌握hadoop操作指令及HDFS命令行接口掌握HDFS SequenceFile读写操作掌握Map…

生鲜蔬果社区团购小程序商城的作用是什么

摆在生鲜蔬果商家面前的难题也非常明显&#xff0c;商家缺少营销方式&#xff0c;难以满足基本营销需求&#xff0c;经营没有方向&#xff0c;订单难以管理&#xff0c;商品也难以管理&#xff0c;难以打通引流-转化-留存-复购-裂变-分享路径&#xff0c;线下门店整体而言经营压…

【Ubuntu】Ubuntu20.04安装EasyConnect后打不开的问题。

1 安装过程 (1) 软件下载 EasyConnect下载地址 (2) 安装 dpkg -i EasyConnect_x64_7_6_7_3.deb 如果需要卸载的话,可使用如下命令: dpkg -r EasyConnect 双击EasyConnect图标,发现出现打不开的问题。 2 解决方法 首先,先看看是什么原因打不开呢? gedit /usr/share…

基于轻量级yolov5n+CBAM开发构建全球小麦麦穗智能检测计数系统

本文是前文的延伸内容&#xff0c;前文主要是对单个麦穗上麦穗颗粒的检测计数&#xff0c;这里本文的主要目的是要对麦穗进行智能化自动化的检测计数&#xff0c;话不多说&#xff0c;简单先看下效果&#xff1a; 接下来看下数据集&#xff1a; YOLO格式标注文件如下所示&…

社区版Visual Studio通过安装开源插件Fine Code Coverage实现单元测试代码覆盖率统计

1、在Visual Studio上安装Fine Code Coverage插件 扩展->管理扩展->联机 搜索到Fine Code Coverage插件&#xff0c;选中进行下载安装 2、修改Fine Code Coverage配置 如果单元测试框架用的是MSTest&#xff0c;一般需要修改插件配置&#xff0c;否则测试结果不正确 …

【深度学习】数据集最常见的问题及其解决方案

简介 如果您还没有听过&#xff0c;请告诉您一个事实&#xff0c;作为一名数据科学家&#xff0c;您应该始终站在一个角落跟你说&#xff1a;“你的结果与你的数据一样好。” 尝试通过提高模型能力来弥补糟糕的数据是许多人会犯的错误。这相当于你因为原来的汽车使用了劣质汽…

【Maven教程】(八):使用 Nexus 创建私服 ~

Maven 使用 Nexus 创建私服 1️⃣ Nexus简介2️⃣ 安装 Nexus2.1 下载 Nexus2.2 Bundle 方式安装 Nexus2.3 WAR 方式安装 Nexus2.4 登录 Nexus 3️⃣ Nexus 的仓库与仓库组3.1 Nexus 内置的仓库3.2 Nexus 仓库分类的概念3.3 创建 Nexus 宿主仓库3.4 创建 Nexus 代理仓库3.5 创…

跳动的文化:TikTok如何塑造多元社交内容?

在数字时代&#xff0c;社交媒体已成为塑造大众文化和社会趋势的强大工具。其中&#xff0c;TikTok崭露头角&#xff0c;以其独特的短视频平台在全球范围内赢得了数以亿计的用户。 TikTok不仅仅是一个娱乐应用&#xff0c;它还是一个文化引擎&#xff0c;重新定义着社交内容和…

一百九十二、Flume——Flume数据流监控工具Ganglia单机版安装

一、目的 在安装好Flume之后&#xff0c;需要用一个工具可以对Flume数据传输进行实时监控&#xff0c;这就是Ganglia 二、Ganglia介绍 Ganglia 由 gmond、gmetad 和 gweb 三部分组成。 &#xff08;一&#xff09;第一部分——gmond gmond&#xff08;Ganglia Monitoring Da…

vue3中去除eslint严格模式

vue3中去除eslint严格模式 1、全局搜索&#xff1a;extends 2、一般在package.json或者vue.config.js中&#xff0c;直接删除掉vue/standard&#xff0c;重启项目。(在package.json文件中&#xff0c;编译不允许有注释&#xff0c;所以直接删掉)

论文阅读 - Coordinated Behavior on Social Media in 2019 UK General Election

论文链接&#xff1a; https://arxiv.org/abs/2008.08370 目录 摘要&#xff1a; Introduction Contributions Related Work Dataset Method Overview Surfacing Coordination in 2019 UK GE Analysis of Coordinated Behaviors 摘要&#xff1a; 协调的在线行为是信息…

配置 Pod 以使用 PersistentVolume 作为存储

配置 Pod 以使用 PersistentVolume 作为存储 本文将向你介绍如何配置 Pod 使用 PersistentVolumeClaim 作为存储。 以下是该过程的总结&#xff1a; 你作为集群管理员创建由物理存储支持的 PersistentVolume。你不会将该卷与任何 Pod 关联。你现在以开发人员或者集群用户的角色…