参考:
https://blog.csdn.net/u010817321/article/details/52118254
https://blog.csdn.net/u011569805/article/details/38275481
https://my.oschina.net/whchsh/blog/102505
https://www.cnblogs.com/bluekuaker/articles/2356971.html
http://www.cnblogs.com/kkyycom/p/9345897.html
ubuntu下voltdb编译安装
voltdb的代码以及系统构建都是在64位的linux/OS X之上的,它的编译需要如下环境:
以下讲述的是在ubuntu16下编译voltdb的过程
一、.编译环境搭建
1.ubuntu下安装jdk1.8
ubuntu上JDK的安装同windows上类似,只需要下载解压后配置环境即可。
1.1.JDK1.8的下载
下载链接:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
1.2.JDK1.8的安装
1.2.1上传到linux服务器并解压
这里将jdk-8u101-linux-x64.tar文件上传到服务器/usr/local目录下
1.2.2解压并修改目录名称
进入目录 #cd /usr/local
解压 #tar -zxvf jdk-8u65-linux-x64.tar.gz
进入解压后的目录 #cd jdk1.8.0_65
修改目录名称 #mv jdk1.8.0_65 jdk
1.2.3设置环境变量
修改/etc/profile配置文件: #vi /etc/profile
-
export JAVA_HOME=/usr/local/jdk
-
export JRE_HOME=/usr/local/jdk/jre
-
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
-
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
然后保存退出。
使更改的配置立即生效:#source /etc/profile
1.3.测试 # java -version
若显示 java version “1.8.0_101″(不同jdk版本显示不同),则表示安装成功。
2.ubuntu下安装ant
2.1.官网下载ant二进制发行版 :http://ant.apache.org/bindownload.cgi
2.2.解压并移动到某个目录下(这里直接在usr/解压后重命名)
#tar -zxvf apache-ant-1.9.7-bin.tar.gz
#mv apache-ant-1.9.7-bin.tar.gz ant1.9.7
2.3.配置环境变量
#vi /etc/profile
-
//添加到文档末
-
export ANT_HOME=/usr/ant1.9.7
-
//将ant添加到环境变量中
-
export PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$PATH
然后保存退出。
使更改的配置立即生效:#source /etc/profile
2.4.测试
#ant -version
若显示:Apache Ant(TM) version 1.9.7 compiled on April 9 2016 则表示安装成功
3.GCC
运行命令:sudo apt-get install build-essential
linux检查GCC是否安装:
gcc -v
4.Ubuntu下安装Python
运行命令: sudo apt install python-minimal
5.Ubuntu下安装cmake
运行命令:sudo apt-get install cmake
安装完成后,运行 cmake -h,显示cmake的版本以及Options参数说明时即说明安装成功。
二、获取voltdb源代码并编译
1.voltdb源代码的获取:
git clone https://github.com/VoltDB/voltdb.git
2.编译
clone下来后,解压并进入解压后的文件根目录下,运行如下命令
ant
注:有时可能会提示没有权限执行某些操作,则可以使用如下命令: sudo chmod -R 777 voltdb-master
等待编译完成。
3.运行Unit Tests
可以通过 ant JUnit来运行JUnit Test。
我们可以通过运行例程检验编译是否成功,例如
/cd exsamples/voter
./run.sh server
如果最终提示:Server completed initialization.表明编译正确,服务正常启动
如果提示缺少库文件或class,表明编译出错 如果提示端口被占用,需要修改运行脚本中的端口,具体参照下一节。
如上图所示,运行./run.sh server时出错了,依照提示执行如下命令,在会话中禁用THP,然后再次运行./run.sh server,执行成功, 如下图所示
*******************************************************************************************************
初始化命令:
voltdb init
如果是第一次运行,需要先进行初始化,这个命令会初始化voltdb存储配置文件、日志和其他基于磁盘信息的根目录
开发过程中,如果需要使用新配置或者完全不同的数据库重新开始,可以使用强制初始化命令:
voltdb init --force
启动命令:
voltdb start
启动成功后会在控制台显示:Server completed initialization.
重启命令:
voltdbadmin shutdown
voltdb init
voltdb start
如果启动的时候报错,可以重启下试试。
打开一个新的命令行窗口或终端,进入sqlcmd所在的目录,输入以下命令,回车:
sqlcmd
终端窗口会显示:SQL Command::localhost:21212,并换行显示一个数字编号的提示符,如下图所示:
可以在这里输入DDL语句或SQL查询,执行存储过程,或者键入"exit"结束程序并返回shell提示符,如下图所示:
CTRL+C键也可以停止voltdb进程。
载入DDL文件指令:
FILE 文件路径+文件名
加载数据命令
csvloader --separator "|" --skip 1 --file towns.txt towns
separator标志允许您指定分隔各个数据条目的字符。
数据文件包括带列标题的行。该--skip 1标志告诉csvloader跳过第一行。
file标志告诉csvloader要用作输入的文件。如果未指定文件,则csvloader使用标准输入作为数据源。
参数towns告诉csvloader将数据加载到哪个数据库表中。
运行这个命令时,可能会遇到下图所示报错:
Strict java memory checking is enabled,don't do release builds or performance runs with this enabled.Invoke "ant clean" and "ant -Djmemcheck=NO_MEMCHECK" to disable.
从提示中可以看出数据加载失败,并且报了一个错。
按照提示中的方式,回到voltdb-master目录下,依次运行
ant clean
ant -Djmemcheck=NO_MEMCHECK
两个命令,重新进行编译。
等待编译完成后再次运行voltdb,发现运行提示中已经没有Strict java memory checking is enabled的提示了。
注意,必须先运行 ant clean,再运行 ant -Djmemcheck=NO_MEMCHECK,两个命令缺一不可,否则无法解决这个报错的问题。
表分区语句:
PARTITION TABLE 表名 ON COLUMN 列名;
例如:
PARTITION TABLE towns ON COLUMN state_num;
注意:表中已有数据的情况下,这项操作会失败,如下图所示
解决办法就是:关闭voltdb,重新初始化,重新启动,重新建表(建表后插入数据前对表进行分区),重新
载入数据。
每次使用init和start命令重新初始化并启动数据库时,都会启动一个新的空数据库。
保留数据库
命令日志记录:将所有数据库活动(包括架构和数据更改)记录到磁盘。如果数据库停止,只需使用 voltdb start命令重启数据库即可恢复命令日志。企业版默认启用。
快照:VoltDB数据库的完整磁盘表示,包括在关闭后重现数据库所需的所有内容。
voltadmin save命令:随时创建正在运行的VoltDB数据库的快照。
默认情况下,快照将保存到数据库根目录的子文件夹中。或者,您可以将快照文件的位置和名称指定为voltadmin save命令的参数。但是将快照保存到默认位置是有利的。因为如果根目录中有任何快照, voltdb start命令会在数据库重新启动时自动恢复最新的快照。
VoltDB允许您在关闭数据库时创建最终快照,只需在shutdown命令中添加 --save参数即可。即:
voltadmin shutdown --save
以上命令验证过,是有效的,但不确定是否跟调用命令的目录有关系,因为失败了一次,成功了一次。
添加表:CREATE TABLE
删除表:DROP TABLE
修改表:ALTER TABLE,可修改正在运行中的数据库
删除列:DROP COLUMN,可修改正在运行中的数据库
例如:ALTER TABLE towns DROP COLUMN state;
许多架构更改(包括添加,删除和修改表,列和索引)都可以即时完成。但是,有一些限制。例如,您无法向已包含数据的表添加新的唯一约束。
voltadmin restore:将数据从快照恢复到更新的模式
创建存储过程:
CREATE PROCEDURE 存储过程名 AS
对存储过程进行分区
CREATE PROCEDURE 存储过程名
PARTITION ON TABLE 表名 COLUMN 列名
AS
执行存储过程:
EXEC 存储过程名 参数
例如:exec leastpopulated 6
*******************************************************************************************************
voltdb源码编译
1. https://github.com/VoltDB/voltdb 下载源码
2. 安装ant环境
3. 进入解压目录执行ant dist,注意jdk版本1.7
4. 加入环境变量
-
export ANT_HOME=/root/opt/apache-ant-1.9.4
-
export VOLTDB_HOME=/root/opt/voltdb/voltdb-4.5
-
export PATH=$VOLTDB_HOME/bin:$ANT_HOME/bin:$PATH
5.编译 启动
-
voltdb compile -o towns.jar towns.sql
-
voltdb create towns.jar --deployment=deployment.xml --host=cluster172
6. 其他操作
-
insert into towns values ('Bill','Middlesex','MA');
-
select count(*) as total from towns;
-
停止集群
-
voltadmin pause
-
voltadmin save --blocking /tmp/voltdb backup
-
voltadmin shutdown
-
重新启动数据库
-
1.voltdb create towns.jar --deployment=deployment.xml --host=cluster172
-
2. voltadmin pause
-
voltadmin restore /tmp/voltdb backup
-
voltadmin resume
7.社区版从4.0开始不支持voltadmin save restore
-
<?xml version="1.0"?>
-
<deployment>
-
<cluster hostcount="4" sitesperhost="2" />
-
<httpd enabled="true">
-
<jsonapi enabled="true" />
-
</httpd>
-
</deployment>