【数据库】openGauss 6.0 单机自动化安装最佳实践
openGauss 6.0 单机自动化安装最佳实践
一、 环境与文件准备
在开始之前,请确保满足以下条件:
- 操作系统: openEuler 22.03 LTS (或其他兼容的 Linux 发行版)
- 用户权限: 拥有
root
用户权限。 - 所需文件:
- openGauss 安装包:
openGauss-All-6.0.2-openEuler22.03-x86_64.tar.gz
(https://opengauss.org/zh/download/) - 配置文件:
clusterconfig.xml
(下文提供模板) - 安装脚本:
install.sh
(下文提供脚本)
- openGauss 安装包:
请将这三个文件全部放置在 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
三、 执行安装
-
修改密码:打开
clusterconfig.xml
文件,修改<PARAM name="password" ...>
字段为你自己的安全密码。 -
授予权限:为
install.sh
脚本添加可执行权限。chmod +x install.sh
-
运行脚本:以
root
用户身份执行脚本。./install.sh
脚本将自动完成所有安装步骤。请耐心等待,直到看到 “openGauss 安装成功!” 的提示。
四、 安装后验证与使用
安装成功后,你可以通过以下方式验证和使用数据库。
-
切换用户:切换到 openGauss 的运行用户
omm
。su - omm
-
检查状态:执行
gs_om
命令查看集群状态。gs_om -t status --detail
如果看到
cluster_state
为Normal
,则代表数据库运行正常。 -
配置环境变量 (推荐):为了方便在
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
-
连接数据库:使用
gsql
工具连接数据库(端口号在xml
文件中已配置为15400
)。gsql -d postgres -p 15400
成功连接后,你将看到
gsql
的命令提示符,可以开始执行 SQL 操作。输入\q
退出。