GaussDB Inside 2.23.01.280 集中式一主一备安装

GaussDB Inside 2.23.01.280 集中式一主一备安装文档

一、环境规划

节点 主机名 IP 角色
节点 1 node1 10.10.9.211 主库
节点 2 node2 10.10.9.212 备库

以下"系统准备"步骤需在两台机器上执行,除非特别注明。


二、修改主机名和 hosts

node1 执行

bash 复制代码
hostnamectl set-hostname node1
exec bash

node2 执行

bash 复制代码
hostnamectl set-hostname node2
exec bash

两台机器均写入 /etc/hosts

bash 复制代码
cat >> /etc/hosts <<'EOF'
10.10.9.211 node1
10.10.9.212 node2
EOF

验证:

bash 复制代码
hostname
getent hosts node1
getent hosts node2
ping -c 1 node2

三、系统基础配置

1. SELinux

bash 复制代码
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
setenforce 0
getenforce

getenforce 应返回:

text 复制代码
Disabled

修改 /etc/selinux/config 后,建议重启服务器使配置彻底生效。

2. 防火墙和 iptables

bash 复制代码
systemctl stop firewalld
systemctl disable firewalld

iptables -F

3. 文件句柄、进程数和资源限制

不要覆盖 /etc/security/limits.conf,创建独立配置:

bash 复制代码
cat > /etc/security/limits.d/99-gaussdb-omm.conf <<'EOF'
omm soft nofile 1000000
omm hard nofile 1000000
omm soft nproc 1000000
omm hard nproc 1000000
omm soft stack 32768
omm hard stack 32768
omm soft memlock unlimited
omm hard memlock unlimited
omm soft core unlimited
omm hard core unlimited
EOF

配置系统参数:

bash 复制代码
cat > /etc/sysctl.d/99-gaussdb.conf <<'EOF'
kernel.core_pattern = /opt/gaussdb/corefile/core-%e-%p-%t
fs.file-max = 2097152
fs.nr_open = 1048576
kernel.pid_max = 4194304
EOF

sysctl --system

创建 core 文件目录:

bash 复制代码
mkdir -p /opt/gaussdb/corefile
chmod 750 /opt/gaussdb/corefile

设置当前及后续登录 shell 的 core 限制:

bash 复制代码
cat >> /etc/profile <<'EOF'

# GaussDB core dump
ulimit -c unlimited
EOF

source /etc/profile

验证:

bash 复制代码
sysctl fs.file-max fs.nr_open kernel.pid_max kernel.core_pattern

四、准备安装目录和安装介质

node1执行即可

bash 复制代码
mkdir -p /opt/software/Gaussdb
mkdir -p /opt/gaussdb

将安装总包上传到:

text 复制代码
/opt/software/Gaussdb/

例如:

text 复制代码
GaussDB_X86_Kylinv10_Centralized_2.23.01.280_20240826073625.tar.gz

解压总安装包:

bash 复制代码
cd /opt/software/Gaussdb

tar -xf GaussDB_X86_Kylinv10_Centralized_2.23.01.280_20240826073625.tar.gz

确认总包解压后包含 gauss 目录:

bash 复制代码
ls -l

进入 gauss 目录,并将 OM、Server 安装组件解压到当前安装介质根目录:

bash 复制代码
cd /opt/software/Gaussdb/gauss

tar -xf GaussDB-Kernel_503.1.0.SPC2700.B015_Om_X86_Centralized.tar.gz
tar -xf GaussDB-Kernel_503.1.0.SPC2700.B015_Server_X86_Centralized.tar.gz

确认脚本和依赖文件存在:

bash 复制代码
ls -l script/gs_preinstall
ls -l script/gs_install
ls -l dependency/lib/libstdc++.so.6

为避免路径混乱,统一将实际安装介质目录固定为:

text 复制代码
/opt/software/Gaussdb

如果解压后脚本位于 /opt/software/Gaussdb/gauss/om/script,则将 OM 内容同步至安装目录:

bash 复制代码
rsync -aH /opt/software/Gaussdb/gauss/om/ /opt/software/Gaussdb/

