目录
[openGauss 快速上手:CentOS 环境下单机部署完整指南](#openGauss 快速上手:CentOS 环境下单机部署完整指南)
[基础 SQL 测试](#基础 SQL 测试)
摘要
本文《openGauss 快速上手:CentOS 环境下单机部署完整指南》详细介绍了在 CentOS 7.6 系统上部署开源企业级关系型数据库 openGauss 的全过程。文章首先概述了 openGauss 的核心优势,包括高性能、高可用、高安全、易运维和全开放五大特性,并说明其采用木兰宽松许可证 v2,适合商业与开源场景。随后,文章逐步引导读者完成环境准备(如配置 yum 源、安装依赖、关闭 SELinux 和防火墙)、创建专用用户、下载安装包、编写 XML 配置文件、执行预安装与正式安装等关键步骤。最后,通过一系列 SQL 测试用例(如基础操作、事务控制、性能测试、JSONB 支持、全文检索及系统监控),验证数据库功能完整性与稳定性,帮助用户快速掌握 openGauss 的基本使用与验证方法。
openGauss
openGauss 是一款源自华为、专为企业级应用场景打造的高性能开源关系型数据库管理系统(Relational Database Management System, RDBMS)。该项目于 2020 年 6 月 30 日正式对外开源,致力于构建一个开放、协作、创新的数据库生态。

开源许可
openGauss 采用 木兰宽松许可证 v2(Mulan Permissive Software License, Version 2)。该许可证是开源软件许可协议,具有高度的兼容性和宽松性,允许用户自由地使用、修改、分发源代码,甚至可将其用于商业用途,而无需强制开源衍生作品。这一特性极大降低了企业采纳和二次开发的法律与合规门槛。
系统架构
openGauss 采用经典的 客户端/服务器(Client/Server)架构 ,并基于 单进程多线程(Multi-threaded)模型 进行设计,有效提升了并发处理能力和资源利用效率。
在部署模式上,openGauss 支持:
- 单机部署:适用于开发测试或轻量级生产环境;
- 一主多备(主备高可用)架构:通过同步/异步复制机制,保障数据的高可用性与灾难恢复能力,满足企业对业务连续性的严苛要求。

|---------------|------------------------------------------------------------------------------------------------------------------|
| 名称 | 描述 |
| OM | 运维管理模块(Operation Manager)。提供数据库日常运维、配置管理的管理接口、工具。 |
| CM | 数据库管理模块(Cluster Manager)。管理和监控数据库系统中各个功能单元和物理资源的运行情况,确保整个系统的稳定运行。 |
| 客户端驱动 | 客户端驱动(Client Driver)。负责接收来自应用的访问请求,并向应用返回执行结果。客户端驱动负责与openGauss实例通信,发送应用的SQL命令,接收openGauss实例的执行结果。 |
| openGauss(主备) | openGauss主备(Datanode)。负责存储业务数据、执行数据查询任务以及向客户端返回执行结果。 openGauss实例包含主、备两种类型,支持一主多备。建议将主、备openGauss实例分散部署在不同的物理节点中。 |
| Storage | 服务器的本地存储资源,持久化存储数据。 |
核心特性
openGauss 围绕企业级需求,聚焦五大核心能力:
|---------|----------------------------------------------------------------------|
| 特性维度 | 描述 |
| 高性能 | 通过多核并行计算、智能优化器、向量化执行引擎等技术,显著提升查询与事务处理性能,适用于高并发、大吞吐的 OLTP 场景。 |
| 高可用 | 支持主备切换、逻辑/物理复制、数据页修复等机制,RTO(恢复时间目标)可控制在秒级,保障业务不中断。 |
| 高安全 | 内置全栈安全体系,包括访问控制、数据加密(传输与存储)、审计日志、行级安全(RLS)、国密算法支持等,满足等保和金融级安全合规要求。 |
| 易运维 | 提供图形化管理工具、智能诊断、自动参数调优、慢SQL分析等功能,降低数据库运维复杂度,提升 DBA 效率。 |
| 全开放 | 源代码完全开放,支持标准 SQL,兼容主流生态工具,并鼓励社区参与共建。同时提供丰富的扩展接口(如扩展函数、插件机制),便于定制化开发。 |
凭借其强大的技术底座与开放的社区生态,openGauss 正逐步成为数据库领域的重要力量,广泛应用于金融、电信、政务、能源等多个关键行业。
核心特性详解
- 高性能:openGauss针对多核CPU和NUMA架构进行了深度优化,并融合了鲲鹏硬件优化,在两路鲲鹏下TPCC Benchmark性能可达150万tpmc。它还提供了智能的SQL-bypass快速引擎和融合引擎技术,并支持行存储、列存储以及内存存储引擎,以应对不同的业务场景。
- 高可用:它支持主备同步、异步和级联备机等多种部署模式,最多可支持一主八备。通过备机并行恢复技术,能在10秒内完成故障切换,提升为主机提供服务。数据页CRC校验以及损坏数据页通过备机自动修复的机制,进一步保障了数据可靠性。
- 高安全:openGauss提供全链路的安全防护,包括全密态计算、访问控制、加密认证、数据库审计和动态数据脱敏等安全特性,提供全方位端到端的数据安全保护。
- 易运维:内置的AI能力是其一大亮点,支持基于AI的智能参数调优和索引推荐。同时,它提供慢SQL诊断和多维性能自监控视图,帮助管理员实时掌控系统性能。
- 全开放:采用开放的开源协议,数据库内核能力全开放,并致力于构建活跃的开发者社区和合作伙伴生态。

环境配置
操作系统
这里我使用腾讯云服务器lighthous安装的CentOS7.6系统进行部署操作:

查看当前的版本
cat /etc/redhat-release

配置yum源
删除系统自带 yum 源,下载阿里云 yum 源,并且更新缓存
rm -rf /etc/yum.repos.d/*
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache


安装基础依赖
yum install ‐y libaio‐devel flex bison ncurses‐devel glibc.devel patch lsb_release
yum install ‐y openssl* python3

安全设置
关闭 SELINUX 和 Firewall
setenforce 0
systemctl disable firewalld.service
systemctl stop firewalld.service
swapoff -a

修改主机名
echo "node1" > /etc/hostname
echo "124.222.230.153 node1" >>/etc/hosts

安装部署
下载openGauss安装包
下载 openGauss 安装包及创建用户组和目录
groupadd dbgrp
useradd -g dbgrp -d /home/omm -m -s /bin/bash omm
echo "omm" | passwd -‐stdin omm
mkdir -p /opt/software/openGauss
chmod 755 -R /opt/software
chown -R omm:dbgrp /opt/software/openGauss

安装并解压openGauss
cd /opt/software/openGauss/
wget https://openGauss.obs.cn-south-1.myhuaweicloud.com/2.0.0/x86/openGauss-2.0.0-CentOS-64bit-all.tar.gz
tar -zxvf openGauss-2.0.0-CentOS-64bit-all.tar.gz
tar -zxvf openGauss-2.0.0-CentOS-64bit-om.tar.gz


xml配置文件
配置xml配置文件
vim cluster_config_template.xml
修改配置文件具体如下,配置文件中要注意配置一下几个参数:nodeNAMES、backips
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<!-- openGauss 整体信息 -->
<CLUSTER>
<!-- 数据库名称 -->
<PARAM name="clusterName" value="singlenode" />
<!-- 数据库节点名称 (hostname) -->
<PARAM name="nodeNames" value="node1" />
<!-- 数据库安装目录 -->
<PARAM name="gaussdbAppPath" value="/opt/huawei/install/app" />
<!-- 日志目录 -->
<PARAM name="gaussdbLogPath" value="/opt/huawei/log" />
<!-- 临时文件目录 -->
<PARAM name="tmpMppdbPath" value="/opt/huawei/tmp" />
<!-- 数据库工具目录 -->
<PARAM name="gaussdbToolPath" value="/opt/huawei/install/om" />
<!-- 数据库 core 文件目录 -->
<PARAM name="corePath" value="/opt/huawei/corefile" />
<!-- 集群类型:single-inst 表示单机部署 -->
<PARAM name="clusterType" value="single-inst" />
<!-- 节点 IP 列表(与 nodeNames 一一对应) -->
<PARAM name="backIp1s" value="***.***.***.***" />
</CLUSTER>
<!-- 每台服务器上的节点部署信息 -->
<DEVICELIST>
<!-- 节点1 的部署信息 -->
<DEVICE sn="1000001">
<!-- 主机名 -->
<PARAM name="name" value="node1" />
<!-- 所属可用区(AZ)及优先级 -->
<PARAM name="azName" value="AZ1" />
<PARAM name="azPriority" value="1" />
<!-- 网络配置:若仅一个网卡,backIp1 与 sshIp1 可设为相同 -->
<PARAM name="backIp1" value="***.***.***.***" />
<PARAM name="sshIp1" value="***.***.***.***" />
<!-- 数据节点配置 -->
<PARAM name="dataNum" value="1" />
<PARAM name="dataPortBase" value="26000" />
<PARAM name="dataNode1" value="/opt/huawei/install/data/db1" />
<PARAM name="dataNode1_syncNum" value="0" />
</DEVICE>
</DEVICELIST>
</ROOT>
添加lib库
vim .bashrc在这个文件中加入下方的lib库
export GPHOME=/opt/huawei/install/om
export PATH=$GPHOME/script/gspylib/pssh/bin:$GPHOME/script:$PATH
export LD_LIBRARY_PATH=$GPHOME/lib:$LD_LIBRARY_PATH
export PYTHONPATH=$GPHOME/lib
export GAUSSHOME=/opt/huawei/install/app
export PATH=$GAUSSHOME/bin:$PATH
export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH
export S3_CLIENT_CRT_FILE=$GAUSSHOME/lib/client.crt
export GAUSS_VERSION=2.0.0
export PGHOST=/opt/huawei/tmp
export GAUSSLOG=/opt/huawei/log/omm
umask 077
export GAUSS_ENV=2
export GS_CLUSTER_NAME=singlenode
初始化
使用Python进行预安装
cd /opt/software/openGauss/script
python3 gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/cluster_config_template.xml

安装
在进入 script 目录后,进行正式安装的命令
# 查看当前权限
ls -l /opt/software/openGauss/script/gs_install
# 添加执行权限(所有用户)
chmod +x /opt/software/openGauss/script/gs_install
# 验证
ls -l /opt/software/openGauss/script/gs_install
# 应该显示:-rwxr-xr-x 1 root root ... gs_install
# 设置目录权限(确保 omm 可读可执行)
chmod -R 755 /opt/software/openGauss/script/
chown -R omm:dbgrp /opt/software/openGauss/script/
su omm
cd /opt/software/openGauss/script/
/opt/software/openGauss/script/gs_install -X /opt/software/openGauss/cluster_config_template.xml

要验证 openGauss 数据库是否安装成功,首先需要确认数据库服务已经正常启动。在此基础上,可以通过本地连接命令 gsql -d postgres -p 26000 进行测试,其中 -d postgres 表示连接默认的初始数据库 postgres,而 -p 参数用于指定数据库监听的端口号。该端口号并非固定值,而是来源于安装时所用的集群配置文件(例如 cluster_config_template.xml)中 <PARAM name="dataPortBase" value="26000" /> 所定义的 dataPortBase 值;在单节点部署场景下,通常直接使用该基础端口进行连接。若执行该命令后成功进入 gsql 交互式命令行界面(提示符如 postgres=#),说明客户端能够正常与数据库实例通信,数据库进程运行稳定,权限、环境变量(如 PGHOST)及网络(或 Unix 域套接字)配置均正确无误,至此可判定数据库安装与初始化已顺利完成,系统具备基本可用性。
# 作为 omm 用户
su - omm
# 检查环境变量
echo $PATH
echo $GAUSSHOME
# 检查 gsql 是否可用
which gsql
gsql --version
# 连接数据库
gsql -d postgres -p 26000

测试使用
基础 SQL 测试
查看系统信息
-- 查看数据库版本
SELECT version();
-- 查看当前用户
SELECT current_user;
-- 查看数据库列表
\l
-- 查看表空间
SELECT * FROM pg_tablespace;

创建测试表
-- 创建测试表
CREATE TABLE test_users (
id SERIAL PRIMARY KEY,
name VARCHAR(50) NOT NULL,
email VARCHAR(100),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
is_active BOOLEAN DEFAULT true
);
-- 创建索引
CREATE INDEX idx_test_users_name ON test_users(name);

插入测试数据
-- 插入单条数据
INSERT INTO test_users (name, email) VALUES ('张三', 'zhangsan@example.com');
-- 插入多条数据
INSERT INTO test_users (name, email, is_active) VALUES
('李四', 'lisi@example.com', true),
('王五', 'wangwu@example.com', false),
('赵六', 'zhaoliu@example.com', true);

查询测试
-- 基本查询
SELECT * FROM test_users;
-- 条件查询
SELECT * FROM test_users WHERE is_active = true;
-- 聚合查询
SELECT COUNT(*) as total_users,
COUNT(CASE WHEN is_active = true THEN 1 END) as active_users
FROM test_users;
-- 分组查询
SELECT is_active, COUNT(*) as count
FROM test_users
GROUP BY is_active;

更新和删除
-- 更新数据
UPDATE test_users SET email = 'zhangsan_new@example.com' WHERE name = '张三';
-- 删除数据
DELETE FROM test_users WHERE name = '王五';

事务测试
-- 开启事务
BEGIN;
-- 插入测试数据
INSERT INTO test_users (name, email) VALUES ('测试用户', 'test@example.com');
-- 回滚事务
ROLLBACK;
-- 验证回滚
SELECT * FROM test_users WHERE name = '测试用户';

性能测试语句
批量插入测试
-- 创建大表测试
CREATE TABLE test_large_data (
id BIGSERIAL PRIMARY KEY,
random_value FLOAT,
created_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 批量插入 10000 条数据
INSERT INTO test_large_data (random_value)
SELECT random() FROM generate_series(1, 10000);

查询性能测试
-- 简单查询性能
EXPLAIN ANALYZE SELECT * FROM test_large_data WHERE random_value > 0.5 LIMIT 100;
-- 聚合查询性能
EXPLAIN ANALYZE SELECT COUNT(*), AVG(random_value) FROM test_large_data;

结尾
通过本指南,读者不仅能够顺利完成 openGauss 在 CentOS 环境下的单机部署,还能通过系统化的功能与性能测试,全面验证数据库的可用性与健壮性。openGauss 凭借其企业级特性、开放的生态软硬件的良好适配,正成为金融、政务、电信等关键行业数据库选型的重要选项。希望本文能为初次接触 openGauss 的开发者和 DBA 提供清晰、实用的入门路径,为进一步深入使用和二次开发奠定坚实基础。随着社区生态的持续壮大,openGauss 有望在未来的数据库技术格局中扮演更加重要的角色。