OpenGauss数据库初探记录
一、文档说明
- 适用场景:openGauss 单机版安装(simpleInstall 脚本部署)
- 部署环境:openEuler 其他Linux基本通用
- 核心目标:以
postgres为主要数据库用户,完成安装、核心配置(含密码加密、远程连接)、PG 兼容模式配置、连接验证、网站安装。 - 内容还包括:
gs_ctl query命令解读、password_encryption_type密码加密配置、postgresql.conf/pg_hba.conf详细修改说明 - 仅记录了部分内容,其他内容可参考官方文档。
- 参考1,官方文档;
- 参考2,官方文档,单节点安装
- 参考3,魏总的学习总结;
- 问AI。
二、部署流程(完整步骤)
(一)环境准备(root 用户执行)
1.1 创建系统用户与组
(openGauss 要求以 omm 系统用户安装)
1 | ### 创建用户组 |
1.2 配置系统资源限制(解决 ulimit 警告)
1 | ### 配置系统资源限制(避免后续运行异常) |
?为什么修改成这样能正常安装?
openGauss 在初始化和启动阶段需要消耗大量系统资源,之前的设置虽 “够用” 但未达其底层依赖(如 jemalloc、线程池)的要求,具体原因如下:
1、nofile(最大打开文件数):openGauss 的 “文件密集型” 特性
openGauss 在初始化时会创建大量数据文件、日志文件、套接字文件等:
- 单机部署需同时打开数百个数据块文件、WAL 日志文件、临时文件;
- 若
nofile仅设为65535,极端情况下(如初始化大量系统表、索引)可能触达上限,导致文件创建失败; - 提升至
1024000后,预留了足够的文件句柄配额,避免 “Too many open files” 错误,确保初始化全流程无阻塞。
2、 nproc(最大进程 / 线程数):解决 jemalloc 线程创建失败的核心
之前的错误<jemalloc>: arena 0 background thread creation failed (11),本质是系统线程数配额不足:
- jemalloc(openGauss 的内存分配器)需要创建多个 arena 后台线程管理内存池,若
nproc限制为65535,可能因系统其他进程占用 + 数据库初始化线程叠加,导致线程创建被系统拒绝(错误码 11=EAGAIN,资源不足); - 提升至
1024000后,线程配额远超实际需求(单机部署仅需数十个核心线程),彻底消除线程创建的资源瓶颈。
3、 stack unlimited(栈空间无限制):避免进程栈溢出
openGauss 的后台进程(如 walwriter、checkpointer)在初始化时需要较大的栈空间:
- 若栈空间设为默认有限值(如 8MB),复杂操作(如系统表初始化、权限校验)可能触发栈溢出,导致进程异常退出;
- 设置为
unlimited后,进程可按需使用栈空间,避免因栈不足导致的启动失败。
4、openGauss 对系统资源限制的底层需求
openGauss 基于 PostgreSQL 深度优化,但增强了内存管理、并行计算等能力,对系统资源的需求远高于传统数据库:
- 文件句柄:需支持海量小文件(数据块、索引块)的并发访问;
- 线程数:多线程架构(如每个连接对应一个工作线程)+ 后台服务线程(内存管理、日志刷盘)需要充足配额;
- 栈空间:复杂 SQL 解析、事务处理需较大栈空间支撑。
之前的设置(如65535)虽满足常规应用,但未覆盖 openGauss 初始化阶段的 “峰值资源需求”,而更大的数值(1024000)和unlimited栈空间则为其提供了充足的资源冗余。
(二) 清理旧环境(若需重新安装,root 用户执行)
说明:
- gs_uninstall 是 openGauss 集群部署(如 MPP 架构、主备集群) 的专属卸载工具。
- 通过 simpleInstall 脚本部署的是单机版 openGauss,单机部署的 bin 目录中不会包含集群管理工具(如 gs_uninstall、gs_om 等)。
- 因为经历了很多次删除重装,所以又整理了一次。清理或重装的部分内容如下。
1 | ### 停止旧集群(若运行中) |
(三)安装 openGauss(omm 系统用户执行)
3.1 环境变量对照设置
1 | ### 修改 |
3.2 解压安装包
1 |
|
说明:
• -w:初始化数据库密码(gs_initdb指定),因安全需要,此项必须设置。
• -p:指定openGauss端口号,如不指定,默认为5432。
• 安装后,数据库目录安装路径/opt/software/openGauss/data/single_node,其中/opt/software/openGauss为解压包路径,data/single_node为新创建的数据库节点目录。
• 安装完成后,默认生成名称为postgres的数据库。第一次连接数据库时可以连接到此数据库。
3.3 查看状态命令和说明
| 功能 | 命令(含 -Z single_node) |
|---|---|
| 启动集群 | gs_ctl start -D /opt/software/openGauss/data/single_node -Z single_node |
| 停止集群 | gs_ctl stop -D /opt/software/openGauss/data/single_node -Z single_node -m fast |
| 重启集群 | gs_ctl restart -D /opt/software/openGauss/data/single_node -Z single_node |
| 查看集群状态 | gs_ctl query -D /opt/software/openGauss/data/single_node -Z single_node |
| 重载配置 | gs_ctl reload -D /opt/software/openGauss/data/single_node -Z single_node |
3.4 gs_ctl query命令查询 openGauss 单机实例状态的结果
这个输出是gs_ctl query命令查询 openGauss 单机实例状态的结果,表明数据库集群(单机模式)处于正常可用状态,各字段含义及场景说明如下:
1 | [2025-11-27 13:11:06.098][8686][][gs_ctl]: gs_ctl query ,datadir is /opt/software/openGauss/data/single_node |
1、核心字段解析
| 字段 | 内容 | 含义说明 |
|---|---|---|
| local_role: Normal | 本地节点角色为 “Normal” | 单机部署场景下,节点无主备角色区分,此状态表示节点为 “普通独立节点”;若为主备集群,主节点会显示Primary,备节点显示Standby |
| static_connections: 0 | 静态复制连接数为 0 | 静态复制连接用于主备节点间的同步,单机部署无主备架构,因此该值为 0(正常现象) |
| db_state: Normal | 数据库实例状态为 “Normal” | 数据库核心进程(gaussdb)正常运行,可提供读写服务,无故障、无异常挂起 |
| detail_information: Normal | 详细状态信息为 “Normal” | 数据库底层资源(内存、锁、事务)均正常,无潜在错误或告警 |
| Senders info: No information | 无发送端信息 | 发送端(Sender)是主备集群中主节点向备节点同步数据的进程,单机无主备,因此无此信息 |
| Receiver info: No information | 无接收端信息 | 接收端(Receiver)是备节点接收主节点数据的进程,单机无备节点,因此无此信息 |
2、场景解读(单机部署)
openGauss 的gs_ctl query命令原本用于主备集群状态查询,因此输出中保留了 HA(高可用)相关字段(如 Senders/Receiver)。但在单机部署场景下:
- HA 相关字段(Senders/Receiver)无信息属于正常现象,无需关注;
- 核心关注
db_state: Normal和local_role: Normal,这两个字段表明:
- 数据库实例已成功启动;
- 无进程崩溃、资源耗尽等异常;
- 可正常接收客户端连接并提供数据服务。
(四)核心初始化配置
关键步骤:以 postgres 为主要数据库用户)
4.1 创建并授权 postgres 数据库用户
openGauss 安装后默认仅创建 omm 超级数据库用户,需手动创建 postgres 数据库用户并授予管理员权限:
1 | ### 本地免密登录(omm 数据库用户,系统用户 omm 执行) |
4.2 修改 postgresql.conf(核心配置文件,突出关键修改)
postgresql.conf 是数据库核心配置文件,需修改2个关键参数:
- listen_addresses(远程连接)
- password_encryption_type (密码加密方式)
1 | ### 编辑配置文件(omm 系统用户执行,因目录权限归属 omm) |
关键修改项 1:允许远程连接(listen_addresses)
默认值:localhost(仅允许本地连接)
修改后:listen_addresses = '*'(允许所有 IP 连接)
目的:支持外部机器通过 TCP/IP 连接数据库
关键修改项 2:配置密码加密方式(password_encryption_type)
默认值:2(仅支持 scram-sha-256 加密,部分客户端不兼容)
修改后:password_encryption_type = 0(支持 md5 加密,兼容性更强,for PG)
目的:解决部分客户端(如老版本 Navicat、JDBC 驱动)无法连接的问题
取值说明:
- 0:仅支持 md5
- 1:同时支持 md5 和 scram-sha-256
- 2:仅支持 scram-sha-256(默认)
1 | ### 重载配置(无需重启数据库,修改立即生效) |
4.3 修改 pg_hba.conf
认证规则配置,突出安全与兼容性。pg_hba.conf 控制客户端访问认证规则,决定 “哪些客户端能以何种方式连接数据库”,需优化规则确保安全且易用。
1 | ### 编辑认证配置文件(omm 系统用户执行) |
最终优化配置(保留核心规则,删除冗余)
1 | ### 规则 1:本地 Unix 套接字连接(仅本地服务器访问) |
规则逐行解读
| 规则类型 | 数据库 | 用户 | 客户端 IP | 认证方式 | 目的 |
|---|---|---|---|---|---|
local |
all |
all |
本地套接字 | trust |
服务器本地访问免密(方便运维) |
host |
replication |
omm |
::1/128 |
trust |
IPv6 本地复制免密(单机无用,保留兼容) |
host |
all |
all |
::1/128 |
trust |
IPv6 本地访问免密 |
host |
all |
all |
0.0.0.0/0 |
md5 |
所有 IPv4 客户端需密码认证(远程连接核心) |
配置生效(必须重载,否则规则不生效)
1 | gs_ctl reload -D /opt/software/openGauss/data/single_node -Z single_node |
4.4 重置MD5密码
1 | ### 用 postgres 数据库用户连接,由于创建时候不是PG |
三、创建 PG 兼容模式数据库
1 | ### 创建数据库(正确参数 DBCOMPATIBILITY,指定 PG 兼容) |
1、本地连接(服务器本地,免密)
1 | ### 本地 Unix 套接字连接(无需 -h 参数,trust 认证免密) |
2、远程连接(外部机器,密码认证)
1 | ### 格式:gsql -h 数据库服务器IP -p 端口 -U 用户名 -d 数据库名 -W 密码 |
3、navicat 链接
登录正常
四、网站系统安装测试
1、(可选)修改文件 systemsettings.json ,使得网站可以重新进入安装流程;
1 | { |
2、(前提)权限等配置正常;
3、进行网站安装(截图),需要使用上面创建的数据库 sgp1127 ;
4、安装成功,过程略。

