GaussDB 505.0 分布式集群部署方案(Kylin V10 x64)
一、安装包清单与分析
| 序号 | 文件名 | 大小 | 用途 |
|---|---|---|---|
| 1 | DBS-GaussDB-Adaptor_2.23.T260.1702461324.tar.gz |
408 KB | Adaptor 接口适配包 |
| 2 | GaussDB-Kernel_505.0.0_Kylin_64bit.tar.gz |
90,976 KB | 内核安装包 |
| 3 | GaussDB-Kernel_505.0.T115.B007_Om_X86_Distributed.tar.gz |
31,509 KB | OM(运维管理)分布式包 |
| 4 | GaussDB-Kernel_505.0.T115.B007_Server_X86_Distributed.tar.gz |
813,407 KB | Server(数据库服务)分布式包 |
说明:
-
包 3 和包 4 是本次部署集群需要用到的安装包
-
配置文件模板在包 3(
GaussDB-Kernel_505.0.T115.B007_Om_X86_Distributed.tar.gz)的解压后目录/script/gspylib/etc/conf下 -
预安装gs_preinstall和安装gs_install脚本在包3(
GaussDB-Kernel_505.0.T115.B007_Om_X86_Distributed.tar.gz)的解压后目录/script/下
二、部署架构规划
2.1 集群节点规划(3节点分布式)
角色规划
| 组件 | gaussdb01 | gaussdb02 | gaussdb03 |
|---|---|---|---|
| CM 集群管理 | 主节点 | 无 | 备节点 |
| GTM 全局事务 | 备节点 | 无 | 主节点 |
| CN 协调节点 | 有 | 有 | 有 |
| DN 数据分片(3 分片) | 主节点 | 备节点 | Dummy 级联备 |
| ETCD | 关闭(官方默认) | 关闭(官方默认) | 关闭(官方默认 |
| 分片 | 主节点 (Primary) | 备节点 (Standby) | 级联备 (Dummy/Secondary) |
|---|---|---|---|
| 分片1 | gaussdb01 (dn_master) | gaussdb02 (dn_slave) | gaussdb03 (dn_dummy) |
| 分片2 | gaussdb02 (dn_master) | gaussdb03 (dn_slave) | gaussdb01 (dn_dummy) |
| 分片3 | gaussdb03 (dn_master) | gaussdb01 (dn_slave) | gaussdb02 (dn_dummy) |
2.2 节点角色说明
| 组件 | 说明 |
|---|---|
| CN (Coordinator) | 协调节点,接收客户端请求,分发SQL到DN,汇总结果返回 |
| DN (Datanode) | 数据节点,存储实际数据,每个分片3副本 |
| GTM (Global Transaction Manager) | 全局事务管理器,负责全局事务ID分配和快照管理 |
| CM (Cluster Manager) | 集群管理器,负责集群状态监控和故障切换 |
2.3 硬件最低要求(每节点)
| 资源 | 推荐配置 | 当前实验配置 |
|---|---|---|
| CPU | 16核+ | 12核 |
| 内存 | 64 GB | 32 GB |
| 系统盘 | 200 GB SSD | 200 GB SAS (包含 /gaussdb) |
| 数据盘 | 500 GB+ SSD (用于 /data 或 /gaussdb) | 200 GB SAS (用于 /data) |
三、环境准备(所有节点执行)
重要: 以下步骤需要在 3个节点上全部执行,且确保 root 密码一致。
3.1 基础配置
# ========== 1. 设置主机名(每节点不同) ========== # Node01 hostnamectl set-hostname gaussdb01 # Node02 hostnamectl set-hostname gaussdb02 # Node03 hostnamectl set-hostname gaussdb03 # ========== 2. 配置 /etc/hosts(所有节点相同) ========== cat >> /etc/hosts << 'EOF' 192.192.103.171 gaussdb01 192.192.103.172 gaussdb02 192.192.103.173 gaussdb03 EOF # ========== 3. 关闭防火墙 ========== systemctl stop firewalld.service systemctl disable firewalld.service systemctl status firewalld # 应显示 inactive (dead) # 也检查 iptables systemctl stop iptables.service 2>/dev/null systemctl disable iptables.service 2>/dev/null # ========== 4. 关闭 SELinux ========== sed -i 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config setenforce 0 2>/dev/null getenforce # 应显示 Permissive 或 Disabled # ========== 5. 设置字符集 ========== echo 'export LANG=en_US.UTF-8' >> /etc/profile source /etc/profile echo $LANG # 应显示 en_US.UTF-8 # 确保 /etc/sysconfig/i18n(Kylin 可能需要) echo 'LANG=en_US.UTF-8' >> /etc/sysconfig/i18n 2>/dev/null # ========== 6. 关闭 Swap ========== swapoff -a # 注释掉 /etc/fstab 中的 swap 行 sed -i 's/^.*swap.*$/#&/' /etc/fstab free -h # 确认 Swap 为 0 # ========== 7. 关闭会话超时 ========== echo 'export TMOUT=0' >> /etc/profile source /etc/profile # ========== 8. 创建omm用户 ========== groupadd dbgrp useradd -g dbgrp omm echo "Huawei_1234" | passwd --stdin omm
3.2 时间同步配置
# 设置时区为中国标准时间 timedatectl set-timezone Asia/Shanghai ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime # 安装并配置 chrony(推荐)或 ntp yum install chrony -y # 配置 chrony.conf cat > /etc/chrony.conf << 'EOF' # 使用内网 NTP 服务器(替换为实际地址) server ntp-server.local iburst # 允许所有客户端 allow all # 本地时钟作为备用 local stratum 10 # 日志 driftfile /var/lib/chrony/drift logdir /var/log/chrony EOF # 启动 chrony systemctl enable chronyd systemctl restart chronyd chronyc sources -v # 检查时间源状态 # 强制同步(如需要) chronyc -a makestep
3.3 SSH 互信配置(gs_preinstall时也会配置,可忽略)
# ========== 在节点(Node01、Node02、Node03)上生成密钥并分发,root、omm用户配置 ========== ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa # 将公钥分发到所有节点(包括自己,Node01、Node02、Node03 3个节点都执行) for node in gaussdb01 gaussdb02 gaussdb03; do ssh-copy-id -o StrictHostKeyChecking=no root@$node done # 验证互信(每台都要能无密码SSH到其他节点) for node in gaussdb01 gaussdb02 gaussdb03; do ssh root@$node "hostname" done
3.4 系统参数优化
# ========== 1. 文件描述符限制 ==========
cat >> /etc/security/limits.conf << 'EOF'
* soft nofile 1000000
* hard nofile 1000000
EOF
# ========== 2. 最大进程数 ==========
cat > /etc/security/limits.d/90-nproc.conf << 'EOF'
* soft nproc 60000
EOF
# ========== 3. SSH 配置 ==========
# 确保 UsePAM yes
sed -i 's/^#UsePAM.*/UsePAM yes/' /etc/ssh/sshd_config
sed -i 's/^UsePAM.*/UsePAM yes/' /etc/ssh/sshd_config
systemctl restart sshd
# ========== 4. 网络 MTU 值 ==========
# 找到网卡名称(如 eth0、ens33 等)
NIC=$(ip route | grep default | awk '{print $5}')
# 设置 MTU
sed -i '/^MTU=/d' /etc/sysconfig/network-scripts/ifcfg-$NIC
echo 'MTU=8192' >> /etc/sysconfig/network-scripts/ifcfg-$NIC
systemctl restart NetworkManager 2>/dev/null || systemctl restart network
# ========== 5. 关闭透明大页(THP) ==========
echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled
echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag
# 永久生效
cat >> /etc/rc.d/rc.local << 'EOF'
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
EOF
chmod +x /etc/rc.d/rc.local
# ========== 6. 使配置生效 ==========
source /etc/profile
reboot # 建议重启使所有内核参数生效
3.5 安装依赖包
# ========== 安装必要依赖 ========== ##安装操作系统时同时选择安装开发套件,基本下述组件都已安装 yum install -y \ bzip2 \ libaio-devel \ flex \ bison \ ncurses-devel \ glibc-devel \ patch \ expect \ openssl \ openssl-devel \ readline \ readline-devel \ zlib \ zlib-devel \ lsof \ net-tools # ========== 检查关键依赖 ========== ##麒麟V10 python3已默认安装且满足要求 python3 --version # 应 >= 3.7 expect -v openssl version java -version 2>/dev/null || echo "Java not required for GaussDB kernel"
3.6 环境检查清单
| 检查项 | 命令 | 期望结果 |
|---|---|---|
| 防火墙状态 | systemctl status firewalld |
inactive (dead) |
| SELinux | getenforce |
Permissive 或 Disabled |
| 字符集 | echo $LANG |
en_US.UTF-8 |
| Swap | free -h |
Swap 为 0 |
| 时间一致性 | date |
所有节点一致 |
| SSH 互信 | ssh gaussdb02 hostname |
无需密码即可连接 |
| Python3 | python3 --version |
>= 3.7 |
| 磁盘空间(数据盘) | df -h /gaussdb 或 df -h /data |
>= 200GB |
| 文件描述符 | ulimit -n |
1000000 |
| 透明大页 | cat /sys/kernel/mm/transparent_hugepage/enabled |
always madvise [never] |
四、软件包准备
4.1 创建目录结构(三个节点相同操作)
# 创建安装目录
mkdir -p /gaussdb/software # 安装包与工具目录
mkdir -p /data # 数据库数据目录
mkdir -p /gaussdb/huawei/newsql/agent
mkdir -p /gaussdb/huawei/{tools,corefile}
mkdir -p /gaussdb/huawei/logs/{gaussdb,temp,agent}
mkdir -p /data/huawei/data/{cm,etcd,gtm,cn,dn_master,dn_slave,dn_dummy}
chown -R omm:dbgrp /gaussdb /data
chmod -R 755 /gaussdb /data
# 将安装包3、4上传到/gaussdb/software目录
# 使用 scp 或 WinSCP 等工具上传
4.2 解压安装包(任意节点操作即可)
(1)包3解压
# 一级解压GaussDB-Kernel_505.0.T115.B007_Om_X86_Distributed.tar.gz [root@gaussdb01 software]# cd /gaussdb/software [root@gaussdb01 software]# tar zxvf GaussDB-Kernel_505.0.T115.B007_Om_X86_Distributed.tar.gz GaussDB-Kernel_505.0.T115_Kylin_64bit_Agent.tar.gz GaussDB-Kernel_505.0.T115_Kylin_64bit_Om.tar.gz # 二级解压GaussDB-Kernel_505.0.T115_Kylin_64bit_Om.tar.gz [root@gaussdb01 software]# tar zxvf GaussDB-Kernel_505.0.T115_Kylin_64bit_Om.tar.gz # 查看解压后的内容 ls -ltr total 16 drwx------. 11 20001 20001 4096 Jan 6 2024 script -rwx------. 1 20001 20001 50 Jan 6 2024 om_version drwx------. 15 20001 20001 258 Jan 6 2024 lib drwx------. 4 20001 20001 30 Jan 6 2024 kernel drwx------. 2 20001 20001 43 Jan 6 2024 configtemplate -rwx------. 1 20001 20001 7024 Jan 6 2024 cluster_default_agent.xml drwx------. 2 20001 20001 89 Jan 6 2024 bin [root@gaussdb01 software]# cd script [root@gaussdb01 script]# ls -ltr #查看安装脚本gs_preinstall、gs_install total 1244 drwx------ 2 omm dbgrp 4096 Jan 6 2024 util -rwx------ 1 omm dbgrp 27094 Jan 6 2024 uploader.py -rwx------ 1 omm dbgrp 4004 Jan 6 2024 uninstall_force.py drwx------ 3 omm dbgrp 145 Jan 6 2024 stage_step -rwx------ 1 omm dbgrp 877 Jan 6 2024 ReniceLogicalDecodeThreads.sh -rwx------ 1 omm dbgrp 2910 Jan 6 2024 py_pstree.py -rwx------ 1 omm dbgrp 2629 Jan 6 2024 nodegroup_migrate.sh drwx------ 3 omm dbgrp 4096 Jan 6 2024 local -rwx------ 1 omm dbgrp 5961 Jan 6 2024 killall -rwx------ 1 omm dbgrp 12013 Jan 6 2024 JsonToDbClustorInfo.py -rwx------ 1 omm dbgrp 0 Jan 6 2024 __init__.py -rwx------ 1 omm dbgrp 72058 Jan 6 2024 HADR.py -rwx------ 1 omm dbgrp 46661 Jan 6 2024 gs_upgradectl -rwx------ 1 omm dbgrp 6354 Jan 6 2024 gs_uninstall -r-x------ 1 omm dbgrp 55220 Jan 6 2024 gs_sshexkey -rwx------ 1 omm dbgrp 7840 Jan 6 2024 gs_ssh -rwx------ 1 omm dbgrp 10135 Jan 6 2024 gs_shrink -rwx------ 1 omm dbgrp 10801 Jan 6 2024 gs_resize -rwx------ 1 omm dbgrp 9422 Jan 6 2024 gs_replace -r-x------ 1 omm dbgrp 25715 Jan 6 2024 gs_preinstall -rwx------ 1 omm dbgrp 11421 Jan 6 2024 gs_postuninstall -rwx------ 1 omm dbgrp 133985 Jan 6 2024 gs_om -rwx------ 1 omm dbgrp 180012 Jan 6 2024 gs_lcctl -rwx------ 1 omm dbgrp 19610 Jan 6 2024 gs_install -rwx------ 1 omm dbgrp 31967 Jan 6 2024 gs_hotpatch -rwx------ 1 omm dbgrp 26946 Jan 6 2024 gs_finishredo_retrieve -rwx------ 1 omm dbgrp 25107 Jan 6 2024 gs_expand -rwx------ 1 omm dbgrp 11925 Jan 6 2024 gs_convert -rwx------ 1 omm dbgrp 16233 Jan 6 2024 gs_collector -rwx------ 1 omm dbgrp 9222 Jan 6 2024 gs_checkperf -r-x------ 1 omm dbgrp 51063 Jan 6 2024 gs_checkos -rwx------ 1 omm dbgrp 70596 Jan 6 2024 gs_check -rwx------ 1 omm dbgrp 8407 Jan 6 2024 gs_backup -rwx------ 1 omm dbgrp 215948 Jan 6 2024 GaussRoach.py -rwx------ 1 omm dbgrp 29855 Jan 6 2024 cmd_sender.py -rwx------ 1 omm dbgrp 60183 Jan 6 2024 checkRunStatus.py drwx------ 14 omm dbgrp 196 Jul 9 11:19 gspylib drwx------ 8 omm dbgrp 114 Jul 9 11:19 base_utils drwx------ 8 omm dbgrp 138 Jul 9 11:19 domain_utils drwx------ 3 omm dbgrp 143 Jul 9 11:19 base_diff drwx------ 3 omm dbgrp 200 Jul 9 11:19 os_platform drwx------ 18 omm dbgrp 277 Jul 9 11:19 impl -rwx------ 1 omm dbgrp 4541 Jul 9 12:15 cluster_config.xml [root@gaussdb01 script]# cd gspylib/etc/conf [root@gaussdb01 conf]# ls -ltr #查看配置模板 total 324 -rwx------ 1 omm dbgrp 6363 Jan 6 2024 guc_hcs4_list_96c_768g.xml -rwx------ 1 omm dbgrp 6366 Jan 6 2024 guc_hcs4_list_72c_576g.xml -rwx------ 1 omm dbgrp 6363 Jan 6 2024 guc_hcs4_list_64c_512g.xml -rwx------ 1 omm dbgrp 6363 Jan 6 2024 guc_hcs4_list_32c_256g.xml -rwx------ 1 omm dbgrp 6365 Jan 6 2024 guc_hcs2_list_96c_768g.xml -rwx------ 1 omm dbgrp 6365 Jan 6 2024 guc_hcs2_list_96c_1024g.xml -rwx------ 1 omm dbgrp 6227 Jan 6 2024 guc_hcs2_list_8c_64g.xml -rwx------ 1 omm dbgrp 6363 Jan 6 2024 guc_hcs2_list_80c_640g.xml -rwx------ 1 omm dbgrp 6362 Jan 6 2024 guc_hcs2_list_80c_512g.xml -rwx------ 1 omm dbgrp 6364 Jan 6 2024 guc_hcs2_list_72c_576g.xml -rwx------ 1 omm dbgrp 6364 Jan 6 2024 guc_hcs2_list_64c_512g.xml -rwx------ 1 omm dbgrp 6364 Jan 6 2024 guc_hcs2_list_60c_480g.xml -rwx------ 1 omm dbgrp 6362 Jan 6 2024 guc_hcs2_list_32c_256g.xml -rwx------ 1 omm dbgrp 6363 Jan 6 2024 guc_hcs2_list_16c_128g.xml -rwx------ 1 omm dbgrp 6262 Jan 6 2024 guc_hcs2_list_128c_1024g.xml -rwx------ 1 omm dbgrp 6365 Jan 6 2024 guc_hcs2_list_104c_1024g.xml -rwx------ 1 omm dbgrp 6367 Jan 6 2024 guc_hcs1_list_96c_768g.xml -rwx------ 1 omm dbgrp 6367 Jan 6 2024 guc_hcs1_list_96c_1024g.xml -rwx------ 1 omm dbgrp 6231 Jan 6 2024 guc_hcs1_list_8c_64g.xml -rwx------ 1 omm dbgrp 6263 Jan 6 2024 guc_hcs1_list_80c_640g.xml -rwx------ 1 omm dbgrp 6368 Jan 6 2024 guc_hcs1_list_72c_576g.xml -rwx------ 1 omm dbgrp 6367 Jan 6 2024 guc_hcs1_list_64c_512g.xml -rwx------ 1 omm dbgrp 6366 Jan 6 2024 guc_hcs1_list_60c_480g.xml -rwx------ 1 omm dbgrp 6366 Jan 6 2024 guc_hcs1_list_32c_256g.xml -rwx------ 1 omm dbgrp 6366 Jan 6 2024 guc_hcs1_list_16c_128g.xml -rwx------ 1 omm dbgrp 6367 Jan 6 2024 guc_hcs1_list_128c_1024g.xml -rwx------ 1 omm dbgrp 6367 Jan 6 2024 guc_hcs1_list_104c_1024g.xml -rwx------ 1 omm dbgrp 6013 Jan 6 2024 guc_cloud_list_default.xml -rwx------ 1 omm dbgrp 6390 Jan 6 2024 guc_cloud_list_8c_64g.xml -rwx------ 1 omm dbgrp 6476 Jan 6 2024 guc_cloud_list_60c_480g.xml -rwx------ 1 omm dbgrp 5584 Jan 6 2024 guc_cloud_list_4c_32g.xml -rwx------ 1 omm dbgrp 5578 Jan 6 2024 guc_cloud_list_4c_16g.xml -rwx------ 1 omm dbgrp 6475 Jan 6 2024 guc_cloud_list_32c_256g.xml -rwx------ 1 omm dbgrp 6472 Jan 6 2024 guc_cloud_list_16c_128g.xml -rwx------ 1 omm dbgrp 6032 Jan 6 2024 guc_ci_list_8c_32g.xml -rwx------ 1 omm dbgrp 184 Jan 6 2024 gs-OS-set.service -rwx------ 1 omm dbgrp 481 Jan 6 2024 gs_collector.json -rwx------ 1 omm dbgrp 4955 Jan 6 2024 cluster_config_template_single.xml #单机 -rwx------ 1 omm dbgrp 4955 Jan 6 2024 cluster_config_template_mutilAZ.xml #分布式集群 -rwx------ 1 omm dbgrp 4955 Jan 6 2024 cluster_config_template_masterStandby.xml #主备 -rwx------ 1 omm dbgrp 1760 Jan 6 2024 check_list_dws.conf drwx------ 2 omm dbgrp 4096 Jan 6 2024 centralized -rwx------ 1 omm dbgrp 2060 Jul 9 12:50 check_list.conf
(2)包4解压
[root@gaussdb01 software]# cd /gaussdb/software # 一级解压 [root@gaussdb01 software]# tar zxvf GaussDB-Kernel_505.0.T115.B007_Server_X86_Distributed.tar.gz # 进入解压目录查看 [root@gaussdb01 software]# ls -ltr total 890960 -rw-r--r--. 1 root root 42 Jan 6 2024 version.cfg -rw-------. 1 root root 2302314 Jan 6 2024 upgrade_sql.tar.gz -rw-------. 1 root root 65 Jan 6 2024 upgrade_sql.sha256 drwxr-xr-x. 7 root root 67 Jan 6 2024 unixodbc -rw-r--r--. 1 20001 20001 3875271 Jan 6 2024 GaussDB-Kernel_505.0.T115_Windows_X86_Odbc.tar.gz -rw-r--r--. 1 20001 20001 4003304 Jan 6 2024 GaussDB-Kernel_505.0.T115_Windows_X64_Odbc.tar.gz -rw-r--r--. 1 20001 20001 11356508 Jan 6 2024 GaussDB-Kernel_505.0.T115_Kylin_64bit_Xbsa.tar.gz -rw-r--r--. 1 20001 20001 100023810 Jan 6 2024 GaussDB-Kernel_505.0.T115_Kylin_64bit.tar.gz -rwxr-xr-x. 1 20001 20001 602006497 Jan 6 2024 GaussDB-Kernel_505.0.T115_Kylin_64bit_Symbol.tar.gz -rw-r--r--. 1 root root 65 Jan 6 2024 GaussDB-Kernel_505.0.T115_Kylin_64bit.sha256 -rw-r--r--. 1 20001 20001 4006236 Jan 6 2024 GaussDB-Kernel_505.0.T115_Kylin_64bit_Python.tar.gz -rw-r--r--. 1 20001 20001 8774453 Jan 6 2024 GaussDB-Kernel_505.0.T115_Kylin_64bit_Odbc.tar.gz -rw-r--r--. 1 20001 20001 5586978 Jan 6 2024 GaussDB-Kernel_505.0.T115_Kylin_64bit_Libpq.tar.gz -rw-r--r--. 1 20001 20001 4266517 Jan 6 2024 GaussDB-Kernel_505.0.T115_Kylin_64bit_Jdbc.tar.gz -rw-r--r--. 1 20001 20001 5970818 Jan 6 2024 GaussDB-Kernel_505.0.T115_Kylin_64bit_Gsql.tar.gz -rw-r--r--. 1 20001 20001 97594 Jan 6 2024 GaussDB-Kernel_505.0.T115_Kylin_64bit_Go.tar.gz -rw-r--r--. 1 20001 20001 105810 Jan 6 2024 GaussDB-Kernel_505.0.T115_Kylin_64bit_Gds.tar.gz -rw-r--r--. 1 20001 20001 38156183 Jan 6 2024 GaussDB-Kernel_505.0.T115_Kylin_64bit_DBMind.tar.gz -rw-r--r--. 1 20001 20001 36980414 Jan 6 2024 GaussDB-Kernel_505.0.T115_Kylin_64bit_CM_Symbol.tar.gz -rwx------. 1 root root 73463868 Jan 6 2024 GaussDB-Kernel_505.0.T115_Kylin_64bit.bin -rw-r--r--. 1 20001 20001 3356085 Jan 6 2024 GaussDB-Kernel_503.1.T30_Kylin_64bit_Gns.tar.gz -rw-r--r--. 1 20001 20001 7956790 Jan 6 2024 GaussDB-Kernel_503.1.T30_Kylin_64bit_Gns_Symbol.tar.gz drwxr-xr-x. 4 root root 28 Jan 6 2024 dependency drwxr-xr-x. 3 root root 16 Jan 6 2024 components # 注意,上述解压内容必须要高于包3的script目录级别,在其上级目录内,本实验为/gaussdb/software。
五、配置文件修改
5.1 修改 cluster_config.xml
copy模板文件到script目录下:
[root@gaussdb01 software]# su - omm
[omm@gaussdb01 ~]# cp /gaussdb/software/script/gspylib/etc/conf/cluster_config_template_mutilAZ.xml /gaussdb/software/script/cluster_config.xml
#编辑文件
<?xml version="1.0" encoding="utf-8"?> <ROOT> <CLUSTER> <PARAM name="clusterName" value="gaussmppdb" /> <PARAM name="nodeNames" value="gaussdb01,gaussdb02,gaussdb03"/> <PARAM name="gaussdbAppPath" value="/gaussdb/huawei/newsql/app" /> <PARAM name="gaussdbLogPath" value="/gaussdb/huawei/logs/gaussdb" /> <PARAM name="gaussdbToolPath" value="/gaussdb/huawei/tools" /> <PARAM name="backIp1s" value="192.192.103.171,192.192.103.172,192.192.103.173"/> <PARAM name="clusterRings" value="gaussdb01,gaussdb02,gaussdb03"/> <PARAM name="clusterType" value="master-standby"/> </CLUSTER> <DEVICELIST> <!-- ========== 节点1:gaussdb01 ========== --> <DEVICE sn="gaussdb01"> <PARAM name="name" value="gaussdb01"/> <PARAM name="backIp1" value="192.192.103.171"/> <PARAM name="cmDir" value="/data/huawei/data/cm"/> <PARAM name="cmsNum" value="0"/> <PARAM name="cmServerPortBase" value="37100"/> <PARAM name="cmServerPortStandby" value="37150"/> <PARAM name="gtmNum" value="0"/> <PARAM name="gtmPortBase" value="37200"/> <PARAM name="gtmPortStandby" value="37251"/> <PARAM name="cooNum" value="1"/> <PARAM name="cooPortBase" value="8000"/> <PARAM name="cooDir1" value="/data/huawei/data/cn"/> <PARAM name="etcdNum" value="0"/> <PARAM name="etcdListenPort" value="38379"/> <PARAM name="etcdHaPort" value="38380"/> <PARAM name="etcdDir1" value="/data/huawei/data/etcd"/> <PARAM name="dataNum" value="1"/> <PARAM name="dataPortBase" value="38400"/> <PARAM name="dataPortStandby" value="38500"/> <PARAM name="dataPortDummyStandby" value="38550"/> <PARAM name="dataNode1" value="/data/huawei/data/dn_master,gaussdb02,/data/huawei/data/dn_slave,gaussdb03,/data/huawei/data/dn_dummy"/> </DEVICE> <!-- ========== 节点2:gaussdb02 ========== --> <DEVICE sn="gaussdb02"> <PARAM name="name" value="gaussdb02"/> <PARAM name="backIp1" value="192.192.103.172"/> <PARAM name="cmDir" value="/data/huawei/data/cm"/> <PARAM name="cmsNum" value="0"/> <PARAM name="cmServerPortBase" value="37100"/> <PARAM name="cmServerPortStandby" value="37150"/> <PARAM name="gtmNum" value="0"/> <PARAM name="gtmPortBase" value="37200"/> <PARAM name="gtmPortStandby" value="37251"/> <PARAM name="etcdNum" value="0"/> <PARAM name="etcdListenPort" value="39379"/> <PARAM name="etcdHaPort" value="39380"/> <PARAM name="etcdDir1" value="/data/huawei/data/etcd"/> <PARAM name="cooNum" value="1"/> <PARAM name="cooPortBase" value="8000"/> <PARAM name="cooDir1" value="/data/huawei/data/cn"/> <PARAM name="dataNum" value="1"/> <PARAM name="dataPortBase" value="38400"/> <PARAM name="dataPortStandby" value="38500"/> <PARAM name="dataPortDummyStandby" value="38550"/> <PARAM name="dataNode1" value="/data/huawei/data/dn_master,gaussdb03,/data/huawei/data/dn_slave,gaussdb01,/data/huawei/data/dn_dummy"/> </DEVICE> <!-- ========== 节点3:gaussdb03(CM/GTM主节点) ========== --> <DEVICE sn="gaussdb03"> <PARAM name="name" value="gaussdb03"/> <PARAM name="backIp1" value="192.192.103.173"/> <PARAM name="cmDir" value="/data/huawei/data/cm"/> <PARAM name="cmsNum" value="1"/> <PARAM name="cmServerPortBase" value="37100"/> <PARAM name="cmServerPortStandby" value="37150"/> <PARAM name="cmServerlevel" value="1"/> <PARAM name="cmServerRelation" value="gaussdb03,gaussdb01"/> <PARAM name="gtmNum" value="1"/> <PARAM name="gtmPortBase" value="37200"/> <PARAM name="gtmPortStandby" value="37251"/> <PARAM name="gtmDir1" value="/data/huawei/data/gtm,gaussdb01,/data/huawei/data/gtm"/> <PARAM name="gtmRelation" value="gaussdb03,gaussdb01"/> <PARAM name="etcdNum" value="0"/> <PARAM name="etcdListenPort" value="36379"/> <PARAM name="etcdHaPort" value="36380"/> <PARAM name="etcdDir1" value="/data/huawei/data/etcd"/> <PARAM name="cooNum" value="1"/> <PARAM name="cooPortBase" value="8000"/> <PARAM name="cooDir1" value="/data/huawei/data/cn"/> <PARAM name="dataNum" value="1"/> <PARAM name="dataPortBase" value="38400"/> <PARAM name="dataPortStandby" value="38500"/> <PARAM name="dataPortDummyStandby" value="38550"/> <PARAM name="dataNode1" value="/data/huawei/data/dn_master,gaussdb01,/data/huawei/data/dn_slave,gaussdb02,/data/huawei/data/dn_dummy"/> </DEVICE> </DEVICELIST> </ROOT>
六、执行安装
6.1 执行预安装命令(必须root用户执行)
cd /gaussdb/software/script [root@gaussdb01 script]# ./gs_preinstall -X cluster_config.xml -U omm -G dbgrp --alarm-type=1 离线分布式部署无需对接告警平台,--alarm-type选择1即可,不配置告警服务器地址不会影响集群部署和核心运行,仅关闭告警上报功能。不设置该参数,执行将报错。 Parsing the configuration file. Successfully parsed the configuration file. Successfully delete task result file Installing the tools on the local node. Successfully installed the tools on the local node. Are you sure you want to create trust for root (yes/no)?yes Please enter password for root Password: Successfully created SSH trust for the root permission user. Setting HOST_IP env Successfully set HOST_IP env. set hotpatch env. clear hotpatch env. Distributing package. Successfully distribute local lib to remote pylib. Begin to distribute package to tool path. Successfully distribute package to tool path. Begin to distribute package to package path. Successfully distribute package to package path. Successfully distributed package. Are you sure you want to create the user[omm] and create trust for it (yes/no)? yes Preparing SSH service. Successfully prepared SSH service. Installing the tools in the cluster. Successfully installed the tools in the cluster. Checking hostname mapping. Successfully checked hostname mapping. Creating SSH trust for [omm] user. Please enter password for current user[omm] Password: Successfully created SSH trust for [omm] user. Checking OS version. Successfully checked OS version. Creating cluster's path. Successfully created cluster's path. Set and check OS parameter. Setting OS parameters. Successfully set OS parameters. Warning: Installation environment contains some warning messages. Please get more details by "/gaussdb/software/script/gs_checkos -i A -h gaussdb01,gaussdb02,gaussdb03". Set and check OS parameter completed. Preparing CRON service. Successfully prepared CRON service. Setting user environmental variables. Successfully set user environmental variables. Configuring alarms on the cluster nodes. Successfully configured alarms on the cluster nodes. Setting the dynamic link library. Successfully set the dynamic link library. Setting pssh path Successfully set pssh path. Setting Cgroup. Successfully set Cgroup. Set ARM Optimization. Successfully set ARM Optimization. Setting finish flag. Scene: non-huaweiyun Successfully set finish flag. Preinstallation succeeded. 预安装执行成功,无报错。
6.2 执行正式安装命令(omm用户执行)
预安装阶段已自动将完整的 OM 运维工具(含gs_install)分发安装到所有节点的工具目录(你配置的gaussdbToolPath=/gaussdb/huawei/tools),同时为omm用户配置了GPHOME环境变量指向工具根目录。 gs_install有强制路径校验,必须在部署完成的$GPHOME/script目录下执行,不能使用最初解压安装包的临时目录/gaussdb/software/script,避免版本、路径不匹配。 正确执行步骤如下:
1. 加载环境变量并切换到正确目录
当前omm用户下依次执行:
#加载预安装配置好的环境变量
source ~/.bashrc
#确认GPHOME路径(正常输出为 /gaussdb/huawei/tools)
echo $GPHOME
#切换到正式的工具script目录
cd $GPHOME/script
2. 执行正式集群安装
[omm@gaussdb01 script]$ gs_install -X /gaussdb/huawei/tools/script/cluster_config.xml Parsing the configuration file. Check preinstall on every node. Successfully checked preinstall on every node. Creating the backup directory. Creating a Parameter File for Cascading Standby Nodes Successfully created the backup directory. Installing the cluster. Checking the installation environment on all nodes. begin install Cluster.. Installing applications on all nodes. Successfully installed APP. begin init Instance.. Cluster installation is completed. Configuring. Deleting instances from all nodes. Successfully deleted instances from all nodes. Checking node configuration on all nodes. Initializing instances on all nodes. Start to init instance. Updating instance configuration on all nodes. Check consistence of memCheck and coresCheck on db nodes. Successful check consistence of memCheck and coresCheck on all nodes. Configuring pg_hba on all nodes. Configuration is completed. Starting cluster. ====================================================================== Successfully started primary instance. Wait for standby instance. ====================================================================== . Successfully started cluster. ====================================================================== cluster_state : Normal redistributing : No node_count : 3 Coordinator State normal : 3 abnormal : 0 GTM State primary : 1 standby : 1 abnormal : 0 down : 0 Datanode State primary : 3 standby : 3 secondary : 3 building : 0 abnormal : 0 down : 0 Successfully installed application.
安装分为以下几个阶段:
阶段1: 预安装 (Preinstall) └── 以 omm 用户身份在所有节点上创建目录、配置环境 阶段2: 实例安装 (Install) └── 在任一节点上以 omm 用户身份安装数据库实例 阶段3: 集群初始化 └── 启动 CM Server,初始化 CN/GTM/DN
6.3 监控安装进度
# 目录/gaussdb/huawei/logs/gaussdb/omm/om下日志 total 652 -rw------- 1 omm dbgrp 426371 Jul 9 12:51 gs_preinstall-2026-07-09_122147.log -rw------- 1 omm dbgrp 188154 Jul 9 13:18 gs_local-2026-07-09_123845.log -rw------- 1 omm dbgrp 44727 Jul 9 13:25 gs_install-2026-07-09_125544.log -rw------- 1 omm dbgrp 826 Jul 9 13:27 gs_om-2026-07-09_132723.log
七、集群验证
7.1 基础验证
# 切换到 omm 用户 su - omm # 查看集群状态(简要) cm_ctl query -Cv # 查看集群状态(详细) cm_ctl query -Cvipd
7.2 正常状态输出示例
[ CMServer State ] node instance state ----------------------------- 1 gaussdb01 2 Primary 3 gaussdb03 1 Standby [ Cluster State ] cluster_state : Normal redistributing : No balanced : Yes current_az : AZ_ALL [ Coordinator State ] node instance state ----------------------------- 1 gaussdb01 5001 Normal 2 gaussdb02 5002 Normal 3 gaussdb03 5003 Normal [ Central Coordinator State ] node instance state ----------------------------- 2 gaussdb02 5002 Normal [ GTM State ] node instance state sync_state ------------------------------------------------------------- 3 gaussdb03 1001 P Primary Connection ok Sync 1 gaussdb01 1002 S Standby Connection ok Sync [ Datanode State ] node instance state | node instance state | node instance state -------------------------------------------------------------------------------------------------------------------------- 1 gaussdb01 6001 P Primary Normal | 2 gaussdb02 6002 S Standby Normal | 3 gaussdb03 3002 R Secondary Normal 2 gaussdb02 6003 P Primary Normal | 3 gaussdb03 6004 S Standby Normal | 1 gaussdb01 3003 R Secondary Normal 3 gaussdb03 6005 P Primary Normal | 1 gaussdb01 6006 S Standby Normal | 2 gaussdb02 3004 R Secondary Normal
7.3 数据库连接验证
1) 切换到 omm 用户后本地连接
su - omm
[omm@gaussdb01 data]$ gsql -d postgres -p 8000
gsql ((GaussDB Kernel 505.0.T115 build dfab2fa1) compiled at 2024-01-06 12:45:29 commit 6731 last mr 15399 release)
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
gaussdb=# \l
ERROR: Please use "ALTER ROLE "omm" PASSWORD 'password';" to set the password of the user before other operations!
gaussdb=# alter user omm password 'Huawei_1234';
ALTER ROLE
gaussdb=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+-------+-----------+---------+-------+-------------------
postgres | omm | SQL_ASCII | C | C |
template0 | omm | SQL_ASCII | C | C | =c/omm +
| | | | | omm=CTc/omm
template1 | omm | SQL_ASCII | C | C | =c/omm +
| | | | | omm=CTc/omm
(3 rows)
2) 创建普通用户,通过远程连接数据库或者dbeaver等工具
1、修改CN下pg_hba.conf认证规则
--查看pg_hba.conf
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
host all all 192.192.103.171/32 trust
host all all 192.192.103.172/32 trust
host all all 192.192.103.173/32 trust
# IPv6 local connections:
host all all ::1/128 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local replication omm trust
#host replication omm 127.0.0.1/32 trust
#host replication omm ::1/128 trust
--添加新的认证规则
[omm@gaussdb01 cn]$ gs_guc set -Z coordinator -N all -I all -h "host all all 0.0.0.0/0 sha256"
The gs_guc run with the following arguments: [gs_guc -Z coordinator -N all -I all -h host all all 0.0.0.0/0 sha256 set ].
Begin to perform the total nodes: 3.
Popen count is 3, Popen success count is 3, Popen failure count is 0.
Begin to perform gs_guc for coordinators.
Command count is 3, Command success count is 3, Command failure count is 0.
Total instances: 3. Failed instances: 0.
ALL: Success to perform gs_guc!
[omm@gaussdb01 cn]$ cm_ctl reload
.
cm_ctl: cm_ctl reload success.
--查看修改后的规则
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
host all all 192.192.103.171/32 trust
host all all 192.192.103.172/32 trust
host all all 192.192.103.173/32 trust
host all all 0.0.0.0/0 sha256
# IPv6 local connections:
host all all ::1/128 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local replication omm trust
#host replication omm 127.0.0.1/32 trust
#host replication omm ::1/128 trust
2、修改CN下postgresql.conf监听配置
--查看默认监听配置,只监听本机
gaussdb=# show listen_addresses;
listen_addresses
---------------------------
localhost,192.192.103.171
(1 row)
--修改参数
[omm@gaussdb01 ~]$ gs_guc set -Z coordinator -N all -I all -c "listen_addresses = '*'"
The gs_guc run with the following arguments: [gs_guc -Z coordinator -N all -I all -c listen_addresses = '*' set ].
Begin to perform the total nodes: 3.
Popen count is 3, Popen success count is 3, Popen failure count is 0.
Begin to perform gs_guc for coordinators.
Command count is 3, Command success count is 3, Command failure count is 0.
Total instances: 3. Failed instances: 0.
ALL: Success to perform gs_guc!
[omm@gaussdb01 ~]$ cm_ctl reload
.
cm_ctl: cm_ctl reload success.
--重启集群生效
[omm@gaussdb01 ~]$ cm_ctl stop
[omm@gaussdb01 ~]$ cm_ctl start
--查看监听配置
gaussdb=# show listen_addresses;
listen_addresses
------------------
*
(1 row)
gaussdb=# \q
[omm@gaussdb01 cn]$ ss -tlnp | grep 8000
LISTEN 0 6144 0.0.0.0:8000 0.0.0.0:* users:(("gaussdb",pid=333459,fd=8))
LISTEN 0 6144 [::]:8000 [::]:* users:(("gaussdb",pid=333459,fd=9))
正常会出现 0.0.0.0:8000 的监听记录,说明已开放所有地址访问。
3、创建普通用户
[omm@gaussdb01 cn]$ gsql -d postgres -p 8000
gsql ((GaussDB Kernel 505.0.T115 build dfab2fa1) compiled at 2024-01-06 12:45:29 commit 6731 last mr 15399 release)
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
gaussdb=#create user test password 'Huawei_1234' sysadmin;
4、连接测试
#通过client:HCIE连接gassdb
[omm@hcie ~]$ hostname
hcie
[omm@hcie ~]$ gsql -h 192.192.103.171 -d postgres -p 8000 -U test
Password for user test:
gsql ((openGauss 6.0.5 build 5ba692ab) compiled at 2026-05-07 11:52:55 commit 0 last mr 9228 )
SSL connection (cipher: ECDHE-RSA-AES128-GCM-SHA256, bits: 128)
Type "help" for help.
openGauss=> \conninfo
You are connected to database "postgres" as user "test" on host "192.192.103.171" at port "8000".
openGauss=>
5、DBeaver连接




