2024年3月份有幸参加Gbase公司(南大通用)组织的GBase 8a培训,总结下安装配置。由于自用笔记本性能容量问题,只安装了一个gcware和三个节点。时间仓促,写的不够严谨,仅供参考。
一、概述
GBase 8a是一款具有高效统计和分析能力的列存储关系型数据库管理系统,能够管理TB级数据。GBase 8a面向分析型应用领域,以列为基本存储方式和数据运算对象,结合列数据压缩处理、并行处理、快速智能索引等新型数据处理技术,在查询、统计、分析以及批量加载性能上具备突出的优势。
二、安装与配置Gbase 8a集群
(一)名词
1.管理节点
指运行gcware服务的节点,其组成的集群,叫管理集群
2.调度节点
指运行gclusterd,对外提供连接,对内分析执行计划,调度计算节点工作。其组成的集群叫调度集群。
3.计算节点
指gbased,提供数据存储和计算服务。其组成的集群叫计算集群。
因为gcware对于集群至关重要,只部署一台没有冗余和高可用性,一旦这个节点故障,整个集群就不能使用了。
部署两台,当一台出现问题,另一台也会因为没有满足大数原则,集群同样无法工作。
所以通常gcware至少部署3台及以上。
gcluster的主要功能之一是提供用户访问接口,理论上只要满足用户访问并行需求即可。
但gcluster节点会记录元数据,需要满足一定的备份需求,所以至少2台。
通常gcluster与gcware部署在一起,所以没有特别的访问并行度要求的情况下,建议与gcware一致并部署在一起。
4.模组进程
Coordinator Node
gcware 数据共享和同步
gclusterd SQL解析,优化,生成执行计划,下发SQL给DataNode
gcrecover 数据不一致下的修复
Data Cluster
gnode:gbased 数据本地计算和存取
syncserver:gc_sync_server 数据同步和一致性检查.gcware发现数据不同步,通知sync执行同步
监控
gcmonit 监控集群各进程且监控gcmmonit进程,并负责对应进程故障下的拉起
gcmmonit 只监控gcmonit进程,并负责故障下拉起
gcmonit --start/stop/restart/status/help/version
(二)环境准备:
节点规划设计
序号 主机名 IP地址 角色 CPU 内存 操作系统
1 gbase8a_db1 192.168.3.111 管理、数据、主节点 2核 4G CentOS 7.5.1804
2 gbase8a_db2 192.168.3.112 管理、数据节点 2核 4G CentOS 7.5.1804
3 gbase8a_db3 192.168.3.113 管理、数据节点 2核 4G CentOS 7.5.1804
安装要求
建议
1、创建LVM逻辑卷mount到/opt目录。
/opt目录是GBase8a数据库的默认安装目录,数据库的所有数据将默认存储在该目录下。设置逻辑卷可以按需要扩充磁盘容量。
2、建议使用磁盘阵列(RAID)技术
尽管GBase8a数据库提供高可用机制,但节点的故障和数据恢复过程对数据库的整体性能会产生一定的影响,所以建议使用RAID技术,使单节点的磁盘问题在节点内部解决,不影响集群的工作效率。
3、建议设置各节点时钟同步
时间对于各节点追踪某事件发生的先后顺序至关重要。同步好时钟便于故障排查和问题溯源
1.关闭selinux以及防火墙
[root@gbase8a_db1 ~]# systemctl disable firewalld
systemctl disable firewalld.service
systemctl stop firewalld.service
systemctl status firewalld.service
永久关闭selinux方法:修改/etc/sysconfig/selinux配置文件即可
sed -i ‘/^SELINUX=/d’ /etc/selinux/config
echo “SELINUX=disabled” >> /etc/selinux/config
cat /etc/selinux/config|grep “SELINUX=disabled”
2.配置IP映射
[root@gbase8a_db2 .ssh]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.3.111 gbase8a_db1
192.168.3.112 gbase8a_db2
192.168.3.113 gbase8a_db3
重启网络服务命令
service network restart / systemctl restart network
3.配置HOSTNAME
[root@gbase8a_db1 .ssh]# hostnamectl set-hostname gbase8a_db1
4.配置3台主机免密登录
创建公钥和私钥
执行以下命令后,如果提示,就一直按“Enter”键,直至生成公钥。
cd ~/.ssh
ssh-keygen -t rsa
cat id_rsa.pub >> authorized_keys
5.安装必须软件包
yum install python bc bzip3 -y
6.创建用户群组及所需目录
V9版本运行期间,不再使用root操作系统用户,所以需要提前创建运行数据库的操作系统用户,dbaUser,以及设置操作系统环境变量,包括参数。
注意:需要在每个数据库节点上都做环境准备,这些是root才能做的。
groupadd gbase
useradd gbase -g gbase
echo “gbase” | passwd gbase --stdin
mkdir -p /opt/gbase
chown gbase:gbase /opt/gbase
chown gbase:gbase /tmp
(三)安装gbase 8a 集群
1.上传安装包到其中一台主机然后解压并将SetSysEnv.py文件复制到其他两台使用root用户分别执行
其中SetSysEnv.py程序,在数据库安装包内,可以提前解压,发到每台服务上,在创建操作系统gbase用户后,运行即可。其中installPrefix是安装目录,该目录必须存在,且拥有gbase用户的读取和写入权限。可以通过gbase用户,创建一个目录来测试是否正确。
[root@gbase8a_db1 .ssh]# cd /opt/
[root@gbase8a_db1 opt]# tar xfj GBase8a_MPP_Cluster-NoLicense-FREE-9.5.3.28.12-redhat7-x86_64.tar.bz2
[root@gbase8a_db1 opt]# ls
GBase8a_MPP_Cluster-NoLicense-FREE-9.5.3.28.12-redhat7-x86_64.tar.bz2 gcinstall rpm VBoxGuestAdditions-7.0.0
[root@gbase8a_db1 gcinstall]# cd /opt/gcinstall/
[root@gbase8a_db1 gcinstall]# python SetSysEnv.py --dbaUser=gbase --installPrefix=/opt/gbase --cgroup
[root@gbase8a_db2 opt]# scp root@192.168.3.111:/opt/gcinstall/SetSysEnv.py /opt/
[root@gbase8a_db2 opt]# python SetSysEnv.py --dbaUser=gbase --installPrefix=/opt/gbase --cgroup
[root@gbase8a_db3 opt]# scp root@192.168.3.111:/opt/gcinstall/SetSysEnv.py /opt/
[root@gbase8a_db3 opt]# python SetSysEnv.py --dbaUser=gbase --installPrefix=/opt/gbase --cgroup
[root@gbase8a_db3 opt]#
2.修改主节点的安装配置文件(demo.options)
切换到 gbase 用户:
cd /opt/gcinstall
vim demo.options
配置如下:
installPrefix= /opt
#添加管理节点(coordinateHost)
coordinateHost = 192.168.3.111,192.168.3.112,192.168.3.113
coordinateHostNodeID = 111,112,113
#添加数据节点(dataHost)
dataHost = 192.168.3.111,192.168.3.112,192.168.3.113
#existCoordinateHost =
#existDataHost =
gcwareHost = 192.168.3.111
gcwareHostNodeID = 111
#loginUser= root
#loginUserPwd = ‘’
#loginUserPwdFile = loginUserPwd.json
dbaUser = gbase
dbaGroup = gbase
dbaPwd = ‘gbase’
rootPwd = ‘111111’
#rootPwdFile = rootPwd.json
说明:V953 和 V952 版本不同在于,gcware 模块可以单独部署,可以不与 gcluster 节点部署在一起了,demo.options 文件中多了gcware 相关参数(gcwareHost 和 gcwareHostNodeID)。
dbaPwd 是 gbase 账户的密码
rootPwd 是 root 账户的密码
需求注意的是
三个节点的root密码必须一样,否则无法安装。
文件里面dbaUser=gbase的意思是脚本自动会创建一个gbase的用户。
3个节点的ip需要改成自己虚拟机的ip。
installPrefix 安装目录,请与环境准备的目录一致。
coordinateHost 管理协调节点IP. 注意1台物理机,只能写一个IP。
dataHost 数据计算节点IP。
gcwareHost 集群管理节点IP,同样1台物理机,只能写1个IP。
gcwareHost:集群管理节点
dbaUser 操作系统数据库用户名
dbaGroup 操作系统数据库用户组
dbaPwd 操作系统数据库用户密码
3.执行安装脚本
./gcinstall.py --silent=demo.options


