openEuler 22.03安装 openGauss 6.0.5集群及VIP 实操记录

举报
yd_268505900 发表于 2026/11/04 11:25:14 2026/11/04
【摘要】 openEuler 22.03安装 openGauss 6.0.5集群及VIP 实操记录
================================================================================
            openEuler 22.03 LTS-SP4 安装 openGauss 6.0.5 实操记录
================================================================================

[基本信息]
OS: openEuler 22.03 (LTS-SP4) x86_64
DB: openGauss-All-6.0.5-openEuler22.03-x86_64.tar.gz
架构: 一主两从 (Primary + Standby * 2)
安装目录: /data/openGauss
数据库用户: omm
数据库组: dbgrp

[节点规划]
主节点: 172.16.50.41  opengauss-master
备节点1: 172.16.50.42  opengauss-node1
备节点2: 172.16.50.43  opengauss-node2

================================================================================
                                第一部分:环境准备 (所有节点执行)
================================================================================

1. 关闭防火墙与SELinux
--------------------------------------------------------------------------------
systemctl disable firewalld --now
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
setenforce 0

2. 配置主机名与Hosts解析
--------------------------------------------------------------------------------
# 分别设置主机名
hostnamectl set-hostname opengauss-master  # 在41执行
hostnamectl set-hostname opengauss-node1   # 在42执行
hostnamectl set-hostname opengauss-node2   # 在43执行

# 统一写入hosts文件 (三台都要做)
cat >> /etc/hosts << EOF
172.16.50.41 opengauss-master
172.16.50.42 opengauss-node1
172.16.50.43 opengauss-node2
EOF

3. 创建用户和用户组
--------------------------------------------------------------------------------
groupadd dbgrp
useradd -g dbgrp omm
echo "omm:asd123ASD@" | chpasswd


安装依赖
yum install libaio-devel readline-devel expect libedit-devel libxml2-devel lz4-devel numactl-devel unixODBC-devel java-1.8.0-openjdk-devel openblas-devel tar lrzsz net-tools

# 内核参数
cat >> /etc/sysctl.conf << EOF
fs.aio-max-nr = 1048576
net.ipv4.tcp_fin_timeout = 60
net.ipv4.tcp_tw_reuse = 1
vm.swappiness = 0
EOF
sysctl -p

# 资源限制
cat >> /etc/security/limits.conf << EOF
omm soft nproc unlimited
omm hard nproc unlimited
omm soft nofile 1000000
omm hard nofile 1000000
EOF


mkdir -p /data/opengauss/soft
chown -R omm:dbgrp /data/opengauss
chmod -R 755 /data/opengauss

=========================================
master节点执行

su - omm
ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
ssh-copy-id omm@opengauss-master
ssh-copy-id omm@opengauss-node1
ssh-copy-id omm@opengauss-node2
# 验证免密
ssh opengauss-node1 date
exit

切换到root用户,master执行

上传文件到/data/opengauss/soft下面
tar -zxvf openGauss-All-6.0.5-openEuler22.03-x86_64.tar.gz
tar -zxvf openGauss-OM-6.0.5-openEuler22.03-x86_64.tar.gz   # 必须解压OM包,否则无 script 目录