复制 Kylin Server 二进制安装包至安装目录根路径:

bash 复制代码
cp -a \
/opt/software/Gaussdb/gauss/server/kylin/GaussDB-Kernel_503.1.0.SPC2700_Kylin_64bit.bin \
/opt/software/Gaussdb/

最终确认:

bash 复制代码
ls -lh /opt/software/Gaussdb/GaussDB-Kernel_503.1.0.SPC2700_Kylin_64bit.bin
ls -lh /opt/software/Gaussdb/dependency/lib/libstdc++.so.6
ls -lh /opt/software/Gaussdb/script/gs_preinstall

五、创建 XML 配置文件

在 node1 创建:

bash 复制代码
cd /opt/software/Gaussdb/script

cat > cluster_config.xml <<'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
    <CLUSTER>
        <PARAM name="clusterName" value="dbCluster" />

        <PARAM name="nodeNames" value="node1,node2" />

        <PARAM name="gaussdbAppPath" value="/opt/gaussdb/install/app" />
        <PARAM name="gaussdbLogPath" value="/opt/gaussdb/log/omm" />
        <PARAM name="tmpMppdbPath" value="/opt/gaussdb/tmp" />
        <PARAM name="gaussdbToolPath" value="/opt/gaussdb/tool" />
        <PARAM name="corePath" value="/opt/gaussdb/corefile" />

        <PARAM name="backIp1s" value="10.10.9.211,10.10.9.212" />

        <PARAM name="clusterType" value="single-inst" />
    </CLUSTER>

    <DEVICELIST>
        <DEVICE sn="node1">
            <PARAM name="name" value="node1" />
            <PARAM name="azName" value="AZ1" />
            <PARAM name="azPriority" value="1" />
            <PARAM name="backIp1" value="10.10.9.211" />
            <PARAM name="sshIp1" value="10.10.9.211" />

            <PARAM name="cmDir" value="/opt/gaussdb/install/cm" />
            <PARAM name="cmsNum" value="1" />
            <PARAM name="cmServerPortBase" value="5000" />
            <PARAM name="cmServerlevel" value="1" />
            <PARAM name="cmServerListenIp1" value="10.10.9.211,10.10.9.212" />
            <PARAM name="cmServerRelation" value="node1,node2" />
            <PARAM name="cmAgentConnectIp" value="10.10.9.211" />

            <PARAM name="etcdNum" value="1" />
            <PARAM name="etcdListenPort" value="2379" />
            <PARAM name="etcdHaPort" value="2380" />
            <PARAM name="etcdDir1" value="/opt/gaussdb/install/etcd" />
            <PARAM name="etcdListenIp1" value="10.10.9.211" />
            <PARAM name="etcdHaIp1" value="10.10.9.211" />

            <PARAM name="dataNum" value="1" />
            <PARAM name="dataPortBase" value="15400" />
            <PARAM name="dataListenIp" value="(10.10.9.211),(10.10.9.212)" />
            <PARAM name="dataNode1" value="/opt/gaussdb/install/data/dn,node2,/opt/gaussdb/install/data/dn" />
            <PARAM name="dataNode1_syncNum" value="1" />
        </DEVICE>

        <DEVICE sn="node2">
            <PARAM name="name" value="node2" />
            <PARAM name="azName" value="AZ1" />
            <PARAM name="azPriority" value="1" />
            <PARAM name="backIp1" value="10.10.9.212" />
            <PARAM name="sshIp1" value="10.10.9.212" />

            <PARAM name="cmDir" value="/opt/gaussdb/install/cm" />

            <PARAM name="etcdNum" value="1" />
            <PARAM name="etcdListenPort" value="2379" />
            <PARAM name="etcdHaPort" value="2380" />
            <PARAM name="etcdDir1" value="/opt/gaussdb/install/etcd" />
            <PARAM name="etcdListenIp1" value="10.10.9.212" />
            <PARAM name="etcdHaIp1" value="10.10.9.212" />
        </DEVICE>
    </DEVICELIST>
</ROOT>
EOF

六、预安装

在 node1 的 root 用户下执行:

