- 1 集群节点环境设计
- 2 安装前准备工作
- —2.1 准备 SSH 工具
- —2.2 节点联通测试
- —2.3 检查所有节点防火墙是否关闭
- —2.4 检查所有节点 selinux 服务是否禁用:
- —2.5 准备安装包
- —2.6 安装建议
- 3 集群的环境准备
- —3.1 安装包解压缩
- —3.2 在集群所有节点上创建DBA用户
- —3.3 在集群所有节点上创建安装目录并授权
- —3.4 复制环境设置脚本至所有节点(全部节点)
- —3.5 运行SetSysEnv.py脚本,配置安装环境(全部节点)
- 4 集群的安装
- —4.1 主安装节点上修改gcinstall目录下配置文件(demo.options)
- —4.2 在主安装节点使用DBA用户执行安装脚本
- —4.3 集群状态查看
- —4.4 申请授权注册License(主节点)
- —4.5 导入和检查授权
- —4.6 获取License状态
- —4.7 License失效原因分析
- —4.8 在集群所有节点上启动全部集群服务
- —4.9 设置集群分片信息,生成distribution(coordinator节点)创建发布
- —4.10 数据库初始化(coordinator节点)
- —4.11 安装失败的原因主要有如下几种
- —4.12 默认端口
- 5 集群的卸载
- —5.1 停止所有节点的所有集群服务
- —5.2 验证卸载配置文件
- —5.3 查看服务状态
- 6 数据库版本升级
- —6.1 数据库升级分类
- —6.2 跨版本升级示例
- —6.3 版本升级的步骤
- —6.4 V8.6.X.X 集群升级到 V9.5.X.X 集群操作示例
- —6.5 V9.5.X.X 集群回退到V8.6.X.X 集群操作
1 集群节点环境设计
IP | 角色 | OS | hostID |
---|---|---|---|
10.0.0.11 | 管理、数据、主节点 | CentOS 7.6 | gbase02 |
10.0.0.12 | 管理、数据节点 | CentOS 7.6 | gbase03 |
10.0.0.13 | 管理、数据节点 | CentOS 7.6 | gbase04 |
1 Coordinator节点的数量不得超过64台。
2 Coordinator节点必须部署在同一IP网段内。Data节点无此要求。
3 操作系统要求:redhat 7.x(或者centos 7.x)。安装系统时建议在“软件选择”中勾选“带GUI的服务器”中的“开发工具”选项。
硬件配置:内存2G以上(推荐4G),硬盘 20G以上,固定IP地址。
网络要求:各节点IP是同一网段,并互相能连通;开启 SSH 服务;关闭防火墙、关闭seLinux服务。
示例:
2 安装前准备工作
—2.1 准备 SSH 工具
推荐 XManager 5 以上。使用 XShell 模块分别连接三个 IP 创建三个 Session 窗口,方便在工具底部 Compose Bar中输入命令,同时发送命令到三个 Session 窗口。
—2.2 节点联通测试
在 gbase02 窗口分别执行
# ssh root@10.0.0.12
# ssh root@10.0.0.13
若能成功跳转,则说明节点互通。
—2.3 检查所有节点防火墙是否关闭
# systemctl status firewalld.service
如果没关闭,则执行下面命令永久关闭
# systemctl stop firewalld
# systemctl disable firewalld
—2.4 检查所有节点 selinux 服务是否禁用:
# sestatus
系统提示以下信息说明 selinux 已被禁用
SELinux status: disabled
否则修改配置文件/etc/selinux/config,将SELINUX参数设置为 disabled,即 SELINUX=disabled
保存退出后,需要重新启动才能生效。
—2.5 准备安装包
请将下载的安装包 GBase8a_MPP_Cluster-License-9.5.2.39-redhat7.3-x86_64.tar.bz2 上传到 node173:/opt 下。
—2.6 安装建议
1、建议创建LVM逻辑卷mount到/opt目录。
/opt目录是GBase 8a数据库的默认安装目录,数据库的所有数据将默认存储在该目录下。
设置逻辑卷可以按需要扩充磁盘容量。
2、建议使用RAID技术
尽管GBase 8a数据库提供高可用机制,但节点的故障和数据恢复过程对数据库的整体性能会产 生一定的影响,所以建议使用RAID技术,使单节点的磁盘问题在节点内部解决,不影响集群的 工作效率。
3、建议设置各节点时钟同步
时间对于各节点追踪某事件发生的先后顺序至关重要。同步好时钟便于故障排查和问题溯源。
3 集群的环境准备
—3.1 安装包解压缩
[gbase02]# cd /opt
[gbase02]# tar xf GBase8a_MPP_Cluster-License-9.5.2.39-redhat7.3-x86_64.tar.bz2
解压缩完成后,opt 下能看到生成 gcinstall 安装目录。
—3.2 在集群所有节点上创建DBA用户
# useradd gbase
# passwd gbase
本文,gbase 账户密码设置为 dba@gbase8a
—3.3 在集群所有节点上创建安装目录并授权
# mkdir -p /opt/gbase
# chown gbase:gbase /opt/gbase
# chown gbase:gbase /tmp
—3.4 复制环境设置脚本至所有节点(全部节点)
复制主节点的环境设置脚本(SetSysEnv.py)至从节点
[gbase03]# scp root@10.0.0.11:/opt/gcinstall/SetSysEnv.py /opt
[gbase04]# scp root@10.0.0.11:/opt/gcinstall/SetSysEnv.py /opt
—3.5 运行SetSysEnv.py脚本,配置安装环境(全部节点)
[gbase02 opt]# python SetSysEnv.py --dbaUser=gbase --installPrefix=/opt/gbase --cgroup
[gbase03 opt]# python SetSysEnv.py --dbaUser=gbase --installPrefix=/opt/gbase --cgroup
[gbase04 opt]# python SetSysEnv.py --dbaUser=gbase --installPrefix=/opt/gbase --cgroup
参数说明:
--installPrefix:用户指定的数据库安装目录,必须为demo.options 文件中 installPrefix设置的目录。
--dbaUser=DBA用户,即指定的集群安装用户。必须与demo.options 文件中dbaUser一致。
--cgroup:使用资源管理功能时,主要用于修改资源管理配置文件。可选参数,默认不配置。
日志: 记录在/tmp/SetSysEnv.log文件中
如果遇到 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 # 立即生效
4 集群的安装
—4.1 主安装节点上修改gcinstall目录下配置文件(demo.options)
切换到 gbase 用户:
[gbase02]# su - gbase
[gbase02]$ cd /opt/gcinstall/
[gbase02 gcinstall]$ vi demo.options
installPrefix = /opt/gbase coordinateHost = 10.0.0.11,10.0.0.12,10.0.0.13 coordinateHostNodeID = 11,12,13 dataHost = 10.0.0.11,10.0.0.12,10.0.0.13 #existCoordinateHost = #existDataHost = dbaUser = gbase dbaGroup = gbase dbaPwd = 'dba@gbase8a' rootPwd = '123456' #rootPwdFile = rootPwd.json
dbaPwd 是 gbase 账户的密码
rootPwd 是 root 账户的密码
—4.2 在主安装节点使用DBA用户执行安装脚本
[gabse02 gcinstall]$ ./gcinstall.py --silent=demo.options [--passwordInputMode=Mode]
Mode包含三种模式:file、pwdsame、pwddiff,默认为 file
1) file : 表示从文件或命令行参数获取,该方式下,文件中的密码是明文的;
2) pwdsame:表示从终端由用户输入密码,并且所有节点的密码一致情况下使用该参数, 对于不同用户密码只输入一次,适用于所有节点都用这个密码;
3) pwddiff: 表示从终端由用户输入密码,并且节点间的密码不一致情况下使用该参数, 对于不同用户密码每个节点分别输入一次,适用于不同节点使用不同的密码;
注:集群各节点必须已创建DBA用户且安装目录的读写权属已划归给DBA用户。
备注:在安装过程中,先进行环境检查,可能会有错,列出缺少rpm依赖包名称,说明操作系统没有安装全必须的rpm包,需要根据rpm包的名称去各节点逐个安装。
8a需要的必备依赖包列表,请查看安装目录gcinstall下的 dependRpms 文件
[gbase@gbase02 gcinstall]$ pwd
/opt/gcinstall
[gbase@gbase02 gcinstall]$ cat dependRpms
注意:如果操作系统没cgroup(资源管理)组件,会出现如下警告,输入 Y 回车即可。
安装Gbase8a时出现以下错误Cgconfig,需要安装 libcgroup和 libcgroup-tools。
—4.3 集群状态查看
安装结束之后,查看集群的状态。
[root@gbase02 gbase]# su - gbase
[gbase@gbase02]$ gcadmin
因为没有注册授权,gcluster 和 gnode 服务是 close 状态属于正常现象。
CLUSTER STATE: ACTIVE =============================================================== | GBASE COORDINATOR CLUSTER INFORMATION | =============================================================== | NodeName | IpAddress | gcware | gcluster | DataState | --------------------------------------------------------------- | coordinator1 | 10.0.0.11 | OPEN | CLOSE | 0 | --------------------------------------------------------------- | coordinator2 | 10.0.0.12 | OPEN | CLOSE | 0 | --------------------------------------------------------------- | coordinator3 | 10.0.0.13 | OPEN | CLOSE | 0 | --------------------------------------------------------------- =============================================================== | GBASE CLUSTER FREE DATA NODE INFORMATION | =============================================================== | NodeName | IpAddress | gnode | syncserver | DataState | --------------------------------------------------------------- | Freenode1| 10.0.0.11 | CLOSE | OPEN | 0 | --------------------------------------------------------------- | Freenode2| 10.0.0.12 | CLOSE | OPEN | 0 | --------------------------------------------------------------- | Freenode3| 10.0.0.13 | CLOSE | OPEN | 0 | --------------------------------------------------------------- 0 virtual cluster 3 coordinator node 3 free data node
—4.4 申请授权注册License(主节点)
—4.5 导入和检查授权
方式一:$ ./License -n node1ip,node2ip,... <-f /path/name.lic> <-u username> <-p password> • 用于导入单个节点或少数几个节点 License 的使用场景。
方式二:$ ./License --hosts=demo.hosts <-f /path/name.lic> <-u username> <-p password> • 用于导入多个节点 License 的使用场景。
参数说明:
-f 待导入的 License 文件路径及文件名称
-u 指定集群安装的用户名,目前仅支持 DBA 用户
-p 指定集群安装用户的密码
demo.hosts 文件中指明需要导入license的主机ip。一般与采集指纹时使用的列表相同。
导入授权:
[gbase@gbase02 gcinstall]$ ./License -n 10.0.0.11,10.0.0.12,10.0.0.13 -f /tmp/20210608.lic -u gbase -p dba@gbase8a
—4.6 获取License状态
用户使用 license 检测工具获取 license 状态信息,包括集群节点是否全部具备 license 文件, license 为试用版还是商用版, 如果是试用版 license,需要显示 license 到期日期。
方式一:$ ./chkLicense -n node1ip,node2ip,... -u username -p password
方式二:$ ./chkLicense --hosts=demo.hosts [-f /path/filename] -u username -p password 参数说明:
-f 指定 License 检查结果存放的文件及路径
-u 指定集群安装的用户名,目前仅支持 DBA 用户
-p 指定集群安装用户的密码
License 状态说明:
is_exist 用于标识 license 文件是否存在: yes 代表存在,no 代表不存在;
version 用于标识 license 类型: trial 为试用版, business 为商用版;
expire_time 用于标识试用版 license 的到期日期,只在检测试用版license 时才会显示;
is_valid 用于标识 license 是否有效: yes 代表 license 有效,no代表 license 失效;
若发现授权失效(is_valid is no),可能由于集群节点硬件变更,请重新生成指纹文件并发邮件申请授权。
检查授权导入情况:
[gbase@gbase02 gcinstall]$ ./chkLicense -n 10.0.0.11,10.0.0.12,10.0.0.13 -u gbase -p dba@gbase8a
—4.7 License失效原因分析
• license 过期,超过数据库合法使用期限
• 硬件变更
CPU变更
Memory变更(总内存大小变动等)
Mac地址变更(更换网卡、网卡数量变动等)
—4.8 在集群所有节点上启动全部集群服务
# su - gbase
$ gcluster_services all start
查看集群状态:
$ gcadmin
CLUSTER STATE: ACTIVE
VIRTUAL CLUSTER MODE: NORMAL
=============================================================== | GBASE COORDINATOR CLUSTER INFORMATION | =============================================================== | NodeName | IpAddress | gcware | gcluster | DataState | --------------------------------------------------------------- | coordinator1 | 10.0.0.11 | OPEN | OPEN | 0 | --------------------------------------------------------------- | coordinator2 | 10.0.0.12 | OPEN | OPEN | 0 | --------------------------------------------------------------- | coordinator3 | 10.0.0.13 | OPEN | OPEN | 0 | --------------------------------------------------------------- ======================================================================= | GBASE DATA CLUSTER INFORMATION | ======================================================================= | NodeName | IpAddress | gnode | syncserver | DataState | ----------------------------------------------------------------------- | node1 | 10.0.0.11 | OPEN | OPEN | 0 | ----------------------------------------------------------------------- | node2 | 10.0.0.12 | OPEN | OPEN | 0 | ----------------------------------------------------------------------- | node3 | 10.0.0.13 | OPEN | OPEN | 0 | -----------------------------------------------------------------------
—4.9 设置集群分片信息,生成distribution(coordinator节点)创建发布
语法:gcadmin distribution <gcChangeInfo.xml> <p number> [d number] [pattern 1|2]
gcChangeInfo.xml:是描述集群内节点和rack(机柜)对应关系的文件,默认存放于gcinstall目录。 p:每个数据节点存放的主分片数量。注:pattern 1模式下,p的取值范围为:1<=p<rack内节点数。 d:每个主分片的备份数量,取值为0,1 或2。默认值为1。
pattern:描述分片备份规则的模板。1 为rack高可用,2 为节点高可用。默认为 1。
示例:
[gbase@gbase02 gcinstall]$ gcadmin distribution gcChangeInfo.xml p 2 d 1 pattern 1
gcinstall 下生成 gcChangeInfo.xml 文件
<?xml version="1.0" encoding="utf-8"?> <servers> <rack> <node ip="10.0.0.11"/> <node ip="10.0.0.12"/> <node ip="10.0.0.13"/> </rack> </servers>
检查集群节点状态(在coordinator 节点上执行):
[gbase@gbase02 gcinstall]$ gcadmin
CLUSTER STATE: ACTIVE VIRTUAL CLUSTER MODE: NORMAL =============================================================== | GBASE COORDINATOR CLUSTER INFORMATION | =============================================================== | NodeName | IpAddress | gcware | gcluster | DataState | --------------------------------------------------------------- | coordinator1 | 10.0.0.11 | OPEN | OPEN | 0 | --------------------------------------------------------------- | coordinator2 | 10.0.0.12 | OPEN | OPEN | 0 | --------------------------------------------------------------- | coordinator3 | 10.0.0.13 | OPEN | OPEN | 0 | --------------------------------------------------------------- ============================================================================ | GBASE DATA CLUSTER INFORMATION | ============================================================================ | NodeName | IpAddress | DistributionId | gnode | syncserver | DataState | ---------------------------------------------------------------------------- | node1 | 10.0.0.11 | 1 | OPEN | OPEN | 0 | ---------------------------------------------------------------------------- | node2 | 10.0.0.12 | 1 | OPEN | OPEN | 0 | ---------------------------------------------------------------------------- | node3 | 10.0.0.13 | 1 | OPEN | OPEN | 0 | ----------------------------------------------------------------------------
也可以执行如下命令查看发布信息
[gbase@gbase02 gcinstall]$gcadmin showdistribution node
Distribution ID: 1 | State: new | Total segment num: 6 ============================================================================ | nodes | 10.0.0.11 | 10.0.0.12 | 10.0.0.13 | ---------------------------------------------------------------------------- | primary | 1 | 2 | 3 | | segments | 4 | 5 | 6 | ---------------------------------------------------------------------------- |duplicate | 3 | 1 | 2 | |segments 1| 5 | 6 | 4 | ============================================================================
—4.10 数据库初始化(coordinator节点)
在管理节点上执行如下命令(数据库root密码默认为空)
[gbase@gbase02 gcinstall]$ gccli -u root -p
gbase> initnodedatamap;
注:初始化命令只需对distribution表执行一次即可。
初始化成功,则整个8a集群安装完毕,可以创建第一个库和表。
gbase> create database test;
gbase>show databases;
gbase>use test;
gbase>create table t(id int ,name varchar(20));
gbase>show tables;
—4.11 安装失败的原因主要有如下几种
● boost库未安装或集群版本错误;
● DBA用户权限
● 用户环境设置
● 防火墙未关闭;
● SELinux未关闭;
● 端口被占用,导致gnode、gcluster不能启动;
● 重复安装,前面安装未卸载干净导致安装不成功。
安装失败日志:可查看gcinstall/gcinstall.log文件
—4.12 默认端口
5 集群的卸载
1、手动停止所有节点的集群服务;
2、验证卸载配置文件;
3、执行卸载操作;
注:卸载后,集群所有数据将丢失。 如有必要,请先备份库内数据;
—5.1 停止所有节点的所有集群服务
$gcluster_services <gbase|gcluster|gcrecover|syncserver|all> <start|stop [--force]|restart [--force] | info>
说明:
force:用于服务无法停止时,内部用 kill -9 即 kill -KILL 的方式强制停止服务进程。
info:显示进程当前运行状态。
[gbase02]$ gcluster_services all stop
[gbase03]$ gcluster_services all stop
[gbase04]$ gcluster_services all stop
Stopping GCMonit success! Stopping gcrecover : [ OK ] Stopping gcluster : [ OK ] Stopping gcware : [ OK ] Stopping gbase : [ OK ] Stopping syncserver : [ OK ]
—5.2 验证卸载配置文件
[gbase02]$ cd /opt/gcinstall
[gbase02]$ ./unInstall.py --silent=demo.options
注:passwordInputMode包含三种模式:file、pwdsame、pwddiff,默认为 file
•file : 表示从文件或命令行参数获取,该方式下,文件中的密码是明文的;
•pwdsame:表示从终端由用户输入密码,并且所有节点的密码一致情况下使用该参数,对于不同 用户密码只输入一次,适用于所有节点都用这个密码;
•pwddiff: 表示从终端由用户输入密码,并且节点间的密码不一致情况下使用该参数,对于不同 用户密码每个节点分别输入一次,适用于不同节点使用不同的密码;
进入 gcinstall 目录,使用安装用户执行卸载。
—5.3 查看服务状态
$ gcmonit --status
6 数据库版本升级
—6.1 数据库升级分类
1、版本内升级:
即指同一架构的数据库的小版本升级。比如V9.5.2.2升级到V9.5.2.3,同属V9.5.2.X版本, 集群架构没有变化。此时,使用原有集群的配置信息进行升级即可。
2、跨版本升级:
主要指集群架构发生变化的不同数据库版本之间的升级。比如V8.5.X.X升级到V8.6.X.X,或者 V8.6.X.X升级到V9.5.X.X版。这种升级往往伴随着新版集群架构原理的变化。升级前要充分考虑原有 集群架构和新版集群架构的兼容问题。
—6.2 跨版本升级示例
V8.6.X.X 集群升级到 V9.5.X.X 集群
—6.3 版本升级的步骤
1、检查集群的工作状态,确保升级前状态正常。
2、停止所有节点的集群服务。
3、对新版集群的安装包进行解压。
4、修改安装配置文件demo.options,该步骤须确保正确描述集群角色。 5、以dbaUser身份执行 ./gcinstall.py --silent=demo.options -U 进行升级。
—6.4 V8.6.X.X 集群升级到 V9.5.X.X 集群操作示例
1、检查集群工作状态,确保升级前所有集群节点状态正常。
[gbase@node1 gcinstall]$ gcadmin
2、停止所有节点的集群服务
[root@localhost ~]# service gcware stop
注:以root账户身份,在每个节点都要执行。
3、解压v95集群安装包,并切换到gcinstall 目录下
# tar xfj GBase8a_MPP_Cluster-License-9.5.2.30-redhat7.3-x86_64.tar.bz2
4、找到解压后的demo.options文件进行调整,确保文件描述与现有集群一致
installPrefix= /opt/gbase
coordinateHost = 172.16.4.131,172.16.4.132
#coordinateHostNodeID = 131,132
dataHost = 172.16.4.131,172.16.4.132,172.16.4.133
#existCoordinateHost =
#existDataHost =
dbaUser = gbase
dbaGroup = gbase
dbaPwd = 'gbase'
rootPwd = '111111'
5、以dbaUser身份执行升级操作
[gbase@node1 gcinstall]$ ./gcinstall.py --silent=demo.options -U
说明:
“-U”参数:即Update,指升级操作。
注:
1、升级成功后,须重新登录DBA账户再对集群进行管理和操作。
2、数据库升级会对原数据库进行备份,备份文件可用于升级回退操作。 3、备份文件默认存放在DBAUser 的 home 目录下。
—6.5 V9.5.X.X 集群回退到V8.6.X.X 集群操作
回退前提:
1、升级到 V9.5.X.X 时使用的 V9.5.X.X 安装包解压目录仍然存在。
2、升级时保存在 DBAUser 的 home 目录下的备份文件仍然存在。
如:gcluster_backup_9.5.2.30.114764_20191110162202.tar.bz2
3、升级完成后,没有执行过DDL、DML、扩容、生成新distribution操作,没有生成新的 FEVENTLOG。
操作步骤:
1、要停止集群所有节点服务。$gcluster_services all stop
2、必须使用DBA用户执行回退集群版本的命令:
$./Restore.py --backupFile=/home/gbase/gcluster_backup_9.5.2.30.114764_20191110162202.tar.bz2 --silent=demo.options
3、各节点重启服务。$gcluster_services all start