cd script/
vim /data/opengauss/soft/script/cluster.xml
--------------------配置文件----------------------
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
    <!-- 整体集群信息 -->
    <CLUSTER>
        <!-- 数据库集群名称 -->
        <PARAM name="clusterName" value="Cluster_template" />
        <!-- 数据库节点名称,与主机名一一对应 -->
        <PARAM name="nodeNames" value="opengauss-master,opengauss-node1,opengauss-node2" />
        <!-- 数据库安装目录 -->
        <PARAM name="gaussdbAppPath" value="/data/opengauss/install/app" />
        <!-- 日志存放目录 -->
        <PARAM name="gaussdbLogPath" value="/data/opengauss/install/log" />
        <!-- 临时文件存放目录 -->
        <PARAM name="tmpMppdbPath" value="/data/opengauss/install/tmp" />
        <!-- 数据库工具安装目录 -->
        <PARAM name="gaussdbToolPath" value="/data/opengauss/install/tool" />
        <!-- 数据库core文件存放目录 -->
        <PARAM name="corePath" value="/data/opengauss/install/corefile" />
        <!-- 节点IP列表,与nodeNames一一对应 -->
        <PARAM name="backIp1s" value="172.16.50.41,172.16.50.42,172.16.50.43" />

        <!-- ========== 以下为DCF模式新增/修改的参数 ========== -->

        <!-- 【新增】开启DCF模式 -->
        <PARAM name="enable_dcf" value="on"/>

        <!-- 【新增】DCF集群配置 -->
        <!-- stream_id: 流ID,集群内统一 -->
        <!-- node_id: 节点ID,依次为1、2、3 -->
        <!-- ip: 节点IP -->
        <!-- port: DCF通信端口,三个节点需保持一致 -->
        <!-- role: 节点角色,必须配置一个LEADER,其余为FOLLOWER[reference:0] -->
        <PARAM name="dcf_config" value='[{"stream_id":1,"node_id":1,"ip":"172.16.50.41","port":17783,"role":"LEADER"},{"stream_id":1,"node_id":2,"ip":"172.16.50.42","port":17783,"role":"FOLLOWER"},{"stream_id":1,"node_id":3,"ip":"172.16.50.43","port":17783,"role":"FOLLOWER"}]'/>
        <!-- ========== DCF参数配置结束 ========== -->
    </CLUSTER>

    <!-- 设备列表,定义每个节点的详细配置 -->
    <DEVICELIST>
        <!-- 节点1:主节点 -->
        <DEVICE sn="node1_hostname">
            <PARAM name="name" value="opengauss-master" />
            <PARAM name="azName" value="AZ1" />
            <PARAM name="azPriority" value="1" />
            <PARAM name="backIp1" value="172.16.50.41" />
            <PARAM name="sshIp1" value="172.16.50.41" />

            <!-- CM相关配置保持不变 -->
            <PARAM name="cmsNum" value="1" />
            <PARAM name="cmServerPortBase" value="15400" />
            <PARAM name="cmServerListenIp1" value="172.16.50.41,172.16.50.42,172.16.50.43" />
            <PARAM name="cmServerHaIp1" value="172.16.50.41,172.16.50.42,172.16.50.43" />
            <PARAM name="cmServerlevel" value="1" />
            <PARAM name="cmServerRelation" value="opengauss-master,opengauss-node1,opengauss-node2" />
            <PARAM name="cmDir" value="/data/opengauss/install/data/cmserver" />

            <!-- 数据库实例配置 -->
            <PARAM name="dataNum" value="1" />
            <PARAM name="dataPortBase" value="15000" />
            <PARAM name="dataNode1" value="/data/opengauss/install/data/dn1,opengauss-node1,/data/opengauss/install/data/dn1,opengauss-node2,/data/opengauss/install/data/dn1" />
            <!-- DCF模式下,同步备机数量由DCF协议保证,此参数可设置为0或忽略 -->
            <PARAM name="dataNode1_syncNum" value="0" />
        </DEVICE>

        <!-- 节点2:备节点1 -->
        <DEVICE sn="node2_hostname">
            <PARAM name="name" value="opengauss-node1" />
            <PARAM name="azName" value="AZ1" />
            <PARAM name="azPriority" value="1" />
            <PARAM name="backIp1" value="172.16.50.42" />
            <PARAM name="sshIp1" value="172.16.50.42" />
            <PARAM name="cmServerPortStandby" value="15400" />
            <PARAM name="cmDir" value="/data/opengauss/install/data/cmserver" />
        </DEVICE>

        <!-- 节点3:备节点2 -->
        <DEVICE sn="node3_hostname">
            <PARAM name="name" value="opengauss-node2" />
            <PARAM name="azName" value="AZ1" />
            <PARAM name="azPriority" value="1" />
            <PARAM name="backIp1" value="172.16.50.43" />
            <PARAM name="sshIp1" value="172.16.50.43" />
            <PARAM name="cmServerPortStandby" value="15400" />
            <PARAM name="cmDir" value="/data/opengauss/install/data/cmserver" />
        </DEVICE>
    </DEVICELIST>
</ROOT>


--------------------------------------------------


