ARTICLE · 1310615
openGauss 数据库多系统安装部署教程(CentOS / Ubuntu / Windows / Docker 四平台)
openGauss 数据库多系统安装部署教程(CentOS / Ubuntu / Windows / Docker 四平台)
信创浪潮下,openGauss 已成为国产数据库里绕不开的名字——它源自华为,基于 PostgreSQL 内核深度重构,加入了鲲鹏指令优化、MOT 内存引擎、AI 自动调优(X-Tuner),性能和国产化适配都做了重投入。很多 DBA 习惯了 Oracle/PG 的一键安装,面对 openGauss 的
gs_preinstall、omm用户、cluster_config.xml会一头雾水。这篇教程把 openGauss 在 CentOS、Ubuntu、Windows、Docker 四种环境的安装全流程拆开讲透。

一句话总结
openGauss 安装的核心 = 选型(社区版快速上手 / 企业版生产)+ 环境准备(关防火墙、调参数、建 omm 用户)+ 安装(sh 包 gs_install 或 Docker)+ 配置(XML 集群描述 + gaussdb 参数)+ 验证(gsql 连接)。记住它和 PG 的三个关键差异:用 omm 用户不是 postgres、用 gs_om/gs_install 工具不是 systemctl 裸管、生产装集群要写 cluster_config.xml——理清这三点,安装就不会乱。
一、先认识 openGauss
1.1 它是什么
openGauss 是华为开源的关系型数据库(2020 年开源,由 openGauss 开源社区运营),内核源自 PostgreSQL 9.2 并深度重构。它定位国产企业级数据库,主打:
- 鲲鹏/国产芯片优化:对 ARM64(鲲鹏、飞腾)有专门指令加速
- MOT 引擎:内存优化引擎,适合高并发内存场景
- AI 调优:X-Tuner 自动参数调优、慢 SQL 智能诊断
- 国产化生态:适配麒麟、统信等国产操作系统
1.2 与 PostgreSQL / Oracle 的关系
| 对比项 | openGauss | PostgreSQL | Oracle |
|---|---|---|---|
| 内核来源 | PG 9.2 深度重构 | 原生开源 | 商业自研 |
| 授权 | MulanPSL-2.0(国产开源协议) | PostgreSQL License | 商业授权 |
| 国产适配 | ✅ 原生(信创首选) | ⚠️ 需自行适配 | ❌ |
| 安装工具 | gs_install / gs_om | initdb / systemctl | OUI 图形 / DBCA |
| 默认用户 | omm | postgres | oracle |
| 默认端口 | 5432 / 15400 | 5432 | 1521 |
| SQL 兼容 | 兼容 PG + 部分 Oracle 语法 | 标准 | 标准 |
对 Oracle DBA 最友好的一点:openGauss 的部分 Oracle 兼容语法(如
NVL、DECODE、SEQUENCE.NEXTVAL、ROWNUM),迁移 Oracle 时能少踩不少坑。
二、版本选择与环境要求
2.1 版本形态
| 形态 | 说明 | 适合 |
|---|---|---|
| 社区版 | 完全开源,Docker 可一键跑 | 学习、测试、开发 |
| 企业版 | 有商业支持,需下载授权包 | 生产环境 |
| 第三方发行版 | 云厂商托管(如各云 GaussDB) | 免运维 |
版本节奏:社区版大致每年一个大版本,偶数版(6.0、8.0)为 LTS。截至本文,推荐生产用 6.0 LTS,尝新用最新社区版。
2.2 硬件与环境要求
| 项目 | 最低 | 生产建议 |
|---|---|---|
| CPU | 2 核 | 8 核+(ARM64 优先鲲鹏/飞腾) |
| 内存 | 4 GB | 32 GB+ |
| 磁盘 | 20 GB | 数据盘独立,容量≥数据量 2 倍 |
| 操作系统 | CentOS 7.6+ / 麒麟 V10 / Ubuntu 20.04+ / Windows 10+ | 与信创清单一致 |
| 端口 | 5432 | 主备集群需放通多端口 |
| 用户 | omm(自动创建) | 勿用 root 跑库 |
2.3 装前必做的环境准备(所有 Linux 通用)
bash # 1. 关闭防火墙(生产按需放行端口而非全关)
systemctl stop firewalld && systemctl disable firewalld
# 2. 关闭 SELinux(或改为 permissive)
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
setenforce 0
# 3. 关闭 swap(避免性能抖动)
swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab
# 4. 调整文件句柄与进程数
cat >> /etc/security/limits.conf <<'EOF'
omm soft nofile 1000000
omm hard nofile 1000000
omm soft nproc unlimited
omm hard nproc unlimited
EOF
# 5. 调整内核参数(共享内存等)
cat >> /etc/sysctl.conf <<'EOF'
kernel.sem = 250 32000 100 1000
kernel.shmmax = 8589934592
vm.dirty_background_ratio = 5
EOF
sysctl -p
# 6. 设置主机名解析(多机集群必须)
echo"192.168.1.10 og-primary" >> /etc/hosts
⚠️ openGauss 对环境比 PG 更"讲究":不关 SELinux、不调 limits,
gs_install大概率直接报错。装前先做完上面这套,比装完再排错快得多。