yum -y install bc&&yum -y install bzip2&&./gcinstall.py --silent=demo.options
4.报错信息汇总以及解决办法
问题1
Permission denied:
出现的原因的是:没有权限进行读、写、创建文件、删除文件等操作

管理集群(gcware)1个节点;
调度集群(coordinator)3个节点;
计算节点3个,当前还没组成集群。
问题2

解决办法
添加gcwareHost

问题3

【解决方案】修改所有数据节点配置文件 /…/gnode/config/gbase_8a_gbase.cnf
#gbase_memory_pct_target=0.8
#gbase_heap_data=512M
#gbase_heap_temp=256M
#gbase_heap_large=256M
四行全部放开,存盘后,重启该节点所有服务。
问题4
如果遇到 IPV6 protocol not supported,please turn it on…的错误提示,
请手动开启 IPV6,执行:
echo “net.ipv6.conf.all.disable_ipv6 = 0” >> /etc/sysctl.conf
echo “net.ipv6.conf.default.disable_ipv6 = 0” >> /etc/sysctl.conf
sysctl -p
立即生效
5.安装成功后退出gbase用户重新进入后使用gcadmin查看群集状态

在安装好集群后,在执行安装操作的节点上,安装包目录下会生成一个包含所有gnode节点信息的gcChangeInfo.xml:
[gbase@gbase8a_db1 gcinstall]$ cat gcChangeInfo.xml
<servers>
<rack>
<node ip="192.168.3.112"/>
</rack>
<rack>
<node ip="192.168.3.111"/>
</rack>
<rack>
<node ip="192.168.3.113"/>
</rack>
</servers>
[gbase@gbase8a_db1 gcinstall]$
(四)组建计算集群
我们还是使用常规的1个分片,1个副本的策略。如下创建集群并初始化。
1、分布信息表是 GBase 8a 数据库存放数据的核心映射表。它记录着 VC、节点和分片布局的关键信息。它是数据库数据访问和存储的关键,决定着数据库的整体性能和高可用性。
2、数据库初始化需要首先登录到数据库操作界面,对当前集群的 distribution 表进行初始化。
1.设置分片信息
使用自动生成的gcChangeInfo.xml文件设置分片信息,这个操作将会自动设置集群为V95的兼容模式
gcadmin distribution gcChangeInfo.xml p 2 d 1 pattern 1