chown -R omm:dbgrp /data/opengauss
cd /data/opengauss/soft/script
./gs_preinstall -U omm -G dbgrp -X /data/opengauss/soft/script/cluster.xml
这个期间,会让你输入密码,最后输出:
Successfully set finish flag.
Preinstallation succeeded.
预安装完成会生成/data/opengauss/install/文件,大概这样
[root@opengauss-master script]# ll /data/opengauss/install/
总用量 24
drwx------. 2 omm dbgrp 4096  7月  3 15:44 app_5ba692ab
drwxr-x---. 2 omm dbgrp 4096  7月  3 15:44 corefile
drwx------. 4 omm dbgrp 4096  7月  3 15:44 data
drwxr-x---. 3 omm dbgrp 4096  7月  3 15:42 log
drwx------. 2 omm dbgrp 4096  7月  3 15:45 tmp
drwx------. 6 omm dbgrp 4096  7月  3 15:45 tool


su - omm
gs_install -X /data/opengauss/soft/script/cluster.xml

最后输出:
Starting cluster.
======================================================================
Successfully started primary instance. Wait for standby instance.
======================================================================
.....
Successfully started cluster.
======================================================================
cluster_state      : Normal
redistributing     : No
node_count         : 3
Datanode State
    primary           : 1
    standby           : 2
    secondary         : 0
    cascade_standby   : 0
    building          : 0
    abnormal          : 0
    down              : 0

Successfully installed application.
end deploy..

=====================

状态查看命令
gs_om -t status --detail
=====================
[omm@opengauss-master ~]$ gs_om -t status --detail
[  CMServer State   ]

node                node_ip         instance                                             state
------------------------------------------------------------------------------------------------
1  opengauss-master 172.16.50.41     1    /data/opengauss/install/data/cmserver/cm_server Primary
2  opengauss-node1  172.16.50.42     2    /data/opengauss/install/data/cmserver/cm_server Standby
3  opengauss-node2  172.16.50.43     3    /data/opengauss/install/data/cmserver/cm_server Standby

[   Cluster State   ]

cluster_state   : Normal
redistributing  : No
balanced        : Yes
current_az      : AZ_ALL

[  Datanode State   ]

node                node_ip         instance                                     state            
--------------------------------------------------------------------------------------------------
1  opengauss-master 172.16.50.41     6001 15000  /data/opengauss/install/data/dn1 P Primary Normal
2  opengauss-node1  172.16.50.42     6002 15000  /data/opengauss/install/data/dn1 S Standby Normal
3  opengauss-node2  172.16.50.43     6003 15000  /data/opengauss/install/data/dn1 S Standby Normal


===============
查看DCF模式是否启用
gs_guc check -D /data/opengauss/install/data/dn1 -c "enable_dcf"
应返回 enable_dcf=on,确认 DCF 模式已启用。



第5部分:配置虚拟IP(VIP)自动漂移(master,omm用户)
-------------------------------------------------------------------------------

5.1 为 omm 用户配置 sudo 权限执行 ifconfig(所有节点,root用户)
    编辑 /etc/sudoers:
    # visudo
    添加一行(在 root 行下方):
    omm ALL=(ALL) NOPASSWD: /usr/sbin/ifconfig

5.2 在主节点(当前 Primary)注册 VIP 资源
cm_ctl res --add --res_name="VIP_az1" --res_attr="resources_type=VIP,float_ip=172.16.50.100"

5.3 将 VIP 关联到各个 DN 实例(实例 ID 从 gs_om -t status --detail 获取,此处为 6001,6002,6003)
cm_ctl res --edit --res_name="VIP_az1" --add_inst="node_id=1,res_instance_id=6001" --inst_attr="base_ip=172.16.50.41"
cm_ctl res --edit --res_name="VIP_az1" --add_inst="node_id=2,res_instance_id=6002" --inst_attr="base_ip=172.16.50.42"
cm_ctl res --edit --res_name="VIP_az1" --add_inst="node_id=3,res_instance_id=6003" --inst_attr="base_ip=172.16.50.43"

5.4 同步配置文件到所有备节点
cd /data/opengauss/install/data/cmserver/cm_agent/
scp cm_resource.json opengauss-node1:/data/opengauss/install/data/cmserver/cm_agent/
scp cm_resource.json opengauss-node2:/data/opengauss/install/data/cmserver/cm_agent/

5.5 重启 CM 使配置生效(所有节点)
    由于 cm_ctl 版本差异,采用全局重启(不会影响数据库):
    $ cm_ctl stop
    $ cm_ctl start
    等待几秒,用 ip a | grep 172.16.50.100 检查 VIP 是否已绑定到 master 网卡。