三、四种安装方式怎么选
| 平台 | 方式 | 难度 | 生产可用 | 说明 |
|---|---|---|---|---|
| CentOS / 麒麟 | 企业版 sh 包 gs_install | ★★★ | ✅ | 生产首选 |
| Ubuntu | 社区版二进制 / Docker | ★★★ | ⚠️ | 官方主推 CentOS,Ubuntu 用社区版 |
| Windows | zip 解压运行 / Docker | ★★ | ❌ | 仅开发测试 |
| 任意(含 Mac) | Docker(社区版) | ★ | ⚠️ | 最快上手,测试用 |
结论先行:生产 = CentOS/麒麟 + 企业版 sh 包;学习验证 = Docker 社区版秒起。
四、CentOS / 麒麟安装(企业版,生产标准流程)
以 openGauss 6.0、单节点为例。
4.1 获取安装包
到 openGauss 官网下载对应架构(x86_64 / aarch64)的企业版安装包,上传到服务器:
bash mkdir -p /opt/software/openGauss && cd /opt/software/openGauss
tar -zxvf openGauss-6.0.0-CentOS-64bit.tar.gz
ls# 应看到 script/、simpleInstall/ 等目录
4.2 预安装(root 执行)
bash cd /opt/software/openGauss/script
# 预安装:自动创建 omm 用户和 dbgrp 组、目录、环境变量
./gs_preinstall -U omm -G dbgrp -L /opt/software/openGauss
| 参数 | 含义 |
|---|---|
-U omm | 数据库操作系统用户(不能是 root) |
-G dbgrp | 用户组 |
-L | 安装目录 |
4.3 切换到 omm 用户执行安装
bash su - omm
# 单机安装(-L 指定数据目录,--gs-initdb 初始化)
gs_install -L /var/lib/opengauss/data \
--gs-initdb -X /opt/software/openGauss/cluster_config.xml \
--dbpass 'OpenGauss@2026'
4.4 cluster_config.xml(集群描述文件)
生产/集群必须写 XML 描述。单机最简示例:
xml <?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<CLUSTER>
<PARAMname="clusterName"value="ogdb"/>
<PARAMname="nodeNum"value="1"/>
<PARAMname="backIp1s"value="192.168.1.10"/>
<PARAMname="sshIp1s"value="192.168.1.10"/>
<PARAMname="gaussdbAppPath"value="/opt/huawei/install/app"/>
<PARAMname="gaussdbLogPath"value="/var/log/opengauss"/>
<PARAMname="gaussdbToolPath"value="/opt/huawei/install/om"/>
<PARAMname="corePath"value="/opt/huawei/corefile"/>
</CLUSTER>
<DEVICELIST>
<DEVICEsn="192.168.1.10">
<PARAMname="name"value="192.168.1.10"/>
<PARAMname="backIp1"value="192.168.1.10"/>
<PARAMname="sshIp1"value="192.168.1.10"/>
<PARAMname="dataNum"value="1"/>
<PARAMname="dataPortBase"value="5432"/>
<PARAMname="dataNode1"value="/var/lib/opengauss/data"/>
</DEVICE>
</DEVICELIST>
</ROOT>
主备集群:
nodeNum改 2+,DEVICELIST加备机<DEVICE>,并配dataNode1的备库路径。
4.5 启动与验证
bash # 状态与启动
gs_om -t status # 查看集群状态
gs_om -t start # 启动(未起时)
gs_om -t stop # 停止
# 设置开机自启(omm 用户 crontab)
crontab -e
# 加一行:@reboot gs_om -t start
# 连接验证
gsql -d postgres -p 5432 -r
sql -- 进入 gsql 后的体检
postgres=# SELECT version();
postgres=# SELECT*FROM dv_view; -- openGauss 版本视图
postgres=# \l -- 列数据库
五、Ubuntu 安装(社区版 / Docker 变通)
openGauss 官方对 Ubuntu 的支持弱于 CentOS,生产建议用 Docker 或社区版二进制,流程如下。
5.1 方式一:Docker(最简单)
bash # 拉取社区版镜像并启动(密码必须满足复杂度)
docker run -d --name og-ubuntu \
-p 5432:5432 \
-e GS_PASSWORD='OpenGauss@2026' \
-e NODE_NAME=node1 \
enmotech/opengauss:latest
# 进入容器连接
docker exec -it og-ubuntu gsql -d postgres -U gaussdb -W 'OpenGauss@2026' -p 5432
5.2 方式二:社区版二进制(无 root 依赖)
bash # 下载 openGauss 社区版 Ubuntu 包(官网选 ubuntu 架构)
tar -zxvf openGauss-community-6.0.0-Ubuntu.tar.gz
# 社区版用 simpleInstall 快速装(自动建 omm 需有 sudo 权限)
cd simpleInstall
./install.sh -w 'OpenGauss@2026'
# 安装完成后默认数据目录、端口 5432,omm 用户可直接 gsql
su - omm
gsql -d postgres -p 5432
Ubuntu 的坑:官方脚本默认按 CentOS 的路径和 systemd 假设来,
install.sh装完不一定自动注册 systemd 服务,需要手动把gs_om -t start加进开机项。生产上,Ubuntu 跑 openGauss 请先跑通完整故障切换测试再上。
六、Windows 安装(仅开发测试)
openGauss 对 Windows 的支持是"能跑"级别,不建议生产用。
6.1 zip 解压方式
- 官网下载 openGauss Windows zip 包(x86_64)
- 解压到如
C:\openGauss - 以管理员身份打开 CMD,进入解压目录:
bat cd C:\openGauss
:: 初始化(指定数据目录)
bin\initdb.exe -D C:\openGauss\data -U omm -W
:: 启动
bin\gaussdb.exe -D C:\openGauss\data
- 连接(另开一个窗口):
bat bin\gsql.exe -d postgres -p 5432 -U omm
6.2 Windows 上的限制
| 限制 | 说明 |
|---|---|
| 不支持部分高可用特性 | 流复制、MOT 等在 Windows 上受限 |
| 性能远低于 Linux | 仅适合开发联调、学习语法 |
| 路径/权限坑多 | 中文路径、空格路径易出错 |
想"在 Windows 上用 openGauss",更推荐 WSL2 + Docker 跑社区版,既省事又接近生产行为。
七、Docker 部署(跨平台最快上手,含 compose)
7.1 单容器
bash docker run -d --name opengauss \
-p 5432:5432 \
-e GS_PASSWORD='OpenGauss@2026' \
-v ogdata:/var/lib/opengauss \
enmotech/opengauss:latest
| 环境变量 | 说明 |
|---|---|
GS_PASSWORD | 初始密码(必须含大小写+数字+特殊字符,否则启动失败) |
NODE_NAME | 节点名 |
REPLCONNINFO | 配置流复制时使用 |
7.2 docker-compose 规范版
yaml services:
opengauss:
image:enmotech/opengauss:latest
container_name:og-prod
restart:always
environment:
GS_PASSWORD:"${OG_PASSWORD}"
TZ:Asia/Shanghai
ports:
-"5432:5432"
volumes:
-ogdata:/var/lib/opengauss
healthcheck:
test: ["CMD-SHELL", "gsql -d postgres -U gaussdb -W ${OG_PASSWORD} -c 'SELECT 1' || exit 1"]
interval:10s
timeout:5s
retries:5
volumes:
ogdata:
7.3 主备复制(Docker 快速验证)
bash # 备库启动并指向主库(示意,简化版)
docker run -d --name og-standby \
-p 5433:5432 \
-e GS_PASSWORD='OpenGauss@2026' \
-e REPLCONNINFO="localhost=og-primary localport=5432 ..." \
enmotech/opengauss:latest
Docker 主备仅适合演示流复制原理,生产主备请用裸机企业版 +
cluster_config.xml描述双节点。
八、装完必调的核心参数
openGauss 的参数体系源自 PG,但有自己的默认值和推荐值。编辑数据目录下 postgresql.conf(openGauss 沿用此文件名)。
| 参数 | 默认 | 建议 | 说明 |
|---|---|---|---|
listen_addresses | localhost | * 或内网 IP | 放开远程连接 |
port | 5432 | 5432 | 一般不改 |
max_connections | 200 | 按业务,100~500 | 连接数上限 |
shared_buffers | 32MB | 内存 1/4 | 缓冲池,必调 |
effective_cache_size | - | 内存 3/4 | 优化器估算用 |
work_mem | 64KB | 4~64MB | 排序/哈希内存 |
enable_mot | off | on(需 MOT 许可) | 内存优化引擎 |
password_encryption_type | 1 | 1(scram) | 密码加密方式 |
log_min_duration_statement | -1 | 1000 | 慢 SQL 阈值(毫秒) |
timezone | - | PRC 或 Asia/Shanghai | 业务时区 |
bash # omm 用户下修改并重启
vi /var/lib/opengauss/data/postgresql.conf
gs_om -t stop && gs_om -t start
MOT 内存引擎是 openGauss 相对 PG 的差异化能力:适合内存能放下、高并发的场景(如会话、热点表),但要开启
enable_mot=on并建USING mot的表。
九、访问控制与远程连接
9.1 pg_hba.conf(同 PG 思路)
bash vi /var/lib/opengauss/data/pg_hba.conf
conf # 本机
host all all 127.0.0.1/32 scram-sha-256
# 内网网段
host all all 192.168.1.0/24 scram-sha-256
改完用 gs_om -t reload 或重启生效。
9.2 建业务用户(别用 omm 连业务)
sql -- 建用户(openGauss 语法)
CREATEUSER appuser IDENTIFIED BY'AppPass@2026';
CREATE DATABASE mydb OWNER appuser;
GRANTALL PRIVILEGES ON DATABASE mydb TO appuser;
openGauss 密码默认强制复杂度策略(大小写+数字+特殊字符,长度≥8),弱密码会被拒,这是比 PG 多出来的一道关。
十、gsql 常用命令与安装体检
bash # 连接
gsql -d postgres -p 5432 -U omm -W
| 命令 | 作用 |
|---|---|
\l | 列数据库 |
\dt | 列表 |
\du | 列用户/角色 |
\dn | 列 schema |
\di | 列索引 |
\q | 退出 |
\? | 帮助 |
一套"装完必跑"体检 SQL:
sql SELECT version(); -- 版本
SELECT current_database(), current_user; -- 当前库与用户
SHOW listen_addresses; -- 监听配置
SHOW shared_buffers; -- 缓冲池
SELECT*FROM pg_stat_activity; -- 当前会话
SELECT*FROM dv_view; -- openGauss 版本信息
十一、常见问题排查表
| 症状 | 根因 | 解决 |
|---|---|---|
gs_install 报权限/用户错误 | 用了 root 跑安装 | 切到 omm 用户;检查 gs_preinstall 是否执行过 |
| 启动失败:端口被占 | 5432 已被别的库占 | 换端口或停占用进程:netstat -tnlp | grep 5432 |
| 密码不符合策略被拒 | 弱密码 | 用含大小写+数字+特殊字符、长度≥8 的密码 |
| 远程连不上 | listen_addresses/pg_hba.conf 未配 | 放开监听 + 加网段行 + 放行防火墙 |
| Docker 容器起不来 | GS_PASSWORD 不满足复杂度 | 改复杂密码后重建容器 |
Ubuntu install.sh 装完没服务 | 无 systemd 注册 | 手动加开机启动或用 Docker |
报 libnuma / 依赖缺失 | 缺依赖包 | yum install numactl / apt install libnuma1 |
gs_om -t status 连不上 | 环境变量未生效 | source ~/.bashrc 或 su - omm 重登 |
| 磁盘瞬间满 | WAL/日志增长 | 配置归档清理、检查 log 目录 |
bash # 万能排查起手式
gs_om -t status # 集群状态
su - omm -c "gsql -d postgres -c 'SELECT 1'"# 本地连通性
tail -f /var/log/opengauss/omm/ogdb/*.log# 看日志
十二、与 PostgreSQL / Oracle 迁移对照
| 习惯 | PostgreSQL | openGauss | Oracle |
|---|---|---|---|
| 初始化 | initdb | gs_install --gs-initdb | DBCA |
| 服务管理 | systemctl | gs_om -t start/stop | dbstart/dbshut |
| 超级用户 | postgres | omm / gaussdb | sys/system |
| 客户端 | psql | gsql | sqlplus |
| 分页 | LIMIT n OFFSET m | LIMIT / ROWNUM | ROWNUM |
| 字符串拼接 | || | || | || |
| NVL | COALESCE | NVL(Oracle 兼容) | NVL |
sql -- Oracle 习惯在 openGauss 里大多能用
SELECT NVL(comm, 0) FROM emp; -- NVL
SELECT seq_emp.NEXTVAL FROM dual; -- 序列 + dual
SELECT*FROM emp WHERE ROWNUM <=10; -- ROWNUM
openGauss 的 Oracle 兼容语法是迁移加分项:很多 Oracle 的
NVL/DECODE/ROWNUM/dual直接可用,配合dolphin插件(兼容 MySQL 语法)还能覆盖更多源库类型。
十三、上线安全清单
markdown □ 1. 修改默认密码,业务账号与管理员账号分离
□ 2. 业务程序使用独立用户,禁用 omm 直连
□ 3. pg_hba.conf 最小化放行(仅业务网段,scram-sha-256)
□ 4. 关闭 SELinux 后,防火墙只放行 5432(或多端口集群)
□ 5. 开启慢 SQL 日志(log_min_duration_statement)
□ 6. 配置归档与定期备份(gs_basebackup / gs_probackup)
□ 7. 主备集群写清 cluster_config.xml,做真实故障切换演练
□ 8. 时间同步:所有节点 NTP 一致
□ 9. 第一次连接成功 → 立即做一次全量备份留基线
□ 10. 接入监控:复制延迟、连接数、磁盘水位进告警平台
bash # 最简单的每日备份脚本(omm 用户 crontab)
0 2 * * * gs_basebackup -D /backup/og_$(date +%F) -p 5432
DBA 夜话:装 openGauss 这件事,技术上没有比装 Oracle 难,但心智模型要切换——你不再是"装一个数据库",而是在信创语境下"接一套国产体系":
omm用户、gs_om工具、cluster_config.xml、鲲鹏适配、国产操作系统兼容,每一样都在提醒你,国产数据库不是把 PG 换个壳,而是整套运维习惯的重建。所以给第一次装 openGauss 的同学三条忠告:装前把环境准备做到位(比装完排错省事十倍)、生产用企业版并写清 XML、装完立刻做备份和故障演练。愿你接手的每个国产库,都从第一天就留好了退路。夜话至此,5432 与 15400 都稳。















































































