openGauss6.0.3 一主二从集群安装手册

openGauss6.0.3 一主二从集群安装手册

一、环境信息

  • 节点:db1 (<11.0.1.21>)、db2 (<11.0.1.22>)、db3 (<11.0.1.23>)

  • 系统:CentOS 7.9

  • 数据库用户:omm

  • 数据库组:dbgrp

  • 管理员密码:GaussDB@123456

  • 安装包目录:/opt/opengauss

  • 程序目录:/opt/huawei/install/app(安装过程中自动创建)

  • 数据目录:/opt/huawei/install/data/dn(安装过程中自动创建)

  • 端口:数据库 15400 / CM 15000


二、所有节点统一执行步骤

1. 关闭防火墙与 SELinux

bash 复制代码
systemctl stop firewalld
systemctl disable firewalld

sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
setenforce 0

2. 配置 hosts

bash 复制代码
cat >> /etc/hosts <<EOF
11.0.1.21   db1
11.0.1.22   db2
11.0.1.23   db3
EOF

3. 创建 omm 用户

bash 复制代码
groupadd dbgrp
useradd -g dbgrp omm
echo "GaussDB@123456" | passwd --stdin omm

4. 安装系统依赖

bash 复制代码
yum install -y libaio-devel flex bison ncurses-devel glibc-devel patch readline-devel libnsl make gcc gcc-c++ openssl-devel bzip2-devel zlib-devel

5. 编译安装 Python 3.6.15

⚠️ 重要:CentOS 7 系统 yum 依赖 Python 2.7,请勿修改系统默认的 python 命令!

bash 复制代码
cd /usr/local
wget https://www.python.org/ftp/python/3.6.15/Python-3.6.15.tgz
tar -zxvf Python-3.6.15.tgz
cd Python-3.6.15

./configure --prefix=/usr/local/python36 --enable-shared
make -j4
make install

# ✅ 正确做法:只创建 python3 软链接,不修改系统默认的 python
ln -sf /usr/local/python36/bin/python3 /usr/bin/python3
ln -sf /usr/local/python36/bin/pip3  /usr/bin/pip3

echo "/usr/local/python36/lib" >> /etc/ld.so.conf
ldconfig

验证:

bash 复制代码
# 系统默认 python 还是 2.7(yum 正常)
python -V

# Python 3 版本正常(openGauss 正常)
python3 -V

6. 创建必要目录

bash 复制代码
mkdir -p /opt/opengauss
mkdir -p /var/log/omm

chown -R omm:dbgrp /opt/opengauss
chown -R omm:dbgrp /var/log/omm

✅ 重要:/opt/huawei 目录由安装脚本自动创建,请勿手动创建


三、仅主节点 db1 执行

1. 解压安装包

bash 复制代码
cd /opt/opengauss 
wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/6.0.3/CentOS7/x86/openGauss-All-6.0.3-CentOS7-x86_64.tar.gz
tar -zxvf openGauss-All-6.0.3-CentOS7-x86_64.tar.gz
tar -jxf openGauss-Server-6.0.3-CentOS7-x86_64.tar.bz2
tar -zxf openGauss-OM-6.0.3-CentOS7-x86_64.tar.gz
tar -zxf openGauss-CM-6.0.3-CentOS7-x86_64.tar.gz

2. 创建集群配置文件

bash 复制代码
su - omm
cat > /opt/opengauss/clusterconfig.xml <<'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
    <CLUSTER>
        <PARAM name="clusterName" value="openGaussCluster" />
        <PARAM name="nodeNames" value="db1,db2,db3" />
        <PARAM name="gaussdbAppPath" value="/opt/huawei/install/app" />
        <PARAM name="gaussdbLogPath" value="/var/log/omm" />
        <PARAM name="tmpMppdbPath" value="/opt/huawei/tmp"/>
        <PARAM name="gaussdbToolPath" value="/opt/huawei/install/om" />
        <PARAM name="corePath" value="/opt/huawei/corefile"/>
        <PARAM name="backIp1s" value="11.0.1.21,11.0.1.22,11.0.1.23"/>
    </CLUSTER>
    <DEVICELIST>
        <DEVICE sn="db1">
            <PARAM name="name" value="db1"/>
            <PARAM name="azName" value="AZ1"/>
            <PARAM name="azPriority" value="1"/>
            <PARAM name="backIp1" value="11.0.1.21"/>
            <PARAM name="sshIp1" value="11.0.1.21"/>
            <PARAM name="cmsNum" value="1"/>
            <PARAM name="cmServerPortBase" value="15000"/>
            <PARAM name="cmServerListenIp1" value="11.0.1.21,11.0.1.22,11.0.1.23"/>
            <PARAM name="cmServerHaIp1" value="11.0.1.21,11.0.1.22,11.0.1.23"/>
            <PARAM name="cmServerLevel" value="1"/>
            <PARAM name="cmServerRelation" value="db1,db2,db3"/>
            <PARAM name="cmDir" value="/data/huawei/openGauss/cmserver"/>
            <PARAM name="dataNum" value="1"/>
            <PARAM name="dataPortBase" value="15400"/>
            <PARAM name="dataNode1" value="/data/huawei/openGauss/dn,db2,/data/huawei/openGauss/dn,db3,/data/huawei/openGauss/dn"/>
            <PARAM name="dataNode1_syncNum" value="0"/>
        </DEVICE>
        <DEVICE sn="db2">
            <PARAM name="name" value="db2"/>
            <PARAM name="azName" value="AZ1"/>
            <PARAM name="azPriority" value="1"/>
            <PARAM name="backIp1" value="11.0.1.22"/>
            <PARAM name="sshIp1" value="11.0.1.22"/>
            <PARAM name="cmDir" value="/data/huawei/openGauss/cmserver"/>
        </DEVICE>
        <DEVICE sn="db3">
            <PARAM name="name" value="db3"/>
            <PARAM name="azName" value="AZ1"/>
            <PARAM name="azPriority" value="1"/>
            <PARAM name="backIp1" value="11.0.1.23"/>
            <PARAM name="sshIp1" value="11.0.1.23"/>
            <PARAM name="cmDir" value="/data/huawei/openGauss/cmserver"/>
        </DEVICE>
    </DEVICELIST>