-----------------------------------------------------------------------------------------------------------------------------------------
5.6 配置数据库监听 VIP 地址(主节点执行)
    $ gs_guc set -D /data/opengauss/install/data/dn1 -c "listen_addresses = 'localhost,172.16.50.41,172.16.50.100'"
    $ gs_ctl reload -D /data/opengauss/install/data/dn1

5.7 允许 VIP 地址访问数据库(所有节点)
    重复 4.1 步骤,添加:
    $ echo "host    all             all             172.16.50.100/32        sha256" >> /data/opengauss/install/data/dn1/pg_hba.conf
    $ gs_ctl reload -D /data/opengauss/install/data/dn1

-------------------------------------------------------------------------------
第6部分:验证 VIP 高可用(故障切换测试)
-------------------------------------------------------------------------------

6.1 记录当前主节点和 VIP 归属
    $ gs_om -t status --detail          # 确认主节点为 opengauss-master
    $ ip a | grep 172.16.50.100         # VIP 应在 master 网卡上

6.2 模拟主节点数据库故障(在 master 执行)
    $ gs_ctl stop -D /data/opengauss/install/data/dn1 -m immediate

6.3 观察集群切换(等待约 10-20 秒)
    $ gs_om -t status --detail
    应看到新主变为 opengauss-node1 或 node2,原 master 变为 Standby 或 Unknown。

6.4 检查 VIP 是否漂移到新主
    在新主节点(例如 node1)上执行:
    $ ip a | grep 172.16.50.100
    应看到 VIP 已绑定到新主网卡。

6.5 使用 VIP 连接数据库测试读写
    $ gsql -d postgres -p 15000 -h 172.16.50.100 -U testuser -W'Test@1234'
    若能连接,执行:
    testdb=# CREATE TABLE t1 (id int);
    testdb=# INSERT INTO t1 VALUES (1);
    testdb=# SELECT * FROM t1;
    确认写入成功。

-------------------------------------------------------------------------------
第7部分:恢复原主节点(可选)
-------------------------------------------------------------------------------

7.1 在 master 启动数据库并重建数据
    $ gs_ctl start -D /data/opengauss/install/data/dn1
    此时 master 可能处于 Standby Unknown,需执行全量 build:
    $ gs_ctl stop -D /data/opengauss/install/data/dn1 -m fast
    $ gs_ctl build -D /data/opengauss/install/data/dn1 -b full
    $ gs_ctl start -D /data/opengauss/install/data/dn1

7.2 将主角色切换回 master(若需要)主节点执行
    $ gs_ctl switchover -D /data/opengauss/install/data/dn1
    $ gs_om -t status --detail  # 确认 master 变回 Primary

7.3 验证 VIP 自动回到 master
    $ ip a | grep 172.16.50.100   # 应显示在 master 网卡上

---------------------------------------------
配置文件,omm执行,所有节点执行
---------------------------------------------
在vim /data/opengauss/install/data/dn1/pg_hba.conf最后加上
host all all 0.0.0.0/0 md5
允许任意IP,任意账号登录,主要是测试navicat远程连接

vim /data/opengauss/install/data/dn1/postgresql.conf
密码模式修改,默认是注释的
password_encryption_type = 0
修改监听地址,默认执行固定IP
listen_addresses = '*'

修改之后,重新加载配置文件或者重启集群
gs_ctl reload -D /data/opengauss/install/data/dn1

重启整个集群:cm_ctl stop && cm_ctl start 或 cm_ctl stop; cm_ctl start

----------------------------------------------------------------------
如果单独测试某个节点故障
-----------------------------------------------------------------------
查询node节点id顺序  cm_ctl query -Cvid,以CMServer State查询出来的为准

[  CMServer State   ]

node                node_ip         instance                                             state
------------------------------------------------------------------------------------------------
1  opengauss-master 172.16.50.41     1    /data/opengauss/install/data/cmserver/cm_server Standby
2  opengauss-node1  172.16.50.42     2    /data/opengauss/install/data/cmserver/cm_server Standby
3  opengauss-node2  172.16.50.43     3    /data/opengauss/install/data/cmserver/cm_server Primary

如果停止opengauss-master,执行cm_ctl stop -n 1      启动:cm_ctl start -n 1
如果停止opengauss-node1,执行cm_ctl stop -n 2      启动:cm_ctl start -n 2
如果停止opengauss-node2,执行cm_ctl stop -n 3      启动:cm_ctl start -n 3








【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。