1 概述
本文档是介绍南大通用GBase 8a 分布式数据库集群(简称GBase 8a MPP集群)的安装、简单使用等基本操作,目标人群是刚接触分布式数据库集群的DBA和数据库开发人员。
此文档只介绍基本使用,部分功能的详细说明,请查看产品手册。
本文档只包含GBase 8a MPP集群V8版本在redhat 7上的操作样例。
2 环境准备
本章介绍简单GBase 8aMPP集群所需要的环境。详细的环境需求,请参考产品手册的安装部分。
2.1 机器数量
测试环境1台即可安装(也可以是虚拟机)。生产环境 在兼顾性能和高可用的情况下最少3台服务器。
2.2 操作系统环境
本文档在redhat7版本操作样例,包括兼容的centos 7, cgsl5等。
内存建议最低4G,如果你准备做并发测试等,建议不低于16G。
磁盘空间请根据数据情况定,建议不低于10G,其中根目录可用空间不低于2G。
操作系统root密码。虽然支持sudo用户安装,如需要请参考产品安装手册。
本机的对外IP,本例是10.0.2.106 为一个ipv4地址。
关闭防火墙。
2.3 数据库版本
如您没有从其它渠道获得GBase 8a MPP集群版本安装包,可以从官网下载免费版,(www.gbase8a.com),比如:
GBase8a_MPP_Cluster-NoLicense-FREE-8.6.2_build43-R7-redhat7.3-x86_64.tar.bz2
其中RHEL7.3代表需要在redhat 7操作系统上运行。
x86_64代表居于x86的64位CPU。
8.6.2是产品大版本号。
Build43-R7是小版本号。
3 安装
本章介绍GBase 8a MPP集群的简单安装步骤,目标是一个可以建库,建表的使用环境。
3.1 上传安装包
上传安装包到1台服务器的/root下面,如果有多台,【只需要】上传到任意一台即可。
3.2 解压安装包
在当前位置解压缩:
tar xvf GBase8a_MPP_Cluster-NoLicense-FREE-8.6.2_build43-R7-redhat7.3-x86_64.tar.bz2
3.3 配置集群节点
进入gcinstall 目录
cd gcinstall
编辑配置文件:demo.options
其中:
installPrefix 是安装的目录。
coordinateHost 是本次安装的机器IP地址
coordinateHostNodeID, 用于ipv6地址,改成和ipv6的最后部分相同即可。不能重复。ipv4可忽略。
loginUser 登陆操作系统的用户名,本例用root用户。
loginUserPwd 登陆操作系统用户的密码,本例是root用户的密码。
dbaUser 数据库使用的操作系统用户,默认是gbase。
dbaGroup 数据库使用的操作系统用户的所属用户组,默认gbase。
dbaPwd 数据库使用的操作系统用户的密码。
rootPwd 操作系统用户root的密码,本例中和前面的loginUserPwd相同。
3.4 开始安装集群
执行
./gcinstall.py --silent=demo.options
并在许可同意部分输入字母y后按回车
在系统检查成功后,在确认安装时输入字母y后按回车。
等待安装完成
确认安装结果
gcadmin
如果安装后立即运行如上命令报错,可以稍等10秒再尝试1次。
3.5 设置数据分布策略
编辑分布策略的xml文件。默认安装程序会在当前目录下生成一个gcChangeInfo.xml
vi gcChangeInfo.xml
里面的node ip 是我们新安装集群的IP, 本例中我们不修改这个。
切换到操作系统gbase用户
su - gbase
请注意如果你目录变了,请转到我们安装程序的目录。
新建数据库分布策略
gcadmin distribution gcChangeInfo.xml p 1 d 0
其中
distribution 是创建新的分布策略的命令。
gcChangeInfo.xml收我们分布策略配置文件。
p 是每个节点的分片数量,我们设置为1。
d 是副本数量,由于本例是单个节点,副本数为0. 如果你是多个节点,这里可以设置为1。
在确认时输入字母y然后回车
通过如下命令检查集群分布策略是否生效
gcadmin showdistribution
其中右半部分的Duplicate Segment node IP是副本的IP,我们无副本,所以是空的。
3.6 集群初始化
使用命令行客户端登陆集群
gccli
执行如下命令
initnodedatamap;
至此,数据库已经安装完毕,可以正式提供服务了。
4 开始使用GBase 8a MPP
本部分是介绍数据库的最基本操作,创建数据库,创建表,插入数据并查询。
4.1 创建数据库
执行如下命令,创建指定名字的数据库。
create database testdb;
切换到testdb数据库
use testdb;
4.2 创建表
创建表,我们简单设置一个人员名字表,包含如下几个字段:
id 人员编号, int
name 姓名,varchar
joinDate 加入日期,date
salary 薪水,Decimal
create table human(id int,name varchar(100),joindate date,salary decimal(10,2));
查看当前库有哪些表
show tables;
查看表的建表语句
show create table human;
查看表结构
desc human
确认我们创建的表是正确的。
4.3 插入数据
通过insert方式,插入3行数据。
insert into human values(1,'张三','2000-01-02','30000');
insert into human values(2,'李四','2003-03-04','20000');
insert into human values(3,'王五','2008-05-06','15000');
4.4 查询数据
通过select语句,查询我们保存到数据库的数据。
select count(*) from human;
select * from human where id=1;
select * from human where salary>=20000;
5 批量数据入库
load data语句是GBase 8a MPP批量数据入库性能极高的SQL入库方式之一。
5.1 构造数据
我们人工构造了几行数据,文件为/home/gbase/human.txt
[gbase@localhost ~]$ cat human.txt
1,First,2012-12-23,10000.12
2,Second,2013-11-12,8888.88
3,中国人,2019-08-09,9999.99
[gbase@localhost ~]$ pwd
/home/gbase
5.2 加载入库
本次加载只用于演示,采用基于ssh的sftp入库。如测试性能,请使用ftp,hdaoop等协议。
load data infile 'sftp://gbase:gbase1234@10.0.2.106/home/gbase/human.txt' into table testdb.human fields terminated by ',';
其中数据源采用了sftp格式
sftp://gbase:gbase1234@10.0.2.106/home/gbase/human.txt
入库目标是 testdb.human
fields表示字段的一些定义,此处只设定了字段之间的分隔符为单引号。
terminated by ','
5.3 其它一些协议的加载样例如下
ftp://gbaseload:gbaseload@192.168.1.1/2.csv
ftp://gbase:gbase@127.0.0.1//home/gbase/data/a.tbl
sftp://gbase:gbase@127.0.0.1/data/a.tbl
hdp://hadoop@192.168.10.1:50070/data/test.tbl
请参考 //www.gbase8.cn/?p=121
6 表数据导出
将数据库的数据,导出为平稳本格式的数据文件。
GBase 8a MPP数据导出包括本地导出和远程导出。
本地导出:如下例子是用逗号分割的样例
select * from human into outfile 'sftp://gbase:gbase1234@10.0.2.106/home/gbase/human_out.txt' fields terminated by ',';
参数与加载一样的。
由于默认导出时,会创建一个和导出文件相同的目录,比如导出为human_out.txt, 实际上是 XXX/human_out.txt/human_out.txt
如上通过
set gbase_export_directory=0;
关闭导出时生成目录的参数。
远程导出:
rmt:select * from human into outfile '/data/gbase/human_out.txt' fields terminated by ',';
参考 http://www.gbase8.cn/?p=119