VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

安装部署

本章以安装一主两备数据库为例,向用户介绍HAS V3.2 for Vastbase高可用集群的部署流程,以指导用户完成各搭建步骤。

  • HAS V3.2支持使用openGauss(企业版)数据库进行集群搭建,集群部署方式与使用Vastbase进行部署的步骤一致。
  • 文档中出现的节点名、IP和集群名以实际为准,图片仅供操作参考。

安装流程

1、准备安装环境:HAS V3.2 for Vastbase一主两备集群安装至少需要准备三台物理机或虚拟机进行安装部署。准备软硬件环境、进行系统环境配置等操作。

2、上传文件:根据准备安装集群的CPU和操作系统平台,下载对应的HAS V3.2 for Vastbase安装包,将安装包上传至任意一个用于部署集群的节点上。

3、解压安装包:以root用户执行tar命令解压搭建HAS V3.2集群所需的压缩包。

  • 若用户获取的是HAS集群管理软件的独立安装包,此步骤应分别解压HAS和Vastbase数据库的安装包。
  • 若用户获取的是HAS集群一体包,则其中已经包括安装HAS集群所需的全部组件。

4、配置XML文件:安装前需要先创建cluster_config.xml文件。可以参考后文给出的样例自行创建,或使用解压后的安装包中提供的xml模板进行修改。

  此xml文件包含部署Vastbase集群的服务器信息、安装路径、IP地址以及端口号等配置信息。用户需要根据实际场景配置对应的XML文件。

5、执行预安装脚本:以root用户执行gs_preinstall预安装脚本,为下一步安装准备好需要的环境和用户。

6、执行安装脚本:切换到预安装时创建的集群安装用户,执行gs_install脚本安装数据库集群。

7、按需配置许可文件

  • 使用HAS独立安装包完成安装流程后,必须上传License文件并配置许可路径才能启动集群。
  • 使用HAS集群一体包完成安装流程后,集群将使用安装包中提供的临时许可文件,有效期为3个月。如需使用正式的有效许可文件,可执行此步骤。

上传文件

将下载的HAS V3.2 for Vastbase安装包上传至集群的任意一个节点上,此处以上传至/opt/路径下为例。

解压安装包

基于HAS V3.x 的Vastbase高可用集群提供以下两种不同的安装包形式,用户可根据获取的安装包进行选择:

  • 名称格式为Vastbase-G100_2.2-Buildxx_HAS${版本号}_PACKAGES_${平台信息}_${datetime}.tar.gz的包属于HAS集群一体包,参考使用HAS集群一体包完成后续步骤。
  • 名称格式为HAS_{版本号}_${平台信息}_${datetime}.tar.gz的包属于HAS集群管理工具的独立安装包,参考使用HAS独立安装包完成后续步骤。

使用HAS集群一体包

步骤1: 切换至安装包所在的目录。

cd /opt

步骤2: 使用root用户解压HAS一体包至/opt/software/路径下。

mkdir /opt/software
tar -zxvf Vastbase-G100_2.2_Buildxx(xxxxx)-HAS-3.x(xxxx)-xxx-xx-xx.tar.gz -C /opt/software

解压后得到的主要文件包括:Vastbase G100数据库安装包、OM工具安装包、HAS安装包。

步骤3: 继续使用root用户解压OM安装包,会在当前目录下生成script子目录。

tar -zxvf Vastbase-G100-2.2_Buildxxx-xxx-om.tar.gz

使用HAS独立安装包

解压Vastbase安装包

步骤1 切换至安装包目录。

cd /opt/software/

步骤2 使用root用户解压Vastbase的安装包,得到vastbase-installer文件夹后再次解压文件夹内的压缩包(以下命令中的安装包名称以实际为准)。

tar -zxvf Vastbase-G100-installer-xxx-xx-xx.tar.gz
tar -zxvf vastbase-installer/Vastbase-G100-2.2-Buildxxx-xxx-xx.tar.gz

步骤3 删除解压得到的om压缩包。

集群安装中应该使用HAS独立安装包内的om工具包,所以本步骤要求删除Vastbase数据库安装包中的om工具包。

rm -rf  Vastbase-G100-2.2_Buildxxx-xxx-om.tar.gz 
rm -rf  Vastbase-G100-2.2_Buildxxx-xxx-om.sha256

解压HAS独立安装包

步骤1 使用root用户对HAS安装包及其解压后得到的包进行解压,得到om和cm压缩包。(本步骤以centos7安装包为例)

tar -zxvf HAS_3.x@rxxx_centos7_x86-64_20230111.tar.gz
tar -zxvf Vastbase-HAS-3.x.x-centos7.6_x86_64bit.tar.gz

