openGauss 6.0 单机自动化安装最佳实践

一、 环境与文件准备

在开始之前,请确保满足以下条件:

  1. 操作系统: openEuler 22.03 LTS (或其他兼容的 Linux 发行版)
  2. 用户权限: 拥有 root 用户权限。
  3. 所需文件:
    • openGauss 安装包: openGauss-All-6.0.2-openEuler22.03-x86_64.tar.gzhttps://opengauss.org/zh/download/
    • 配置文件: clusterconfig.xml (下文提供模板)
    • 安装脚本: install.sh (下文提供脚本)

请将这三个文件全部放置在 root 用户的主目录 (/root)下。

二、 核心文件详解

1. 配置文件: clusterconfig.xml

该文件是 openGauss 安装的核心,定义了数据库的安装路径、日志路径、节点信息等。脚本会自动读取该文件进行部署。

注意:在运行脚本前,你唯一需要手动修改的是 password 参数,为数据库 omm 用户设置一个安全的密码。

<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
    <CLUSTER>
        <PARAM name="clusterName" value="dbCluster" />
        <PARAM name="nodeNames" value="hostName" />
        <PARAM name="gaussdbAppPath" value="/opt/gauss/app" />
        <PARAM name="gaussdbLogPath" value="/opt/gauss/log" />
        <PARAM name="tmpMppdbPath" value="/opt/gauss/tmp" />
        <PARAM name="gaussdbToolPath" value="/opt/gauss/om" />
        <PARAM name="corePath" value="/opt/gauss/corefile" />
        <PARAM name="backIp1s" value="192.168.0.1"/>
        <PARAM name="clusterType" value="single-inst"/>
        <PARAM name="password" value="Your_DB_Password@123"/>
    </CLUSTER>

    <DEVICELIST>
        <DEVICE sn="hostName"> <PARAM name="name" value="hostName"/> <PARAM name="azName" value="AZ1"/>
            <PARAM name="azPriority" value="1"/>
            <PARAM name="backIp1" value="192.168.0.1"/> <PARAM name="sshIp1" value="192.168.0.1"/> <PARAM name="dataNum" value="1"/>
            <PARAM name="dataPortBase" value="15400"/>
            <PARAM name="dataNode1" value="/opt/gauss/data/dn"/>
            <PARAM name="dataNode1_syncNum" value="0"/>
        </DEVICE>
    </DEVICELIST>
</ROOT>

2. 自动化安装脚本: install.sh

该脚本是整个自动化流程的核心,它会执行以下所有操作:

  • 安装系统依赖。
  • 执行双重解压,正确释放出安装文件。
  • 自动获取本机 IP 和主机名,并更新 clusterconfig.xml
  • 执行预安装 (gs_preinstall),创建用户和配置内核参数。
  • 执行正式安装 (gs_install)。
  • 检查安装后的数据库状态。
#!/bin/bash

# =================================================================
# openGauss 6.0 自动化安装脚本 (V3 - 最终修正版)
# - 采用正确的双重解压逻辑
# =================================================================

# --- 变量定义 ---
ALL_PACKAGE_NAME="openGauss-All-6.0.2-openEuler22.03-x86_64.tar.gz"
OM_PACKAGE_NAME="openGauss-OM-6.0.2-openEuler22.03-x86_64.tar.gz"
INSTALL_BASE_DIR="/opt/software/openGauss"
CONFIG_FILE="clusterconfig.xml"

echo "### 1. 开始环境准备 ###"

# 设置系统语言环境
cat >>/etc/profile<<EOF
export LANG=en_US.UTF-8
EOF
source /etc/profile
echo "设置 LANG=en_US.UTF-8"

# 建立 python3 到 python 的软链接
if [ ! -f /usr/bin/python.bak ]; then
    mv /usr/bin/python /usr/bin/python.bak
fi
ln -s /usr/bin/python3 /usr/bin/python
echo "Python 链接已设置:"
python -V

# 安装依赖包
yum install -y libaio* tar bzip2
echo "依赖包 libaio, tar, bzip2 已安装"

echo ""
echo "### 2. 准备安装文件和解压 ###"

# 创建安装目录
mkdir -p ${INSTALL_BASE_DIR}

# 检查并拷贝文件
if [ -f ~/${ALL_PACKAGE_NAME} ]; then
    cp ~/${ALL_PACKAGE_NAME} ${INSTALL_BASE_DIR}/
else
    echo "错误: 在主目录 ~/ 未找到安装包 ${ALL_PACKAGE_NAME}"
    exit 1
fi

if [ -f ~/${CONFIG_FILE} ]; then
    cp ~/${CONFIG_FILE} ${INSTALL_BASE_DIR}/
