• Centos7安装GBase8a V9.5


    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 -p [-h] [-P] [-D] [--nice_time_format] [-c] [-f] [-v[v][v]] [-e] [<]

    –u 连接数据库的用户名称;
    -p 连接数据库的用户密码;
    -h 登录集群节点的IP 地址,默认127.0.0.1,可选参数。如果指定多个IP地址,则启动 gccli 的高可用功能,IP 地址之间采用英文逗号分隔,例如:192.168.1.101,192.168.1.102,192.168.1.103;
    -P 可选参数,指定连接的数据库服务端口,默认端口5258;
    -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

    语法:
    gcadmin distribution

    [d num] [pattern 1|2] [db_user user_name] [db_pwd password] [dba_os_password password]

    参数说明:
    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

    注意:rack data server number >= segment + duplicate segment number,否则执行会报错。例如,我单节点,如果执行 p 1 d 1 就会报错。

    查看 distribution
    创建 distribution 以后,查看主备数据分片分布信息,可以执行下面命令查看:
    gcadmin showdistribution [node | f] [vc vc_name]

    $ gcadmin showdistribution
    $ gcadmin showdistribution node


    其他相关命令介绍:

    删除 distribution

    语法:
    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 信息保存到指定的文件中):

    将指定 ID 的 distribution 信息保存到指定的文件中, 生成的文件为 xml 文件, 用户可修改该文件中的分片信息, 然后使用该文件重新生成 distribution。
    gcadmin getdistribution [vc vc_name]


    gcadmin addnodes gcChangeInfo.xml [vc_name | single_vc_add_to_rc]
    gcadmin addnodes gcChangeInfo.xml vc1
    gcadmin showcluster vc vc1  #查看集群状态

    gcadmin rmnodes gcChangeInfo.xml [vc_name | single_vc_rm_to_rc]
    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 操作。

    使用数据库用户 root/gbase 登录,执行 initnodedatamap 初始化命令:
    $ gccli –uroot
    gbase> initnodedatamap;

    注意:
    1)我初始安装后数据库root用户的密码为空,所以不需要指定-p,官方手册说是会生成一个默认密码,请根据实际情况来操作;
    2)此命令只需执行一次,如果重复执行,会报告如下信息:
    ERROR 1707 (HY000): gcluster command error: (GBA-02CO-0004) nodedatamap is already initialized.

    如果不进行初始化,直接执行SQL的话,会报错,例如,直接执行下面建库 SQL 则会报错:
    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     |
    ---------------------------------------------------------------------------------------------------------

    [gbase@gbase8av95 gcinstall]$ 

    b)查看集群数据分片分布相关信息
      $ gcadmin showdistribution
      
      $ gcadmin showdistribution

                                     Distribution ID: 1 | State: new | Total segment num: 1

                 Primary Segment Node IP                   Segment ID                 Duplicate Segment node IP
    ========================================================================================================================
    |                192.168.1.162                   |         1          |                                                |
    ========================================================================================================================
    [gbase@gbase8av95 gcinstall]$ 
      

    模式2:多 VC 模式初始配置(对应官方产品手册--3.2.3.2 多 VC 模式初始配置)

    “多 VC 模式”是指安装集群后,使用 gcadmin createvc 命令将数据节点划分为多个 VC 的集群模式。此时使用 gcadmin 命令可看到多个 VC 的相关信息。
    多 VC 模式,需要首先创建 VC,之后在每个 VC 上再创建 distribution。

    例如,假设部署了5节点的集群,free node 4 个节点,则可以创建2个vc,将4个 free node 节点中的2个节点给vc1、另外2个分给vc2。

    1)创建多VC和每个VC的distribution(多个VC间不能共享)

    a)创建vc1和vc1的distribution

    i)创建vc1
    生成创建 VC1 的配置示范文件
    $ cd /opt/gbase8a/gcinstall
    $ gcadmin createvc e create_vc1.xml

    $ vi 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。

    $ cd /opt/gbase8a/gcinstall
    $ vi gcChangeInfo_vc1.xml







    创建vc1下的distribution
    $ gcadmin distribution gcChangeInfo_vc1.xml p 1 d 1 vc vc1


    b)创建vc2和vc2的distribution

    i)创建vc2
    生成创建 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

    ii)在 VC2 上创建 distribution

    $ cd /opt/gbase8a/gcinstall
    $ cp gcChangeInfo_vc1.xml  gcChangeInfo_vc2.xml
    $ vi gcChangeInfo_vc2.xml







    创建vc2下的distribution
    $ 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> use vc vc2;
    gbase> initnodedatamap;

    3)安装后的检查
    集群安装完成后,管理员可以通过 gcadmin 查看集群的运行状态。
    a)查看集群各节点状态是否正常(是否OPEN状态)
      $ gcadmin
    b)查看集群数据分片分布相关信息
      $ gcadmin showdistribution vc vc1
      $ gcadmin showdistribution vc vc2


    到此为止GBase8a安装配置 & License导入 & 初始化都已经完成。

    接下来,修改数据库账号密码。

    初始安装默认生成的数据库账号 root 账号无密码,修改root密码、并设置 gbase 数据库用户的密码:
    $ 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 命令也可以登录:

    $ gbase -h192.168.1.162 -ugbase -Dtestdb01 -p
    gbase> quit;

    查看 gccli 信息:

    $ whereis gccli
    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

    发现原来 gccli 其实就是 gbase 的一个软链接。

    如果端口不是默认的5258,则-P指定端口,数据库连接端口配置文件为:$GBASE_BASE/gcluster/config/gbase_8a_gcluster.cnf


    其他相关命令参考:

    查看数据库:
    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');

    授权SELECT权限:
    GRANT SELECT ON *.* TO test_user;

    授予超级用户权限(全部权限):
    GRANT ALL ON *.* TO user_test;


    JDBC连接:
    jdbc:gbase://[host][,failoverhost...][:port]/[database][?propertyName1][=propertyValue1][&propertyName2][=propertyValue2]...

    user 用户名
    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 自动重连。

    ===============================

    vc的其他相关常用操作命令

    删除虚拟集群

    gcadmin rmvc

    注意:
    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

    import_vc.xml 导入 vc 所使用的配置文件。
    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

    su - gbase
    cd /opt/gbase8a/gcinstall
    ./unInstall.py --silent=demo.options

  • 相关阅读:
    Fe3O4纳米粒子/氧化锌纳米粒子/纳米氧化铈/纳米聚乙烯修饰二氧化硅微球表征探究
    肠道微生物如何影响骨骼发育和代谢
    【QT】信号和槽机制
    顺序栈与链式栈
    Swagger概述
    2023 03 CSPT2 垦田计划——二分
    requests处理 multipart/form-data 请求以及 boundary值问题
    Kafka 为什么这么快,性能如此优良
    tomcat热加载、热部署-源码解析
    Linux安装Redis(这里使用Redis6,其它版本类似)
  • 原文地址:https://blog.csdn.net/sunny05296/article/details/133865019