步骤2 将om和cm压缩包名修改为与Vastbase相同命名格式。

mv  Vastbase-HAS-3.x.x-xxx-om.tar.gz  Vastbase-G100-2.2_Buildxxx-xxx-om.tar.gz
mv  Vastbase-HAS-3.x-cm.tar.gz     Vastbase-G100-2.2_Buildxxx-xxx-cm.tar.gz

解压om安装脚本

解压改名后的om压缩包,会在当前目录下生成script子目录。

tar -zxvf Vastbase-G100-2.2_Buildxxx-xxx-om.tar.gz

配置XML文件

根据部署需求配置cluster_config.xml文件。可以参考下文给出的示例自行创建xml,也可以使用上一步解压安装包后得到的模板进行修改。

  • 配置文件的模板位于解压目录下的/script/gspylib/etc/conf/cluster_config_template.xml,如按本文示例步骤完成解压,即为/opt/software/script/gspylib/etc/conf/cluster_config_template.xml

  • xml配置文件中包含了Vastbase集群的服务器信息、安装路径、IP地址以及端口号等部署信息。

  • HAS V3.2 支持流复制集群或者资源池化集群两种模式:

1、创建xml文件:

vi cluster_config.xml

2、填写以下配置内容并保存。下文样例以一主两备部署方案为例。

