当前位置: 首页 > news >正文

【数据库】openGauss 6.0 单机自动化安装最佳实践

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

一、 环境与文件准备

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

  1. 操作系统: openEuler 22.03 LTS (或其他兼容的 Linux 发行版)
  2. 用户权限: 拥有 root 用户权限。
  3. 所需文件:
    • openGauss 安装包: openGauss-All-6.0.2-openEuler22.03-x86_64.tar.gz(https://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 ]; thenmv /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} ]; thencp ~/${ALL_PACKAGE_NAME} ${INSTALL_BASE_DIR}/
elseecho "错误: 在主目录 ~/ 未找到安装包 ${ALL_PACKAGE_NAME}"exit 1
fiif [ -f ~/${CONFIG_FILE} ]; thencp ~/${CONFIG_FILE} ${INSTALL_BASE_DIR}/
elseecho "错误: 在主目录 ~/ 未找到配置文件 ${CONFIG_FILE}"exit 1
ficd ${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" ]; thenecho "错误: 无法获取本机IP地址"exit 1
fiecho "本机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 ]; thenecho "错误: 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 ]; thenecho ""echo "=========================================="echo " openGauss 安装成功!"echo "=========================================="
elseecho ""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 退出。

http://www.dtcms.com/a/361104.html

相关文章:

  • MTK-Android13-实现拷贝预置资源到vendor分区下
  • Java全栈学习笔记27
  • 深度解析条件编译:#ifdef与#ifndef的本质区别与应用实践
  • Dify中使用SearXNG
  • 子串:滑动窗口最大值
  • Macbook Air M4 笔记本 ChatTTS 初体验
  • 总线矩阵的原理
  • 番外篇 | YOLO-FireAD:通过注意力逆残差模块与双池化模块融合实现高精度火灾检测
  • GitHub CLI (gh) 全面指南:终端中的 GitHub 工作流革命
  • 前端页面性能优化
  • JavaScript 性能优化实战技术
  • 99、23种设计模式之组合模式(8/23)
  • Map + 函数式接口的策略模式
  • 控制系统仿真之PID校正-利用PID控制器、PID调节器实现(九)
  • Coze源码分析-工作空间-项目开发-后端源码
  • Python爬虫实战:研究 Lines, bars and markers 模块,构建电商平台数据采集和分析系统
  • 【软件开发工程师の校招秘籍】
  • nginx-realip问题解决方案
  • AI 智能体架构中的协议设计三部曲:MCP → A2A → AG-UI
  • 基于单片机宠物项圈/宠物防丢失设计
  • VMware pro16(许可证)+centos 7超详细安装教程
  • Go语言入门学习笔记
  • 如何将照片从电脑传输到安卓设备
  • GitHub 宕机自救指南:应急解决方案与替代平台
  • LeetCode 165. 比较版本号 - 优雅Java解决方案
  • 【JavaScript】async/await 与 Fetch 传参,PUT,PATCH,文件上传,批量删除等前端案例
  • 《WINDOWS 环境下32位汇编语言程序设计》第10章 内存管理和文件操作(1)
  • 在Lumerical FDTD中,磁偶极子通常用于激发TE模式,而电偶极子用于激发TM模式(文心一言)
  • PyCharm中Debug在状态栏显示运行到光标处(run to cursor)
  • 【MySQL基础】MySQL核心操作全解析