GBase 8a数据库集群新手使用入门

本文档适合于首次接触GBase 8a 集群的用户,以862Build43版本为基础,介绍安装,建表,入库,导出等最常用操作。GBase 8a数据库集群新手使用入门。

1、概述

本文档是介绍南大通用GBase 8a MPP集群(后面简称8a集群)的安装、简单使用,加点运维等基本操作,目标人群是刚接触8a集群的开发设计人员。

此文档只介绍基本使用,部分功能的详细说明,请查看产品手册。

本文档只包含8a集群V8版本在redhat 7上的操作样例。

1.1     约定

名字说明
管理节点 gcluster节点协调节点,coordinator节点,用于对外提供服务,解析和下发执行计划的节点。 包含gcluster的目录和gclusterd进程。 管理节点只保存表结构,不保存真实数据。 小规模集群里,管理和数据节点可以部署在同一个机器上。
数据节点 gnode节点负责保存数据,执行具体SQL的节点。 小规模集群里,管理和数据节点可以部署在同一个机器上。
协调节点 gcware节点负责集群一致性的服务。
Dba用户 dbaUser数据库安装的操作系统用户,一般都是gbase

2       环境准备

本章介绍简单【试用】8a集群所需要的环境。详细的环境需求,请参考产品手册的安装部分。

2.1     机器数量

1台即可,包括虚拟机。本文档只包含入门内容,如需进行性能测试或高可用测试,请主备最少3台服务器。

2.2     操作系统

本文档在redhat7版本操作样例,包括兼容的centos 7, cgsl5等。

  • 内存建议最低4G,如果你准备做并发测试等,建议不低于16G。
  • 磁盘空间请根据数据情况定,建议不低于10G,其中根目录可用空间不低于2G。
  • 操作系统root密码。虽然支持sudo用户安装,如需要请参考产品安装手册。
  • 本机的对外IP,本例是10.0.2.106 为一个ipv4地址。
  • 关闭防火墙。

2.3     数据库版本

如您没有从其它渠道获得8a集群版本安装包,可以从官网下载免费版,(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       安装

本章介绍8a集群的简单安装步骤,目标是一个可以建库,建表的使用环境。

3.1     上传

上传安装包到1台服务器的/root下面,如果有多台,【只需要】上传到任意一台即可。

上传安装包 - GBase 8a数据库集群新手使用入门

3.2     解压

在当前位置解压缩:

tar xvf GBase8a_MPP_Cluster-NoLicense-FREE-8.6.2_build43-R7-redhat7.3-x86_64.tar.bz2

GBase 8a 集群安装包解压文件列表
GBase 8a 集群安装包解压文件列表

3.3     配置

进入gcinstall 目录

cd gcinstall

编辑配置文件

vi demo.options

编辑后的配置文件样例如下(请忽略#开头的行)

GBase 8a 集群安装包,安装配置文件demo.options样例
GBase 8a 集群安装包,安装配置文件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后按回车

GBase 8a 集群安装开始,接受协议
GBase 8a 集群安装开始,接受协议

在系统检查成功后,在确认安装时输入字母y后按回车。

GBase 8a 集群安装开始,接受协议
GBase 8a 集群安装开始,接受协议

等待安装完成

确认安装结果

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       初始化业务

本部分是介绍数据库的最基本操作,创建数据库,创建表,插入数据并查询。

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       加载

由于8a集群的单条insert性能很差,每秒最高也就几十到几千条,在大数据下(建议千行以上),都是通过加载的方式,批量入库。

本部分仅用于8a集群加载功能的演示,如关心性能,请自行构造业务表以及业务数据,进行测试。

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

请参考 http://www.gbase8.cn/?p=121

6       导出

将数据库的数据,导出为平稳本格式的数据文件。

如下例子是用逗号分割的样例

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;

关闭导出时生成目录的参数。

参考 http://www.gbase8.cn/?p=119