Centos7安装GBase8a V9.5
提前了解:
1)官方说明内存如果低于2G无法启动服务,所以安装测试环境的话建议机器内存不低于4G;
2)节点数:MPP集群安装的节点数为奇数;
3)软件包:官网可下载(https://www.gbase.cn/download/gbase-8a?category=INSTALL_PACKAGE)。我选择下载 GBase8a_MPP_Cluster-License-9.5.3.14-redhat7.3-x86_64.tar.bz2 ;
4)手册:官网可下载,官方手册里面有详细的安装和使用说明;
5)client连接工具:官网可下载 gccli-9.5.3.14-redhat7.3-x86_64.tar.bz2 ;
6)部署方式:支持两种部署方式:
a)对称部署:把所有服务(GCWare、GCluster、GNode)全部安装部署在同一个节点上,此时,该节点既是Coordinator节点、同时也是Data节点;
b)非对称部署:将GCware、GCluster 和 GNode 安装在不同的节点上,一个节点只属于Coordinator Cluster 或 Data Cluster,也可以既属于 Coordinator Cluster 又属于 Data Cluster;
7)相关端口:
Gcluster 5258 TCP Coordinator 集群节点对外提供服务的端口
Gnode 5050 TCP Data 集群节点对外提供服务的端口
Gcware 5918 TCP/UDP gcware 节点间通讯端口
gcware 5919 TCP 外部连接 gcware 节点端口
syncServer 5288 TCP syncServer 服务端口
GcrecoverMonit 6268 TCP Gcrecover 服务端口
数据远程导出端口 16066-16166 TCP 数据远程导出端口
注意:
1)Coordinator Cluster 中要求在同一个网段,网络互通且通信质量优良。不只是能互通、还必须是同一网段;
2)Data Cluster 中要求网络互通且通信质量优良。能互通即可,不要求必须在同一网段;
3)所有 Coordinator 集群节点的端口要求一致;所有 Data 集群节点的端口要求一致;所有的 gcware 集群节点的端口要求一致;
一、准备工作
1.基础依赖安装
yum install -y psmisc libcgroup bc bzip2
python2:一般Centos7默认最小安装会自动包括python2,所以这里无需单独安装。
执行命令 python --version 可查python的看版本信息。
Redhat8/Centos8 需要单独安装 python2,安装完 python2 后使用的命令为 python2,需要将 python2 命令改为默认的 python 命令:alternatives --set python /usr/bin/python2 (或 ln -s 设置软连接 /usr/bin/python)
2.hostname配置
hostnamectl set-hostname gbase8anode01
vi /etc/hosts
192.168.1.162 www.gbase8anode01.com gbase8anode01
vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=gbase8anode01
3.防火墙配置
systemctl stop firewalld
systemctl disable firewalld
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
setenforce 0
4.时间&时区配置
timedatectl set-timezone Asia/Shanghai
timedatectl set-time "2023-10-13 14:00:01"
或者
date -s "2023-10-13 14:00:01"
hwclock -w
5.系统配置:
OS允许的最大进程数设置:
vi /etc/systemd/system.conf
DefaultTasksMax=infinity
虚拟内存设置:
echo "
soft nofile 65535
hard nofile 70000
" >> /etc/security/limits.conf
官方文档时建议设置成无限制:
# ulimit -H -v unlimited
# ulimit -S -v unlimited
或修文件:
#vi /etc/security/limits.conf
* soft as unlimited
* hard as unlimited
自己根据实际修改,测试环境安装时,此步骤为非必须的步骤。
注意:如果是安装用于生产的环境,则更多的配置优化,可以参考官方的产品手册,我这里只是搭建测试环境,有些官方推荐的其他优化配置这里并未修改。
6.重启
reboot
注意:如果是集群安装,则所有节点都进行上面相关操作,hostname按规划设置。
二、安装数据库
说明:
> 安装成功后会自动生成一个 /home/gbase/.gbase_profile 文件用于设置环境变量。
> GBase 8a MPP Cluster 数据库安装后,会有两个默认数据库用户 root 和 gbase。
root 用户密码初始为 “Admin2O11O531”,是数据库的超户。
gbase 是数据库管理操作(如备份 gcrcman、 gcadmin 等)常用来连接 server 的数据库用户。
初次登录数据库请使用 root 数据库用户, 在 root 数据库用户下及时更改 root 自己的密码并且给 gbase 数据库用户设置密码,妥善保管 root 数据库用户密码和 gbase 数据库用户密码,以便后续数据库管理操作能够正常连接server。
> 目录说明:
gcware:该目录在安装目录下,用于存储 gcware 的相关文件,包括配置文件和日志等, coordinator 节点有该目录, gnode 节点没有该目录。
gcluster:该目录在安装目录下,用于存储 gcluster 的相关文件,包括配置文件、日志和元数据等。
gnode:该目录在安装目录下,用于存储 gnode 的相关文件,包括配置文件、日志和用户数据等。
/home/dbaUser/:.gbase_profile 文件是数据库安装用户下的环境变量文件。
1.拷贝&解压安装包(root用户操作)
创建安装目
mkdir -p /opt/gbase8a
cp GBase8a_MPP_Cluster-License-9.5.3.14-redhat7.3-x86_64.tar.bz2 /opt/gbase8a
cd /opt/gbase8a
tar -xvf GBase8a_MPP_Cluster-License-9.5.3.14-redhat7.3-x86_64.tar.bz2
解压后会释放一个安装包目录 gcinstall
2.创建DBA对应的OS用户gbase & 创建安装目标目录 & 设置对应目录权限:
1)使用操作系统 root 用户在所有集群节点服务器上创建 DBA 对应的OS用户gbase:
adduser gbase
passwd gbase
2)使用 root 用户将 gcinstall 目录属主更改为 DBA OS用户(gbase):
chown -R gbase:gbase /opt/gbase8a/gcinstall
3)使用操作系统 root 用户在所有集群节点服务器上将安装目标目录的属主更改为 DBA OS用户(gbase),如果安装的目标目录不存在先创建再授权:
mkdir -p /opt/gbase8a
chown -R gbase:gbase /opt/gbase8a
4)使用 root 用户在所有节点上给 DBA OS用户(gbase)赋予安装 GBase 相关的权限:
安装前,使用 root 用户将 gcinstall 目录下的 SetSysEnv.py 文件拷贝到集群所有节点服务器上并执行该文件:
cd gcinstall
scp SetSysEnv.py gbase@集群节点IP:/opt/gbase8a/
./SetSysEnv.py --installPrefix=/opt/gbase8a --dbaUser=gbase
说明:
语法:python SetSysEnv.py --dbaUser=* --installPrefix=* [--cgroup]
参数:
--installPrefix:用户可配安装目录,必须为 demo.options 中 installPrefix 配置一致。集群日志按归档功能使用该参数。
--dbaUser:必须为 demo.options 中的 dbaUser。
--cgroup:使用资源管理功能时,主要用于修改资源管理配置文件。在使用资源管理前必须执行。
注意:
> 安装之前,需要在 gcluster 节点和 gnode 节点上使用 root 用户执行安装包中提供的一键部署脚本 SetSysEnv.py。 如果 GCware 节点独立部署在单独的服务器上, GCware 节点不需要执行 SetSysEnv.py 文件。
> 将该脚本拷贝到要安装集群的各个节点, 每个节点都需要使用 root 执行。
> 集群各个节点在安装之前, 必须存在集群的安装用户, 且拥有安装目录的读写权限。
3.切换到DBA OS用户(gbase),修改安装的配置文件:
su - gbase
vi /opt/gbase8a/gcinstall/demo.options
installPrefix= /opt/gbase8a
coordinateHost = 192.168.151.234,192.168.151.235,192.168.151.237
coordinateHostNodeID = 234,235,237
dataHost = 192.168.151.234,192.168.151.235,192.168.151.237
#existCoordinateHost =
#existDataHost =
dbaUser = gbase
dbaGroup = gbase
dbaPwd = 'gbase'
rootPwd = '111111'
#rootPwdFile = rootPwd.json
根据实际情况修改对应的参数。
注意:dbaPwd配置指定gbase OS用户密码,rootPwd指定root OS用户密码,这里指定的是安装时需要用到的OS用户的密码,而不是数据库用户密码,数据库用户密码时安装完成以后会自动生成默认密码,然后再自行修改。
我修改后的内容如下:
installPrefix= /opt/gbase8a
coordinateHost = 192.168.1.162
coordinateHostNodeID = 162
dataHost = 192.168.1.162
#existCoordinateHost =
#existDataHost =
#existGcwareHost=
gcwareHost = 192.168.1.162
gcwareHostNodeID = 162
dbaUser = gbase
dbaGroup = gbase
dbaPwd = 'gbase.123'
rootPwd = 'root.123'
#rootPwdFile = rootPwd.json
#characterSet = utf8
#dbPort = 5258
#sshPort = 22
参数说明:
coordinateHost 所有集群调度节点列表,可以是 IPV4、 IPV6、 主机名、 域名, 地址之间用“,”分隔;
coordinateHostNodeID 每个 Coordinator 节点的 nodeid, 在 IPV6 和域名安装时, 必须指定, IPV4 安装时可不指定,与 coordinateHost 中列出的节点列表一一对应, 之间用“,”分隔;
dataHost 所有集群 Data 节点列表, 可以是 IPV4、 IPV6、 主机名、 域名,节点地址之间用“ ,” 分隔; 注意当使用域名方式部署集群时, 必须先在各个节点的 /etc/hosts 中配置域名和 IP 的对应关系;
existCoordinateHost 所有已存在的 Coordinator 节点列表, IP 地址之间用“ ,” 分隔, 在集群扩容安装新节点时使用;
existDataHost 所有已存在的 Data 节点 IP 列表, IP 地址之间用“ ,” 分隔,在集群扩容安装新节点时使用;
existGcwareHost 所有已存在的 Gcware 节点 IP 列表, IP 地址之间用“,” 分隔,在集群扩容安装新节点时使用;
gcwareHost 所有集群 gcware 节点, 可以是 IPV4、 IPV6、 主机名、 域名,必须指定。 地址之间用“,”分隔;
gcwareHostNodeID 每个 gcware 节点的 nodeid, 在 IPV6 和域名安装时, 必须指定, IPV4 安装时可不指定, 与 gcwareHost 中列出的节点列表一一对应, 之间用“,”分隔;
dbaUser 集群的管理员用户, 安装和管理集群时使用的操作系统用户名。 在安装、 扩容、 替换节点前, 集群所有服务器均需先创建相同用户名的用户作为集群管理员用户;
dbaGroup 集群安装和运行时使用的操作系统用户所属的组名;
dbaPwd 集群安装和运行时使用的操作系统用户的密码;注意:这一点V9.5版本和V8.6版本手册介绍有区别;
rootPwd 安装集群节点机器中 linux 操作系统 root 用户的统一密码。注意:这一点V9.5版本和V8.6版本手册介绍有区别;集群在不支持非 root 用户安装的版本中依然需要 root 权限,这些版本升级时, 仍然需要提供用户 root 密码。 其它情况不需要使用;
rootPwdFile 该参数支持 root 用户在多节点不同密码方式, 与参数 rootPwd不能同时使用, 否则报错。 因不支持非 root 用户安装的集群版本依然需要 root 权限, 所以这些版本升级时, 仍然需要提供用户 root 密码。 其它情况不需要使用;
characterSet 系统支持指定字符集安装, 默认不在 demo.options 文件中显示。 953 的默认字符集是 utf8mb4( 4 字节) , 可选值为[utf8,gbk, gb18030, utf8mb4]。
sshPort用于指定集群各节点服务器的 sshd 服务端口号, 要求所有节点 sshd 服务端口号一致。 默认值为 22
4.执行脚本进行安装
以DBA OS用户(gbase)执行安装命令:
cd /opt/gbase8a/gcinstall/
$ ./gcinstall.py --silent=demo.options
语法:
./gcinstall.py --license_file=licenseFile --silent=demo.options [--passwordInputMode]
如果还未获得License,先安装后导入License,则执行安装命令:
./gcinstall.py --silent=demo.options [--passwordInputMode]
参数说明:
--silent:指定集群安装的配置文件;
--license_file:原厂许可文件, 写全路径和文件名。 文件需要在安装之前先获取, 并且有执行集群安装的用户的访问权限。
--passwordInputMode:
gcinstall.py 命令可选参数。用于指定密码获取的方式,通过不同的参数实现不同的获取方式。若指定该参数 ,则demo.options中的密码不必再修改。取值范围为file、pwdsame、pwddiff, 默认值为 file。
取值说明如下:
file : 表示从文件或命令行参数获取,和原有的方式一致,该方式下,文件中的密码是明文的;默认该方式;
pwdsame:表示从终端由用户输入密码,并且所有节点的密码一致情况下使用该参数,对于不同用户密码只输入一次;
pwddiff: 表示从终端由用户输入密码,并且节点间的密码不一致情况下使用该参数,对于不同用户密码每个节点分别输入一次。
安装过程中,shell界面进行交互提示输入和确认:
Do you accept the above licence agreement ([Y,y]/[N,n])? y
Cgconfig service is not exist on host ['192.168.1.162'], resource manangement can not be used, continue ([Y,y]/[N,n])? y # 操作系统没cgroup(资源管理)组件,输入 Y 回车忽略、继续安装
Are you sure to install GCluster on these nodes ([Y,y]/[N,n])? y
安装完成:
192.168.1.162 install gcware and cluster on host 192.168.1.162 successfully.
5.查看集群状态
安装成功后,通过 gcadmin 可以查看集群状态。
要先退出后重新进入gbase用户shell先执行,否则安装后直接执行会报命令不存在(环境变量未生效的原因),也可以直接执行 source ~/.bash_profile 使环境变量生效:
$ source ~/.bash_profile
或者退出重新登录生效
$ exit
# su - gbase
$ gcadmin
CLUSTER STATE: ACTIVE
=======================================
| GBASE GCWARE CLUSTER INFORMATION |
=======================================
| NodeName | IpAddress | gcware |
---------------------------------------
| gcware1 | 192.168.1.162 | OPEN |
---------------------------------------
=========================================================
| GBASE COORDINATOR CLUSTER INFORMATION |
=========================================================
| NodeName | IpAddress | gcluster | DataState |
---------------------------------------------------------
| coordinator1 | 192.168.1.162 | CLOSE | 0 |
---------------------------------------------------------
================================================================
| GBASE CLUSTER FREE DATA NODE INFORMATION |
================================================================
| NodeName | IpAddress | gnode | syncserver | DataState |
----------------------------------------------------------------
| FreeNode1 | 192.168.1.162 | CLOSE | OPEN | 0 |
----------------------------------------------------------------
由于License文件还没有申请和导入,所以 gcluster 状态、gnode 状态目前都是 CLOSE 状态。
6.生成License指纹、用于申请License用途:
我用了GBase8a V8.6文档介绍的License的生成方式,也可以:
# su - gbase
$ cd /opt/gbase8a/gcinstall
$ ./gethostsid -n 192.168.1.162 -f fingerprint -u gbase -p gbase.123
语法:./gethostid -n IP1,IP2…… IPn -f fingerprint -u gbase -p pwd;
-n 指定集群IP地址。注意:如果集群多节点的话,需要指定所有节点的IP地址,逗号分割。
-f 指定采集指纹保存(输出)的文件。
-u 指定OS用户 gbase
-p 指定OS用户 gbase 的密码
然后发邮件给官方申请 License,申请邮件描述 OS版本(Centos7.8-x86-64)和这里生成的指纹文件 fingerprint。
后来才发现V9.5的手册关于License的生成和导入描述上有区别:
V9.5的手册和V8.6有区别,V9.5手册描述如下:
Gcware 节点上运行 gcware 的用户提前生成 SSH 私钥, 并保存在默认位置。 ESN 的GBase 8a MPP Cluster 产品手册 3 集群安装升级与卸载文档版本 953( 2022-04-10) 南大通用数据技术股份有限公司 59
生成需要从 SSH 私钥取得公钥进行计算。 合法性校验时, 使用计算得到的 ESN 节点指纹。
1)生成SSH私钥
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key(/root/.ssh/id_rsa)
注意保护和备份好 SSH 私钥, 如果私钥变更会导致本批次申请的 license 文件失效。
2)获取ESN
$ cd gcinstall
$ ./getesn.py –silent=
发邮件申请获得许可后,指定License文件方式进行安装:
$ gcinstall.py –license_file=LICENSE_FILE –silent=demo.options
3)License检查
checkLicense
或者
show license
Licesne过期重新申请或导入:
importLicense FILENAME
我没有按照V9.5的方式操作。
7.安装客户端连接工具 gccli (非必须的步骤,为了导入License后能够进行数据库连接测试,所以我先安装 gccli 工具)
为了方便后续导入License后登录数据库、先安装客户端连接工具 gccli
解压gccli、然后拷贝解压后的文件夹gccli_install内的内容到安装路径,在安装路径下执行安装程序:
# su - gbase
$ mkdir -p /opt/gbase8a/gccli
$ cp gccli-9.5.3.14-redhat7.3-x86_64.tar.bz2 /opt/gbase8a/gccli
$ cd /opt/gbase8a/gccli
$ tar -xvf gccli-9.5.3.14-redhat7.3-x86_64.tar.bz2
$ chmod u+x ./gccli_install/gccli_install.sh
$ cp /opt/gbase8a/gccli/gccli_install/* /opt/gbase8a/ # 把解压后的目录下的所有文件(gccli_install.sh 和 gccli_standalone.tar.bz2)拷贝到我的gbase数据库的安装路径 /opt/gbase8a 后再执行安装脚本
$ cd /opt/gbase8a
$ ./gccli_install.sh gccli_standalone.tar.bz2 # 安装 gccli 工具
安装 gccli 以后,会在 /opt/gbase8a/gcluster/server/bin 目录下生成 gccli 软连接:
$ whereis gccli
gccli: /opt/gbase8a/gcluster/server/bin/gccli
安装 gccli 以后,就可以使用 gccli 工具连接 gbase8a 数据库:
帮助:
$ gccli --help
gccli ver 9.5.3.14.121230, for unknown-linux-gnu (x86_64) using readline 6.3
Copyright 2004-2023 General Data Technology Co.Ltd.
Usage: gccli [OPTIONS] [database]
语法:
gccli –u
–u
-p
-h
-P
-D
--nice_time_forma 指定用户操作耗时的最小精度,使用此参数,精确到毫秒,不使用,精确到秒。可选参数;
-c 使用此参数,用于使用 hint 优化方式。可选参数;
--force,-f 批量执行SQL文件时,如果中间有SQL执行报错,强制执行后续SQL,可选参数;
--verbose,-v 冗长模式。产生更多的输出。可以多次使用该选项以产生更多的输出。(例如,-v -v -v甚至可以在批处理模式产生表输出格式)。
--version,-V 显示版本信息并退出。
--vertical,-E 垂直输出查询输出的行。没有该选项,可以用\G结尾来指定单个语句的垂直输出。
--execute=statement, -e statement 执行语句并退出,可以是多个语句,多个SQL以“;”隔开,可选参数;
--silent,-s 沉默模式。产生少的输出。可以多次使用该选项以产生更少的输出。
--skip-column-names,-N 在结果中不写列名;
--skip-line-numbers,-L 在错误信息中不写行号。当你想要比较包括错误消息的结果文件时有用;
--html,-H 产生HTML输出;
< EOF接收输入的方式,可用于批量执行SQL文件,可选参数。
注意:
如果要指定端口,通过-P参数指定:
gccli -h192.168.1.101 -ugbase -P5258 -p
gccli -h192.168.1.101 -ugbase -P5050 -p
默认5258端口为GBase8a Coordinator 集群节点对外提供服务的端口,而5050为Data 集群节点对外提供服务的端口。集群上如果使用单节点对外端口5050连接可能会导致部分命令执行失败(例如:LOAD加载命令)。
GBase8a服务默认端口如下:
查看当前连接的是data node端口还是集群服务端口,可以执行下面命令通过 gcluster_hash_version 来查看
集群服务端口5258连接执行结果:
gbase> SHOW VARIABLES LIKE '%VERSION';
+----------------------------+-----------------+
| Variable_name | Value |
+----------------------------+-----------------+
| gbase_kafka_broker_version | |
| gbase_show_version | 1 |
| gcluster_hash_version | 1 |
| protocol_version | 10 |
| version | 9.5.3.14.121230 |
+----------------------------+-----------------+
data node端口5050连接执行结果:
gbase> SHOW VARIABLES LIKE '%VERSION';
+----------------------------+-----------------+
| Variable_name | Value |
+----------------------------+-----------------+
| gbase_kafka_broker_version | |
| gbase_show_version | 1 |
| protocol_version | 10 |
| version | 9.5.3.14.121230 |
+----------------------------+-----------------+
8.导入License文件
导入License文件之前,先说一下关于账号密码:
默认情况下,在gbase8a集群安装完毕后,集群会创建两个默认的数据库超级帐号 root 账号和 gbase 账号。
初次登录请使用 root 数据库用户登录, 首次登录 GBase 8a MPP Cluster 后,管理员必须为 root 帐号和 gbase 账号设置一个安全的数据库账号密码。
操作系统OS用户 root,密码为手工设置的
操作系统OS用户 gbase,密码为手工设置的
数据库超级帐号 root,默认密码为空(V8.6的默认密码为 Admin2O11O531)
数据库超级用户 gbase,密码为root登录数据库以后手工设置的
申请拿到License文件以后,使用License工具导入License到集群的每个节点,语法如下:
License -n IP1, IP2, ……, IPn <-f /path/name.lic> <-u username> <-p password> License --hosts=demo.hosts <-f /path/name.lic> <-u username> <-p password>
参数说明:
-n 用于导入单个节点或少数几个节点 License。
--hosts 用于导入多个节点 License。
-f 待导入的 LICENSE 文件路径及文件名称。
-u 指定集群的 DBA 用户。
-p 指定集群 DBA 用户的密码。==> 官方手册虽然描述如此,但实测为:这里指定的密码必须是OS用户密码、不能是数据库用户连接密码,否则导入License时会提示登录login失败;
注意:
1)--hosts=demo.hosts 指定的 demo.hosts 文件中包含需要进行指纹采集的 IP 列表(逗号分割):
vi demo.hosts
Hosts = 192.168.1.162
如果集群多节点则需要逗号分割指定所有IP:
Hosts = 192.168.1.162,192.168.1.163,192.168.1.164
2)License导入工具在 gcinstall 安装目录,执行License导入时,需要进入对应工具目录执行导入操作;
拷贝License文件&执行License导入:
# su - gbase
$ cp 20231016-01.lic /opt/gbase8a/
$ cd /opt/gbase8a/gcinstall
$ ./License -n 192.168.1.162 -u gbase -p gbase.123 -f /opt/gbase8a/20231016-01.lic
======================================================================
Successful node nums: 1
======================================================================
或者指定配置文件的方式执行License导入:
$ ./License --hosts=demo.hosts -u gbase -p gbase.123 -f /opt/gbase8a/20231016-01.lic
注意:
1)如果是集群多节点,需要 -n 指定所有IP,逗号分割;
2)这里指定的密码必须是OS用户密码、不能是数据库用户连接密码,否则导入License时会提示登录login失败:
[('192.168.1.162', 'Fail to login 192.168.1.162. errno: -1, errmsg: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).')]
Node: 192.168.1.162
Information: Fail to login 192.168.1.162. errno: -1, errmsg: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
导入成功后,可使用 LICENSE 检测工具获取 license 状态信息,包括集群节点是否全部具备 LICENSE 文件, LICENSE 为试用版还是商用版,如果是试用版 LICENSE, 会显示 LICENSE 到期日期:
语法:
chkLicense <-n IP1,IP2,……IPn | --hosts=demo.hosts > -u username -p password chkLicense -f /path /filename -u username -p password
$ ./chkLicense -n 192.168.1.162 -u gbase -p gbase.123
======================================================================
192.168.1.162
is_exist:yes
version:trial
expire_time:20240116
is_valid:yes
9.重启集群服务 & 查看集群状态
gcluster_services
语法:
gcluster_services help
gcluster_services
重启集群服务:
$ gcluster_services all restart
Stopping GCMonit success!
Stopping gcrecover : [ OK ]
Stopping gcluster : [ OK ]
Stopping gbase : [ OK ]
Stopping syncserver : [ OK ]
Starting gcluster : [ OK ]
Starting gcrecover : [ OK ]
Starting gbase : [ OK ]
Starting syncserver : [ OK ]
查看集群服务状态:
$ gcluster_services all info
gcluster is running
gcrecover is running
gbase is running
syncserver is running
$ gcadmin
CLUSTER STATE: ACTIVE
=======================================
| GBASE GCWARE CLUSTER INFORMATION |
=======================================
| NodeName | IpAddress | gcware |
---------------------------------------
| gcware1 | 192.168.1.162 | OPEN |
---------------------------------------
=========================================================
| GBASE COORDINATOR CLUSTER INFORMATION |
=========================================================
| NodeName | IpAddress | gcluster | DataState |
---------------------------------------------------------
| coordinator1 | 192.168.1.162 | OPEN | 0 |
---------------------------------------------------------
================================================================
| GBASE CLUSTER FREE DATA NODE INFORMATION |
================================================================
| NodeName | IpAddress | gnode | syncserver | DataState |
----------------------------------------------------------------
| FreeNode1 | 192.168.1.162 | OPEN | OPEN | 0 |
----------------------------------------------------------------
0 virtual cluster
1 coordinator node
1 free data node
这里显示的 0 virtual cluster,部署完后还没有初始化,后面会进行初始化操作。
使用 gccli 首次以root数据库账号登录,修改数据库连接的root密码和gbase用户密码:
注意:官方文档介绍数据库安装后的默认root密码为 Admin2O11O531 ,但我安装后实际 root 数据库连接密码为空,不指定 -p 参数登录并查看版本信息:
$ gccli -uroot
$ gbase> select version();
+-----------------+
| version() |
+-----------------+
| 9.5.3.14.121230 |
+-----------------+
1 row in set (Elapsed: 00:00:00.00)
10.初始化配置
GBase8a集群安装完成以后,必须进行初始化配置,才能使用。
说明:
1)单 VC 时建议使用兼容模式,需要进行初始配置,官方产品手册--3.2.3.1 单 VC 模式(兼容模式)初始配置中有纤细介绍;
2)多 VC 时,参考官方产品手册--3.2.3.2 多 VC 模式初始配置;
3)单 VC 模式是跳过手动创建 VC 步骤,直接创建 distribution 的模式。单 VC 模式下如果手动创建增加 VC, 则集群自动转换为多 VC 模式;
多 VC 模式不支持回退为单 VC 模式,如果删除新增的 VC 只保留最初的一个 VC,集群的模式仍然是多 VC 模式。
初始化时,两种模式二选一,进行对应的初始化操作。
模式1:单 VC 模式(兼容模式)初始配置(对应官方产品手册--3.2.3.1 单 VC 模式(兼容模式)初始配置)
"兼容模式" 是为了兼容 GBase 8a MPP Cluster V86 版本的使用习惯,由 GBase 8a MPP Cluster V9.5.2 之前的版本升级的集群,或者安装 GBase 8a MPP Cluster V9.5.2 后不创建 VC,直接创建 distribution 后的集群。
此时 GBase 8a MPP Cluster 集群会生成一个默认 VC, vcname 为 vcname000001。
在兼容模式下,集群使用习惯 GBase 8a MPP Cluster V86 版本相同, 使用 gcadmin showcluster 命令看不到 VC 的相关信息。
1)创建 distribution
使用 dbaUser 用户(即 demo.options 中的 dbaUser 用户)配置 gcChangeInfo.xml。在集群安装成功后,在安装包目录下会生成一个 gcChangeInfo.xml 文件。
$ cat /opt/gbase8a/gcinstall/gcChangeInfo.xml
创建 distribution
语法: [d num] [pattern 1|2] [db_user user_name] [db_pwd password] [dba_os_password password] 参数说明: 注意:rack data server number >= segment + duplicate segment number,否则执行会报错。例如,我单节点,如果执行 p 1 d 1 就会报错。 查看 distribution $ gcadmin showdistribution 删除 distribution 语法: 参数说明: 例如: 将指定 ID 的 distribution 信息保存到指定的文件中, 生成的文件为 xml 文件, 用户可修改该文件中的分片信息, 然后使用该文件重新生成 distribution。 gcadmin rmnodes gcChangeInfo.xml [vc_name | single_vc_rm_to_rc] 使用数据库用户 root/gbase 登录,执行 initnodedatamap 初始化命令: 注意: 如果不进行初始化,直接执行SQL的话,会报错,例如,直接执行下面建库 SQL 则会报错: ======================================= [gbase@gbase8av95 gcinstall]$ b)查看集群数据分片分布相关信息 Distribution ID: 1 | State: new | Total segment num: 1 Primary Segment Node IP Segment ID Duplicate Segment node IP 模式2:多 VC 模式初始配置(对应官方产品手册--3.2.3.2 多 VC 模式初始配置) “多 VC 模式”是指安装集群后,使用 gcadmin createvc 命令将数据节点划分为多个 VC 的集群模式。此时使用 gcadmin 命令可看到多个 VC 的相关信息。 例如,假设部署了5节点的集群,free node 4 个节点,则可以创建2个vc,将4个 free node 节点中的2个节点给vc1、另外2个分给vc2。 1)创建多VC和每个VC的distribution(多个VC间不能共享) a)创建vc1和vc1的distribution i)创建vc1 $ vi create_vc1.xml 用配置文件中指定的数据节点生成虚拟集群。 参数说明: $ cd /opt/gbase8a/gcinstall 创建vc1下的distribution i)创建vc2 ii)在 VC2 上创建 distribution $ cd /opt/gbase8a/gcinstall 创建vc2下的distribution gbase> use vc vc2; 3)安装后的检查 接下来,修改数据库账号密码。 初始安装默认生成的数据库账号 root 账号无密码,修改root密码、并设置 gbase 数据库用户的密码: 创建测试库: 远程连接测试: 按照官方手册安装完毕以后,发现使用 gbase 命令也可以登录: $ gbase -h192.168.1.162 -ugbase -Dtestdb01 -p 查看 gccli 信息: $ whereis gccli 发现原来 gccli 其实就是 gbase 的一个软链接。 如果端口不是默认的5258,则-P指定端口,数据库连接端口配置文件为:$GBASE_BASE/gcluster/config/gbase_8a_gcluster.cnf 查看数据库: 创建数据库: 创建用户: 用户重命名: 删除用户: 修改密码: 修改当前登录用户的密码: 授权SELECT权限: 授予超级用户权限(全部权限): user 用户名 =============================== vc的其他相关常用操作命令 删除虚拟集群 gcadmin rmvc 注意: import_vc.xml 导入 vc 所使用的配置文件。 停止虚拟集群 重命名虚拟集群 su - gbase
gcadmin distribution
gcChangeInfo.xml 指定生成 distribution 规则的配置文件。
p number 每个数据节点存放的分片数量,最小值为 1。
d number 每个分片的备份数量,取值为 0, 1 或 2。若不输入参数 d,默认值为 1。
pattern number 生成 distribution 所使用模式,取值为 1 或 2, pattern 1 为负载均衡模式, pattern 2 为高可用模式。若不输入参数 pattern,默认使用 pattern 1 生成 distribution。
db_user 数据库用户名,扩容生成新的 distribution 时需指定。
db_pwd 数据库密码,扩容生成新的 distribution 时需指定。
dba_os_password DBA 用户操作系统密码,扩容生成新的 distribution,或在新的 vc 中创建 distribution 时需指定。
执行创建 distribution 命令:
$ gcadmin distribution gcChangeInfo.xml p 1 d 0
创建 distribution 以后,查看主备数据分片分布信息,可以执行下面命令查看:
gcadmin showdistribution [node | f] [vc vc_name]
$ gcadmin showdistribution node
其他相关命令介绍:
gcadmin rmdistribution [ID] [vc vc_name]
从集群中删除指定 id 的 distribution。若不输入 distribution id, 则默认删除创建时间较早的 distribution, 集群中只有一个 distribution 时则默认删除该 distribution。
ID distribution id。
vc vc_name 指定删除的 distribution 的 vc 的名称。如果集群只有一个 vc,不需要指定 vcname。
$ gcadmin rmdistribution 1 vc vc1
保存 distribution到指定的xml文件:
getdistribution(将指定 ID 的 distribution 信息保存到指定的文件中):
gcadmin getdistribution
gcadmin addnodes gcChangeInfo.xml [vc_name | single_vc_add_to_rc]
gcadmin addnodes gcChangeInfo.xml vc1
gcadmin showcluster vc vc1 #查看集群状态
cp gcChangeInfo.xml gcRm_vc1.xml
vi gcRm_vc1.xml #修改 gcRm_vc1.xml 其中对应 nodeip 内容为待删除的节点 IP
gcadmin rmnodes gcRm_vc1.xml vc1
gcadmin #查看删除效果
2)集群初始化
集群安装完毕、且创建了 distribution 之后,在首次执行 SQL 命令之前,需要对数据库系统做初始化操作(initnodedatamap),才能正确执行所有的 SQL 操作。
$ gccli –uroot
gbase> initnodedatamap;
1)我初始安装后数据库root用户的密码为空,所以不需要指定-p,官方手册说是会生成一个默认密码,请根据实际情况来操作;
2)此命令只需执行一次,如果重复执行,会报告如下信息:
ERROR 1707 (HY000): gcluster command error: (GBA-02CO-0004) nodedatamap is already initialized.
gbase> create database test;
ERROR 1707 (HY000): gcluster command error: (GBA-02CO-0003)
nodedatamap is not initialized.
3)安装后的检查
集群安装完成后,管理员可以通过 gcadmin 查看集群的运行状态。
a)查看集群各节点状态是否正常(是否OPEN状态)
$ gcadmin
CLUSTER STATE: ACTIVE
VIRTUAL CLUSTER MODE: NORMAL
| GBASE GCWARE CLUSTER INFORMATION |
=======================================
| NodeName | IpAddress | gcware |
---------------------------------------
| gcware1 | 192.168.1.162 | OPEN |
---------------------------------------
=========================================================
| GBASE COORDINATOR CLUSTER INFORMATION |
=========================================================
| NodeName | IpAddress | gcluster | DataState |
---------------------------------------------------------
| coordinator1 | 192.168.1.162 | OPEN | 0 |
---------------------------------------------------------
=========================================================================================================
| GBASE DATA CLUSTER INFORMATION |
=========================================================================================================
| NodeName | IpAddress | DistributionId | gnode | syncserver | DataState |
---------------------------------------------------------------------------------------------------------
| node1 | 192.168.1.162 | 1 | OPEN | OPEN | 0 |
---------------------------------------------------------------------------------------------------------
$ gcadmin showdistribution
$ gcadmin showdistribution
========================================================================================================================
| 192.168.1.162 | 1 | |
========================================================================================================================
[gbase@gbase8av95 gcinstall]$
多 VC 模式,需要首先创建 VC,之后在每个 VC 上再创建 distribution。
生成创建 VC1 的配置示范文件
$ cd /opt/gbase8a/gcinstall
$ gcadmin createvc e create_vc1.xml
执行vc1创建命令:
$ gcadmin createvc create_vc1.xml
语法说明:
gcadmin createvc
注意:
1)用户创建虚拟集群需使用安装集群时 demo.options 中填写的 dbaUser 用户;
2)gcadmin createvc 命令一次只能创建一个 vc,即配置文件中只能有一个要创建 vc 的信息。
create_vc.xml 生成 vc 所使用的配置文件, 包含所有生成指定 vc 的数据节点的 IP 和可选参数 vc name 及 comment 信息。
e 生成创建 vc 的配置示范文件,使用该参数时将不会生成 vc。
example_file_name 生成的创建 vc 的配置时反问句的名称。
注意:安装脚本会自动生成包含所有 data node 节点 ip 信息的配置文件gcChangeInfo.xml,用户可根据自己需求修改。
ii)在 VC1 上创建 distribution
多 VC 模式,需要在每个 VC 下创建 distribution。
$ vi gcChangeInfo_vc1.xml
$ gcadmin distribution gcChangeInfo_vc1.xml p 1 d 1 vc vc1
b)创建vc2和vc2的distribution
生成创建 VC2 的配置示范文件
$ cd /opt/gbase8a/gcinstall
$ cp create_vc1.xml create_vc2.xml
也可以:
$ gcadmin createvc e create_vc2.xml
$ vi create_vc2.xml
执行创建vc1命令:
$ gcadmin createvc create_vc2.xml
$ cp gcChangeInfo_vc1.xml gcChangeInfo_vc2.xml
$ vi gcChangeInfo_vc2.xml
$ gcadmin distribution gcChangeInfo_vc2.xml p 1 d 1 db_user user_name db_pwd password dba_os_password password vc vc2
2)集群初始化
每个 VC 在创建完 distribution 后必须先执行 initnodedatamap。
使用数据库用户 root/gbase 登录,执行 initnodedatamap 命令。
$ gccli –uroot –p******
gbase> use vc vc1;
gbase> initnodedatamap;
gbase> initnodedatamap;
集群安装完成后,管理员可以通过 gcadmin 查看集群的运行状态。
a)查看集群各节点状态是否正常(是否OPEN状态)
$ gcadmin
b)查看集群数据分片分布相关信息
$ gcadmin showdistribution vc vc1
$ gcadmin showdistribution vc vc2
到此为止GBase8a安装配置 & License导入 & 初始化都已经完成。
$ gccli -uroot
gbase> SET PASSWORD = PASSWORD('admin.1q2w3e');
gbase> SET PASSWORD FOR gbase = PASSWORD('1q2w3e');
gbase> CREATE DATABASE testdb01;
$ quit;
$ gccli -ugbase -p -h127.0.0.1 -Dtestdb01
$ gccli -ugbase -p -h127.0.0.1 -P5258 -Dtestdb01
$ gccli -ugbase -p -h192.168.1.162 -P5258 -Dtestdb01
gbase> quit;
gccli: /opt/gbase8a/gcluster/server/bin/gccli
$ ls -l /opt/gbase8a/gcluster/server/bin/gccli
lrwxrwxrwx 1 gbase gbase 38 Oct 13 15:54 /opt/gbase8a/gcluster/server/bin/gccli -> /opt/gbase8a/gcluster/server/bin/gbase
其他相关命令参考:
SHOW DATABASES;
CREATE DATABASE testdb01;
CREATE USER test_user IDENTIFIED BY '1q2w3e';
RENAME USER old_user TO new_user;
DROP USER user_name;
SET PASSWORD [FOR user] = PASSWORD('newpassword')
SET PASSWORD FOR gbase = PASSWORD('1q2w3e')
SET PASSWORD = PASSWORD('1q2w3e');
GRANT SELECT ON *.* TO test_user;
GRANT ALL ON *.* TO user_test;
JDBC连接:
jdbc:gbase://[host][,failoverhost...][:port]/[database][?propertyName1][=propertyValue1][&propertyName2][=propertyValue2]...
password 密码
hostList 一组调度节点 coordinator 的IP列表,用逗号分割
failoverEnable 故障转移。连接集群时,如果当前IP(比如jdbc的最前面的IP)无法连接,则自动从 hostlist 里面挨个尝试连接,直到连接成功返回,或者均不可用报错退出。下一次连接,同样从第一个IP开始。默认为 false
gclusterId 负载均衡。和 falioverEnable、hostList 组合成负载均衡模式(循环轮询模式 round-robin)。要求 failoverEnable=true 且 hostList 参数不为空。每次获取连接时,将从所有IP列表(包括最前面的第一个IP和hostList里指定的IP)里,按顺序检查IP能否连接。下一次连接,将从下一个IP开始,如果到达末尾,则返回第一个IP。
gclusterId 以 a-z 任意字符开头的字符串,长度最大20。注意:在同一应用程序中(JVM), 如果有多个不同用途的URL,则gclusterId必须唯一,否则会导致访问了不属于本服务负责的集群。
useUnicode 处理字符串时指定驱动是否使用Unicode编码。是否只在驱动无法决定字符集映射的时候使用,或者在不考虑 GBase 是否有本地化支持的情况 下,尝试驱动使用该字符集(例如 UTF-8)。默认为false。
characterEncoding 如果 useUnicode 设置为 true,驱动在处理字符串时使用的编码。默认为 autodetect。
connectTimeout 在socket连接时的超时时间。
socketTimeout socket读写操作时的超时参数。一般和connectTimeout参数一起配置。
allowMultiQueries 允许多个SQL语句,通过默认的分号分割后,一次下发执行。默认为 false。
useSSL 启用SSL连接功能。默认 false。详情请参考 GBase 8a集群SSL配置-JDBC。
rewriteBatchedStatements 针对 insert values 方式的快速批量写入方式优化参数。
useOldAliasMetadataBehavior 返回的是别名还是列名。涉及功能 ResultSetMetaData.getColumnName( ),ResultSetMetaData.getTableName()。当 useOldAliasMetadataBehavior = true 时,返回值为别名,否则默认 false ,返回列名。
autoReconnect 自动重连。
1)删除虚拟集群前需要先删除 vc 下的所有用户库表及其他数据库对象,删除镜像关系,删除拓扑信息。
2)删除 VC 前需要将 gbase 库中对应的表(
gbase.consumer_group,
gbase.consumer_group_user,
gbase.resource_plan,
gbase.resource_pool,
gbase.resource_plan_directive,
gbase.resource_config,
gbase.cluster_resource_pool_usage_history,
gbase.resource_pool_events 等)中该 VC 的资源管理信息删除掉,否则将无法删除 VC;
3)gcadmin rmvc 命令一次只能删除一个 VC;如果指定删除的 VC 不存在,执行会报错。
导入虚拟集群
将已有集群的所有数据节点导入到当前集群,成为当前集群的一个 VC。
gcadmin importvc
e 生成导入 vc 的配置示范文件,使用该参数时将不会导入 vc。
example_file_name 生成导入 vc 的配置示范文件名称。
生成创建 VC 的配置示范文件:
$ gcadmin importvc e import_vc.xml
$ vi import_vc.xml
启动虚拟集群
gcadmin startvc
gcadmin stopvc
gcadmin renamevc
如果要卸载GBase8a数据库:
gcluster_services all stop
cd /opt/gbase8a/gcinstall
./unInstall.py --silent=demo.options