</ROOT>
EOF

chmod 600 /opt/opengauss/clusterconfig.xml

四、安装 openGauss 集群(仅主节点 db1 执行)

1. 预安装(db1上root 执行)

bash 复制代码
cd /opt/opengauss/script
./gs_preinstall -U omm -G dbgrp -X /opt/opengauss/clusterconfig.xml

2. 正式安装(db1上omm 执行)

bash 复制代码
su - omm
cd /opt/opengauss/script
./gs_install -X /opt/opengauss/clusterconfig.xml --gsinit-parameter="--pwpasswd=GaussDB@123456"

五、集群验证

查看集群状态

bash 复制代码
gs_om -t status --detail

✅ 正常状态:

Plain 复制代码
cluster_state   : Normal
primary         : 1
standby         : 2

登录数据库

bash 复制代码
gsql -d postgres -p 15400

密码:GaussDB@123456


六、常用管理命令

bash 复制代码
# 启动集群
gs_om -t start

# 停止集群
gs_om -t stop

# 重启集群
gs_om -t restart

# 查看详细状态
gs_om -t status --detail

七、常见问题与修复

7.1 Python 安装后 yum 崩溃(已踩坑修复)

问题现象

执行 yum 命令时报错:

Plain 复制代码
/usr/bin/yum: /usr/bin/python: bad interpreter: No such file or directory
问题原因

CentOS 7 系统的 yum 工具依赖 Python 2.7 ,如果你在安装 Python 3 时,错误地将 /usr/bin/python 软链接覆盖为 Python 3,会导致 yum 找不到 Python 2 而崩溃。

修复命令
bash 复制代码
# 1. 恢复系统默认的 python 指向 python2.7
ln -sf /usr/bin/python2.7 /usr/bin/python

# 2. 验证 yum 恢复正常
yum --version

# 3. 确保 python3 命令正常
python3 -V

7.2 安装时报 /app/openGauss 目录权限错误

问题原因

openGauss 对自定义路径有权限校验冲突,建议使用官方默认的 ** /opt/huawei ** 路径,可避免 99% 的权限报错。


7.3 预安装时报目录已存在

解决方法

删除所有节点上的残留目录,让安装脚本自动创建:

bash 复制代码
rm -rf /opt/huawei
unlink /app/openGauss 2>/dev/null

八、重要说明

  1. /opt/huawei 目录由 gs_preinstall 自动创建,禁止手动创建

  2. 预安装必须用 root,正式安装必须用 omm

  3. **永远不要修改系统默认的 ** /usr/bin/python ,Python 3 单独使用 python3 命令

  4. 本文档为实测零报错标准安装流程

  5. 支持一主两从高可用、自动故障切换、数据强一致

相关推荐
2301_817672261 小时前
CSS如何实现优雅的间距_使用CSS Grid控制盒模型间隙
jvm·数据库·python
Shorasul1 小时前
JavaScript中显式创建包装对象的后果与性能损耗
jvm·数据库·python
吕源林2 小时前
C#怎么实现EF Core迁移 C#如何用Entity Framework Core进行数据库迁移和更新表结构【数据库】
jvm·数据库·python
数厘2 小时前
2.21 sql聚合函数的特性与避坑指南(NULL值处理、DISTINCT在聚合函数中的应用)
数据库·sql·oracle
qq_206901392 小时前
JavaScript中箭头函数在对象字面量方法中的潜在错误
jvm·数据库·python
覆东流3 小时前
第1天:Python环境搭建 & 第一个程序
开发语言·后端·python
Trouvaille ~3 小时前
【MySQL】视图:虚拟表的妙用
数据库·mysql·adb·面试·数据处理·后端开发·视图
Cosolar3 小时前
2026年向量数据库选型指南:Qdrant、Pinecone、Milvus、Weaviate 与 Chroma 深度解析
数据库·面试·llm
m0_747854523 小时前
如何为禁用按钮点击添加提示文案
jvm·数据库·python