7.4 进程验证
# 在所有节点上检查关键进程 ps -ef | grep -E "gaussdb|om_agent|etcd|cmserver" | grep -v grep [omm@gaussdb03 ~]$ ps -ef | grep -E "gaussdb|om_agent|etcd|cmserver" | grep -v grep omm 45422 1 0 12:50 ? 00:00:00 ssh-agent -a /home/omm/gaussdb_tmp/gauss_socket_tmp omm 62204 1 0 13:01 ? 00:01:12 /gaussdb/huawei/newsql/app/bin/om_monitor -L /gaussdb/huawei/logs/gaussdb/omm/cm/om_monitor omm 78575 62204 25 13:18 ? 00:34:29 /gaussdb/huawei/newsql/app/bin/cm_agent omm 78846 1 0 13:18 ? 00:00:32 /gaussdb/huawei/newsql/app/bin/gs_gtm -D /data/huawei/data/gtm -M pending omm 79922 1 2 13:18 ? 00:02:57 /gaussdb/huawei/newsql/app/bin/gaussdb --datanode -D /data/huawei/data/dn_dummy -M standby -R omm 79949 1 10 13:18 ? 00:13:29 /gaussdb/huawei/newsql/app/bin/gaussdb --datanode -D /data/huawei/data/dn_slave -M pending omm 79987 1 26 13:18 ? 00:35:40 /gaussdb/huawei/newsql/app/bin/gaussdb --datanode -D /data/huawei/data/dn_master -M pending omm 79994 1 0 13:18 ? 00:00:00 gaussdb fenced UDF master process omm 130110 1 30 13:24 ? 00:38:15 /gaussdb/huawei/newsql/app/bin/gaussdb --coordinator -D /data/huawei/data/cn omm 208756 1 15 15:21 ? 00:01:44 /gaussdb/huawei/newsql/app/bin/cm_server # 应该看到: # - cm_agent 进程 # - om_monitor 进程 # - gaussdb (CN/DN/GTM) 进程 # - cmserver 进程
7.5 端口验证
| 组件角色 | 对应进程 | 监听端口 | 核心作用 | 访问范围 |
|---|---|---|---|---|
| CN 协调节点(Coordinator) | gaussdb --coordinator |
8000 | 业务主端口,客户端 / 应用连接数据库的唯一入口,负责 SQL 分发、结果聚合 | 对外业务访问 + 集群内部 |
| 8001 | CN 内部辅助端口,用于 CN 与 DN 节点的内部交互、连接池管理 | 集群内部 | ||
| DN 主数据节点(Datanode Master) | gaussdb --datanode -D dn_master |
38400 | DN 主实例基础服务端口,负责实际数据读写、存储 | 集群内部(仅 CN 访问) |
| 38401 | DN 主内部通信端口 | 集群内部 | ||
| 38402/38403 | 流复制端口,向备 DN、dummy DN 同步数据 | 集群内部 | ||
| DN 备数据节点(Datanode Slave) | gaussdb --datanode -D dn_slave |
38500 | DN 备实例基础服务端口,实时同步主节点数据,主备切换后升级为主 | 集群内部 |
| 38501 | DN 备内部通信端口 | 集群内部 | ||
| 38502/38503 | 流复制端口,接收主 DN 的同步数据 | 集群内部 | ||
| DN 级联备节点(Datanode Dummy) | gaussdb --datanode -D dn_dummy |
38550 | 伪备 / 级联备端口,用于容灾级联同步,不参与正常业务读写 | 集群内部 |
| GTM 全局事务节点 | gs_gtm |
37200 | GTM 主服务端口,负责分发全局事务 ID、全局快照,保证分布式事务一致性 | 集群内部 |
| CM 集群管理主服务 | cm_server |
37100 | CM 主节点端口,负责集群状态调度、主备切换决策、实例生命周期管理 | 集群内部 |
| CMServer备服务 | cmServerPortStandby | 37150 | CM Server 备节点监听端口,用于 CM 主备之间的状态同步和故障切换 | 集群内部 |
| ETCD | 无运行进程 | 无监听 | 配置中etcdNum=0未启用,因此无 2379/2380 端口 |
- |
八、集群管理常用命令
# ===== 集群状态管理 ===== su - omm # 查看集群状态 cm_ctl query -Cvipd # 启动集群 cm_ctl start # 停止集群 cm_ctl stop # 重启集群 cm_ctl restart # 查看集群节点列表 cm_ctl view # 切换主备 cm_ctl switchover -a # ===== 数据库管理 ===== # 连接数据库 gsql -d postgres -p 8000 -r # 查看数据库列表 gsql -d postgres -p 8000 -c "\l" # 查看表分布 gsql -d postgres -p 8000 -c "SELECT * FROM pgxc_node;" # ===== 日志查看 ===== [omm@gaussdb03 pg_log]$ pwd /gaussdb/huawei/logs/gaussdb/omm/pg_log [omm@gaussdb03 pg_log]$ ls -ltr total 0 drwx------ 2 omm dbgrp 89 Jul 9 13:18 gtm drwx------ 2 omm dbgrp 96 Jul 9 13:18 dn_3002 drwx------ 2 omm dbgrp 139 Jul 9 13:48 cn_5003 drwx------ 2 omm dbgrp 139 Jul 9 13:48 dn_6004 drwx------ 2 omm dbgrp 139 Jul 9 13:48 dn_6005
更多推荐




所有评论(0)