数据库运维
记录DBA学习成长历程

第3章:GBase 8a MPP Cluster V95 安装卸载及升级

文章目录

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

赞(0)
MySQL学习笔记 » 第3章:GBase 8a MPP Cluster V95 安装卸载及升级