下文样例仅供参考,每部分内容都包含说明信息,详细参数说明详见配置说明一节。

  • 流复制集群

    <?xml version="1.0" encoding="UTF-8"?>
    <ROOT>
    <!--整体信息 -->
    <CLUSTER>
        <PARAM name="clusterName" value="Cluster_template" />
        <PARAM name="nodeNames" value="Vastbase1,Vastbase2,Vastbase3" />
        <PARAM name="gaussdbAppPath" value="/opt/vastbase/install/app" />
        <PARAM name="gaussdbLogPath" value="/var/log/omm" />
        <PARAM name="tmpMppdbPath" value="/opt/vastbase/tmp"/>
        <PARAM name="gaussdbToolPath" value="/opt/vastbase/install/om" />
        <PARAM name="corePath" value="/opt/vastbase/corefile"/>
        <PARAM name="backIp1s" value="172.16.105.54,172.16.105.58,172.16.105.60"/>
    
    </CLUSTER>
    <!-- 每台服务器上的节点部署信息 -->
    <DEVICELIST>
        <!-- node1上的节点部署信息 -->
        <DEVICE sn="Vastbase1">
            <PARAM name="name" value="Vastbase1"/>
            <PARAM name="azName" value="AZ1"/>
            <PARAM name="azPriority" value="1"/>
            <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
            <PARAM name="backIp1" value="172.16.105.54"/>
            <PARAM name="sshIp1" value="172.16.105.54"/>
            <!--CM节点部署信息-->
            <PARAM name="cmsNum" value="1"/>
            <PARAM name="cmServerPortBase" value="15000"/>
            <PARAM name="cmServerListenIp1" value="172.16.105.54,172.16.105.58,172.16.105.60"/>
            <PARAM name="cmServerHaIp1" value="172.16.105.54,172.16.105.58,172.16.105.60"/>
            <PARAM name="cmServerlevel" value="1"/>
            <PARAM name="cmServerRelation" value="Vastbase1,Vastbase2,Vastbase3"/>
            <PARAM name="cmDir" value="/opt/vastbase/data/cmserver"/>
            <!--dn-->
            <PARAM name="dataNum" value="1"/>
                        <PARAM name="dataPortBase" value="15400"/>
                        <PARAM name="dataNode1" value="/opt/vastbase/install/data/dn,Vastbase2,/opt/vastbase/install/data/dn,Vastbase3,/opt/vastbase/install/data/dn"/>
            <PARAM name="dataNode1_syncNum" value="1"/>
        </DEVICE>
    
        <!-- node2上的节点部署信息,其中“name”的值配置为主机名称 -->
        <DEVICE sn="Vastbase2">
            <PARAM name="name" value="Vastbase2"/>
            <PARAM name="azName" value="AZ1"/>
            <PARAM name="azPriority" value="1"/>
            <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
            <PARAM name="backIp1" value="172.16.105.58"/>
            <PARAM name="sshIp1" value="172.16.105.58"/>
            <!-- cm -->
            <PARAM name="cmServerPortStandby" value="15000"/>
            <PARAM name="cmDir" value="/opt/vastbase/data/cmserver"/>
        </DEVICE>
    
        <!-- node3上的节点部署信息,其中“name”的值配置为主机名称 -->
        <DEVICE sn="Vastbase3">
            <PARAM name="name" value="Vastbase3"/>
            <PARAM name="azName" value="AZ1"/>
            <PARAM name="azPriority" value="1"/>
            <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
            <PARAM name="backIp1" value="172.16.105.60"/>
            <PARAM name="sshIp1" value="172.16.105.60"/>
            <!-- cm -->
            <PARAM name="cmServerPortStandby" value="15000"/>
            <PARAM name="cmDir" value="/opt/vastbase/data/cmserver"/>
        </DEVICE>
    </DEVICELIST>
    </ROOT>
    
  • 资源池化集群模式

    <?xml version="1.0" encoding="UTF-8"?>
    <ROOT>
    <!-- 整体信息 -->
    <CLUSTER>
    <!-- 数据库名称 -->
    <PARAM name="clusterName" value="Cluster_template" />  
    <!-- 数据库节点名称(hostname) -->
    <PARAM name="nodeNames" value="Vastbase1,Vastbase2,Vastbase3" /> 
    <!-- 数据库安装目录-->
    <PARAM name="gaussdbAppPath" value="/opt/vastbase/install/app" />
    <!-- 日志目录-->
    <PARAM name="gaussdbLogPath" value="/var/log/vastbase" />
    <!-- 临时文件目录-->
    <PARAM name="tmpMppdbPath" value="/opt/vastbase/tmp" />
    <!--数据库工具目录-->
    <PARAM name="gaussdbToolPath" value="/opt/vastbase/install/om" />
    <!--数据库core文件目录-->
    <PARAM name="corePath" value="/opt/vastbase/corefile"/>
    <!-- 节点IP,与数据库节点名称列表一一对应 -->
    <PARAM name="backIp1s" value="172.16.105.54,172.16.105.58,172.16.105.60"/>
    <!-- 资源池化模式开关 -->
    <PARAM name="enable_dss" value="on"/>
    <!-- dss实例目录 -->
    <PARAM name="dss_home" value="/opt/vastbase/install/data/dss"/>
    <!-- dss共享卷名 -->
    <PARAM name="ss_dss_vg_name" value="data"/>
    <!-- dss挂载卷组名和卷组信息,包含共享卷 -->
    <PARAM name="dss_vg_info" value="data:/dev/sdb,p0:/dev/sdc,p1:/dev/sdd"/>
    <!-- cm投票卷 -->
    <PARAM name="votingDiskPath" value="/dev/sde"/>
    <!-- cm共享卷 -->
    <PARAM name="shareDiskDir" value="/dev/sdf"/>
    <!-- dss开启ssl认证开关 -->
    <PARAM name="dss_ssl_enable" value="on"/>
    <!-- mes通信协议类型  -->
    <PARAM name="ss_interconnect_type" value="TCP"/>
    <!-- rdma绑定cpu序列  -->
    <PARAM name="ss_rdma_work_config" value="1 7"/>
    </CLUSTER>
    <!-- 每台服务器上的节点部署信息 -->
    <DEVICELIST>
        <!-- node1上的节点部署信息 -->
        <DEVICE sn="Vastbase1">
            <PARAM name="name" value="Vastbase1"/>
            <!-- node1所在的AZ及AZ优先级 -->
            <PARAM name="azName" value="AZ1"/>
            <PARAM name="azPriority" value="1"/>
            <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
            <PARAM name="backIp1" value="172.16.105.54"/>
            <PARAM name="sshIp1" value="172.16.105.54"/>
            <!--CM节点部署信息-->
            <PARAM name="cmsNum" value="1"/>
            <PARAM name="cmServerPortBase" value="15000"/>
            <PARAM name="cmServerListenIp1" value="172.16.105.54,172.16.105.58,172.16.105.60"/>
            <PARAM name="cmServerHaIp1" value="172.16.105.54,172.16.105.58,172.16.105.60"/>
            <PARAM name="cmServerlevel" value="1"/>
            <PARAM name="cmServerRelation" value="Vastbase1,Vastbase2,Vastbase3"/>
            <PARAM name="cmDir" value="/opt/vastbase/data/cmserver"/>
            <!--dn-->
            <PARAM name="dataNum" value="1"/>
                        <PARAM name="dataPortBase" value="15400"/>
                        <PARAM name="dataNode1" value="/opt/vastbase/install/data/dn,Vastbase2,/opt/vastbase/install/data/dn,Vastbase3,/opt/vastbase/install/data/dn"/>
            <PARAM name="dataNode1_syncNum" value="1"/>
        </DEVICE>
    
        <!-- node2上的节点部署信息,其中“name”的值配置为主机名称 -->
        <DEVICE sn="Vastbase2">
            <PARAM name="name" value="Vastbase2"/>
            <PARAM name="azName" value="AZ1"/>
            <PARAM name="azPriority" value="1"/>
            <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
            <PARAM name="backIp1" value="172.16.105.58"/>
            <PARAM name="sshIp1" value="172.16.105.58"/>
            <!-- cm -->
            <PARAM name="cmServerPortStandby" value="15000"/>
            <PARAM name="cmDir" value="/opt/vastbase/data/cmserver"/>
        </DEVICE>
    
        <!-- node3上的节点部署信息,其中“name”的值配置为主机名称 -->
        <DEVICE sn="Vastbase3">
            <PARAM name="name" value="Vastbase3"/>
            <PARAM name="azName" value="AZ1"/>
            <PARAM name="azPriority" value="1"/>
            <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
            <PARAM name="backIp1" value="172.16.105.60"/>
            <PARAM name="sshIp1" value="172.16.105.60"/>
            <!-- cm -->
            <PARAM name="cmServerPortStandby" value="15000"/>
            <PARAM name="cmDir" value="/opt/vastbase/data/cmserver"/>
        </DEVICE>
    </DEVICELIST>
    </ROOT>
    

