openGauss 快速上手:CentOS 环境下单机部署完整指南

目录

[openGauss 快速上手:CentOS 环境下单机部署完整指南](#openGauss 快速上手:CentOS 环境下单机部署完整指南)

摘要

openGauss

开源许可

系统架构

核心特性

核心特性详解

环境配置

操作系统

配置yum源

安装基础依赖

安全设置

安装部署

下载openGauss安装包

xml配置文件

添加lib库

初始化

安装

测试使用

[基础 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 有望在未来的数据库技术格局中扮演更加重要的角色。

相关推荐
yifengyiyufjq1 小时前
基于 CentOS 7 的 HAProxy 负载均衡搭建指南
centos·负载均衡
u***42071 小时前
Ubuntu介绍、与centos的区别、基于VMware安装Ubuntu Server 22.04、配置远程连接、安装jdk+Tomcat
java·ubuntu·centos
哈里谢顿6 小时前
使用kvm创建一台虚拟机
linux
大喵桑丶6 小时前
中间件快速部署(Nginx,Keepalived)
运维·nginx·中间件
hanyi_qwe7 小时前
文本三剑客--awk
linux·运维·服务器
Caven778 小时前
【Linux 技巧】如何在登录时自动激活 Conda Base 环境
linux·运维·conda
凌寒118 小时前
Linux(Debian)安装、卸载 MySQL
linux·运维·mysql·debian
云飞云共享云桌面8 小时前
如何降低非标自动化工厂的研发软件采购成本
运维·服务器·网络·数据库·性能优化·自动化
七七墨染8 小时前
DotMemory系列:5. 如何实现自动化抓取和应用自托管
运维·c#·自动化