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'