执行预安装脚本

执行预安装脚本gs_preinstall可以协助自动完成如下的安装环境准备工作:

1、自动设置Linux内核参数以达到提高服务器负载能力的目的。这些参数直接影响数据库系统的运行状态,请仅在确认必要时调整。

2、自动将XML配置文件、安装包拷贝到其他主机的相同目录下,安装用户和用户组不存在时,自动创建安装用户以及用户组。

3、读取XML配置文件中的目录信息并创建,将目录权限授予安装用户。

  • 用户需要检查上层目录权限,保证安装用户对安装包和配置文件目录读写执行的权限。

  • xml文件中各主机的名称与IP映射应配置正确。

  • 只能使用root用户执行gs_preinstall命令。

步骤1 以root用户进入script工具脚本目录。

cd /opt/software/script

步骤2 执行gs_preinstall预安装脚本。

./gs_preinstall -U vastbase -G dbgrp -X ../cluster_config.xml --sep-env-file=/home/vastbase/.Vastbase
  • vastbase为数据库管理员(也是运行Vastbase的操作系统用户),dbgrp为操作系统用户的群组名称。系统用户可以在预安装时指定创建。
  • -X指定的是XML配置文件的路径,配置文件详细信息参见配置说明
  • --sep-env-file指定的是环境变量文件。若不指定此配置项,则环境变量信息将写入.bashrc文件中,在部署多套集群时可能造成冲突。
  • 在执行过程中,用户根据提示选择是否创建互信,并输入操作系统root用户和vastbase用户的密码。

预安装过程示例如下:

Parsing the configuration file.
Successfully parsed the configuration file.
Installing the tools on the local node.
Successfully installed the tools on the local node.
Are you sure you want to create trust for root (yes/no)?yes
Please enter password for root
Password:
Successfully created SSH trust for the root permission user.
Setting host ip env
Successfully set host ip env.
Distributing package.
Begin to distribute package to tool path.
Successfully distribute package to tool path.
Begin to distribute package to package path.
Successfully distribute package to package path.
Successfully distributed package.
Are you sure you want to create the user[vastbase] and create trust for it (yes/no)? yes
Preparing SSH service.
Successfully prepared SSH service.
Installing the tools in the cluster.
Successfully installed the tools in the cluster.
Checking hostname mapping.
Successfully checked hostname mapping.
Creating SSH trust for [vastbase] user.
Please enter password for current user[vastbase].
Password:
Checking network information.
All nodes in the network are Normal.
Successfully checked network information.
Creating SSH trust.
Creating the local key file.
Successfully created the local key files.
Appending local ID to authorized_keys.
Successfully appended local ID to authorized_keys.
Updating the known_hosts file.
Successfully updated the known_hosts file.
Appending authorized_key on the remote node.
Successfully appended authorized_key on all remote node.
Checking common authentication file content.
Successfully checked common authentication content.
Distributing SSH trust file to all node.
Distributing trust keys file to all node successfully.
Successfully distributed SSH trust file to all node.
Verifying SSH trust on all hosts.
Successfully verified SSH trust on all hosts.
Successfully created SSH trust.
Successfully created SSH trust for [vastbase] user.
Checking OS software.
Successfully check os software.
Checking OS version.
Successfully checked OS version.
Creating cluster's path.
Successfully created cluster's path.
Set and check OS parameter.
Setting OS parameters.
Successfully set OS parameters.
Warning: Installation environment contains some warning messages.
Please get more details by "/opt/software/script/gs_checkos -i A -h Vastbase1,Vastbase2,Vastbase3 --detail".
Set and check OS parameter completed.
Preparing CRON service.
Successfully prepared CRON service.
Setting user environmental variables.
Successfully set user environmental variables.
Setting the dynamic link library.
Successfully set the dynamic link library.
Setting Core file
Successfully set core path.
Setting pssh path
Successfully set pssh path.
Setting Cgroup.
Successfully set Cgroup.
Set ARM Optimization.
No need to set ARM Optimization.
Fixing server package owner.
Setting finish flag.
Successfully set finish flag.
Preinstallation succeeded.