bash 复制代码
cd /opt/software/Gaussdb/script

./gs_preinstall \
  -U omm \
  -G dbgrp \
  -X /opt/software/Gaussdb/script/cluster_config.xml \
  --alarm-type=5

执行期间会询问:

  • 是否创建 root 用户 SSH 互信;
  • 是否创建 omm 用户和 SSH 互信。

均输入:

text 复制代码
yes

预安装成功标志:

text 复制代码
Preinstallation succeeded.

预安装完成后,检查 OS 告警:

bash 复制代码
/opt/software/Gaussdb/script/gs_checkos -i A -h node1,node2

After the pre-installation is completed, execute the following commands on both machines:

bash 复制代码
chown -R omm:dbgrp /opt/software/Gaussdb
chown -R omm:dbgrp /opt/gaussdb

确认:

bash 复制代码
ls -ld /opt/software/Gaussdb /opt/gaussdb

七、授权安装目录

预安装完成后,两台机器均执行:

bash 复制代码
chown -R omm:dbgrp /opt/software/Gaussdb
chown -R omm:dbgrp /opt/gaussdb

确认:

bash 复制代码
ls -ld /opt/software/Gaussdb /opt/gaussdb

八、正式安装

仅在 node1 执行:

bash 复制代码
su - omm

使用环境变量中的 gs_install

bash 复制代码
which gs_install

执行安装:

bash 复制代码
gs_install -X /opt/software/Gaussdb/script/cluster_config.xml

不要使用:

bash 复制代码
./gs_install -U omm -G dbgrp ...

因为正式安装阶段的 gs_install 不接受 -U-G--alarm-type 参数。

安装成功时应看到类似:

text 复制代码
Successfully started cluster.
cluster_state      : Normal
Datanode State
    primary        : 1
    standby        : 1
Successfully installed application.

九、连接数据库

在 node1,以 omm 用户执行:

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

也可以指定主库 IP:

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

默认 gsql -d postgres 会连接默认 socket 和 5432 端口,不适用于本配置。

首次登录后修改密码:

sql 复制代码
ALTER ROLE "omm" PASSWORD '请替换为强密码';

查看内核版本:

sql 复制代码
select version();

确认当前实例是否为主库:

sql 复制代码
select pg_is_in_recovery();

返回:

text 复制代码
f

表示当前实例为主库,可读写。

返回:

text 复制代码
t

表示当前实例为备库,通常只读。

退出数据库:

sql 复制代码
\q

十、查看集群状态

omm 用户执行:

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

简要状态:

bash 复制代码
gs_om -t status

正常状态应包含:

text 复制代码
cluster_state      : Normal
Datanode State
    primary        : 1
    standby        : 1

十一、常用端口

服务 端口
GaussDB 主库连接端口 15400
CM Server 5000
etcd Client 2379
etcd Peer 2380

检查端口:

bash 复制代码
netstat -lntp | egrep '15400|5000|2379|2380'
相关推荐
沉静的小伙1 小时前
Spring事务
java·数据库·spring
大侠锅锅1 小时前
第 3 篇:节点自动化纳管——从裸机到可管理的 7 步安装流水线
数据库·自动化·边缘计算·iot
笃行3501 小时前
踩坑实战 | MySQL/PostgreSQL 迁移必踩:LEFT JOIN 莫名丢数据,KES 外连接消除避坑指南
数据库
摇滚侠1 小时前
Redis7 零基础到进阶 Linux 离线安装 Redis 09-10
数据库·redis·缓存
赵渝强老师2 小时前
【赵渝强老师】达梦数据库的回滚数据
数据库·达梦数据库·国产数据库
从此以后自律2 小时前
SQL 语句从基础到高级
数据库·oracle
IvorySQL2 小时前
PG 日报|多款 PostgreSQL 工具新版本集中发布
数据库·postgresql
不剪发的Tony老师3 小时前
金仓数据库在线体验:简单易用
数据库·金仓数据库
techdashen3 小时前
Uber 的全局限流系统:从零散 Redis 限流到服务网格里的自动化流量保护
数据库·redis·自动化