gcChangeinfo.xml 描述集群内节点和rack(机柜)对应关系的文件,默认在gcinstall目录
p 每个数据节点存放的主分片数。pattern 1 模式下,1<=p<rack 内节点数
d 每个主分片的副本数,取值0,1,2 默认1.最大2
pattern 描述分片规则的模板。1为rack高可用,机架间互备;2为节点高可用,节点间互备。默认为1。
1 还有一种用法:所有节点都在一个机架内,实现分片各副本负载均衡高可用。
gcChangeInfo.xml自动包含了前面提供的所有节点IP,但默认在一个rack内,如果要修改需手工编辑
我们还是使用常规的1个分片,1个副本的策略

再次查看集群状态
gcadmin

也可以执行如下命令查看分片信息
gcadmin showdistribution node

2.数据库初始化
在任意管理节点上执行如下命令
每个 GBASE南大通用VC 在创建完 distribution 后必须先执行 initnodedatamap。
初始数据库root密码为空。
gccli -u root -p
gbase> initnodedatamap;

3.创建库表

至此,GBase 8a 集群的安装步骤就完成了
4.查看多实例的目录
可以看到安装目录下,是根据IP创建了各自的目录。
其中只有111目录包含了gcluster完整目录,其它非调度节点的gcluster下只有个gcrman用于备份还原的程序。
其中只有111目录包含了gcware完整目录,其它非调度节点的gcware下只有个include和lib64依赖类库和头文件等。



只有111的gcware包含了完整的程序,其它的只有客户端部分。

三、启停Gbase8a 服务
1.gcware服务启停
有单独的gcware_services命令

2.其它服务启停
通过 gcluster_services 进行
其中因为gbase和syncserver是多IP的,所有支持了带IP的格式做单独的启停。其它服务都是本机只有1份。

3.全部启停
原有的命令,会将本机器的所有服务都启停,包括多实例的计算节点。


四、集群卸载
1.停止所有节点的所有集群服务,在所有节点执行
$ gcluster_services all stop
2.停止 gcware 服务,在安装了 gcaware 服务的节点上执行
gcware_services all stop
3.在主节点上执行卸载命令执行卸载脚本
cd /opt/gcinstall
$./unInstall.py --silent=demo.options