执行安装脚本

预安装脚本执行成功后,所有服务器操作系统和网络均正常运行,用户需确保各主机上locale保持一致后准备执行安装部署脚本。

步骤1 运行安装脚本

1、切换到vastbase用户,并执行source命令使环境变量生效。

su - vastbase
source ~/.Vastbase

2、执行gs_install安装脚本,进行集群部署安装。

gs_install -X /opt/software/cluster_config.xml --dn-guc="max_process_memory=10GB"
  • 执行安装脚本必须切换到vastbase用户(该用户为预安装脚本gs_preinstall中-U参数指定的用户)。
  • -X指定的是XML配置文件的路径,配置文件详细信息参见配置说明
  • 为保证数据库正常启动,max_process_memory参数必须配置为合适大小,OM工具安装完成默认数据库内核至少需要7G内存;也可以通过修改其他内存相关GUC参数,以减小内核所需max_process_memory大小。

步骤2 输入数据库密码

在脚本执行过程中,用户需根据提示输入数据库的密码,密码具有一定的复杂度,为保证用户正常使用该数据库,请记住输入的数据库密码。

  • 设置的密码要符合复杂度要求:

    • 最少包含8个字符。
    • 不能和用户名、当前密码(ALTER)、或当前密码反序相同。
    • 至少包含大写字母(A-Z)、小写字母(a-z)、数字、非字母数字字符(限定为~!@#$%^&*()-_=+\|[{}];:,<.>/?)四类字符中的三类字符。
  • 安装过程中会生成ssl证书,证书存放路径为:{gaussdbAppPath}/share/sslcert/om,其中{gaussdbAppPath}为配置文件中指定的程序安装目录。

安装过程如下所示:

Parsing the configuration file.
Check preinstall on every node.
Successfully checked preinstall on every node.
Creating the backup directory.
Successfully created the backup directory.
begin deploy..
Installing the cluster.
begin prepare Install Cluster..
Checking the installation environment on all nodes.
begin install Cluster..
Installing applications on all nodes.
Successfully installed APP.
begin init Instance..
encrypt ciper and rand files for database.
Please enter password for database:
Please repeat for database:
begin to create CA cert files
The sslcert will be generated in /opt/gaussdb/cluster/app/share/sslcert/om
Cluster installation is completed.
Configuring.
Deleting instances from all nodes.
Successfully deleted instances from all nodes.
Checking node configuration on all nodes.
Initializing instances on all nodes.
Updating instance configuration on all nodes.
Check consistence of memCheck and coresCheck on DN nodes.
Successful check consistence of memCheck and coresCheck on all nodes.
Configuring pg_hba on all nodes.
Configuration is completed.
Successfully started cluster.
Successfully installed application.

root用户互信可能会存在安全隐患,因此建议用户在执行完安装后,立即删除各主机上root用户的互信:

rm -rf ~/.ssh

步骤3: 安装完成后,使用如下命令查询集群状态

has_ctl query -Cvidp

配置许可文件

  • 使用HAS独立安装包完成安装流程后,必须上传License文件并配置许可路径才能启动集群。
  • 使用HAS集群一体包完成安装流程后,集群将使用安装包中提供的临时许可文件,有效期为3个月。如需使用正式的有效许可文件,可执行此步骤。

如需使用正式的有效许可文件,可参考以下步骤为集群指定license文件。

步骤1:上传许可文件至集群的每个节点,保证各节点中许可文件的绝对路径相同。

步骤2:在任意节点上执行vb_guc命令,-N all表示为集群的所有节点设置许可。

vb_guc set -N all -I all -c "license_path = '/home/vastbase/vastbase_license'" 
  • 上述命令中,license_path为许可文件的绝对路径,请根据实际情况替换引号内的路径。

  • license_path在集群的每个节点中的路径应一致。

步骤3: 重启集群,使配置生效。在任意节点执行如下重启命令:

has_ctl stop && has_ctl start