else
    echo "错误: 在主目录 ~/ 未找到配置文件 ${CONFIG_FILE}"
    exit 1
fi

cd ${INSTALL_BASE_DIR}
echo "文件已拷贝到 ${INSTALL_BASE_DIR}"

# 第一步: 解压母包,释放出组件包
echo "正在解压母包 ${ALL_PACKAGE_NAME}..."
tar -zxf ${ALL_PACKAGE_NAME}

# 第二步: 解压OM运维工具包,这才会生成 script 目录
echo "正在解压OM工具包 ${OM_PACKAGE_NAME}..."
tar -zxf ${OM_PACKAGE_NAME}
echo "解压完成,script 目录已生成"

echo ""
echo "### 3. 动态修改配置文件 ###"

# 获取本机IP地址和主机名
HOST_IP=$(ip addr | awk '/^[0-9]+: / {}; /inet.*global/ {print gensub(/(.*)\/(.*)/, "\\1", "g", $2)}' | head -1)
HOST_NAME=$(hostname)

if [ -z "$HOST_IP" ]; then
    echo "错误: 无法获取本机IP地址"
    exit 1
fi

echo "本机IP: ${HOST_IP}"
echo "本机主机名: ${HOST_NAME}"

# 使用 sed 命令替换配置文件中的占位符
sed -i "s/192.168.0.1/${HOST_IP}/g" ${INSTALL_BASE_DIR}/${CONFIG_FILE}
sed -i "s/hostName/${HOST_NAME}/g" ${INSTALL_BASE_DIR}/${CONFIG_FILE}
echo "配置文件 ${CONFIG_FILE} 已更新"

echo ""
echo "### 4. 执行预安装 ###"

# 进入现在应该已经存在的 script 目录
cd "${INSTALL_BASE_DIR}/script"

# 执行预安装,它会自动创建 omm 用户和 dbgrp 组
./gs_preinstall -U omm -G dbgrp -X ${INSTALL_BASE_DIR}/${CONFIG_FILE}

# 检查预安装是否成功
if [ $? -ne 0 ]; then
    echo "错误: gs_preinstall 执行失败,请检查日志"
    exit 1
fi

# 将整个安装目录的所有权赋予 omm 用户
chown -R omm:dbgrp /opt/software/
# 根据XML中的配置,创建并授权数据和日志目录
chown -R omm:dbgrp /opt/gauss
echo "目录权限已设置"

echo ""
echo "### 5. 执行正式安装 ###"

# 切换到 omm 用户执行安装,并检查安装后的状态
su - omm -c "gs_install -X ${INSTALL_BASE_DIR}/${CONFIG_FILE} && echo '安装成功,正在检查状态...' && gs_om -t status --detail"

if [ $? -eq 0 ]; then
    echo ""
    echo "=========================================="
    echo " openGauss 安装成功!"
    echo "=========================================="
else
    echo ""
    echo "=========================================="
    echo " openGauss 安装失败,请检查日志"
    echo "=========================================="
fi

三、 执行安装

  1. 修改密码:打开 clusterconfig.xml 文件,修改 <PARAM name="password" ...> 字段为你自己的安全密码。

  2. 授予权限:为 install.sh 脚本添加可执行权限。

    chmod +x install.sh
    
  3. 运行脚本:以 root 用户身份执行脚本。

    ./install.sh
    

    脚本将自动完成所有安装步骤。请耐心等待,直到看到 “openGauss 安装成功!” 的提示。

四、 安装后验证与使用

安装成功后,你可以通过以下方式验证和使用数据库。

  1. 切换用户:切换到 openGauss 的运行用户 omm

    su - omm
    
  2. 检查状态:执行 gs_om 命令查看集群状态。

    gs_om -t status --detail
    

    如果看到 cluster_stateNormal,则代表数据库运行正常。

  3. 配置环境变量 (推荐):为了方便在 omm 用户下直接使用 gsql 等命令,建议将环境变量加入到 ~/.bashrc

    echo "export GAUSSHOME=/opt/gauss/app" >> ~/.bashrc
    echo "export PATH=\$GAUSSHOME/bin:\$PATH" >> ~/.bashrc
    echo "export LD_LIBRARY_PATH=\$GAUSSHOME/lib:\$LD_LIBRARY_PATH" >> ~/.bashrc
    source ~/.bashrc
    
  4. 连接数据库:使用 gsql 工具连接数据库(端口号在 xml 文件中已配置为 15400)。

    gsql -d postgres -p 15400
    

    成功连接后,你将看到 gsql 的命令提示符,可以开始执行 SQL 操作。输入 \q 退出。

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