一、前言
openGauss是华为公司开源的企业级关系型数据库,采用木兰宽松许可证v2发行。该数据库具有高性能、高安全、高可靠的特点,支持多核架构优化、AI智能调优等先进功能。本教程将详细介绍如何在Ubuntu系统上通过Docker容器化方式快速部署openGauss数据库。
- 多种存储模式支持复合业务场景,新引入提供原地更新存储引擎。
- NUMA化数据结构支持高性能。
- Paxos一致性日志复制协议,主备模式,CRC校验支持高可用。
- 支持全密态计算、账本数据库等安全特性,提供全方位端到端的数据安全保护。
- 通过Table Access Method接口层支持多存储引擎。

教程特点:
•步骤详尽,适合数据库初学者
•采用Docker方式安装,简单快捷
•包含完整的配置和测试步骤
•提供远程连接和常见问题解决方案
二、系统要求与准备
2.1 硬件要求
|
硬件项目 |
最低要求 |
|
CPU |
2核心及以上(推荐4核心) |
|
内存 |
4GB及以上(推荐8GB) |
|
硬盘 |
至少20GB可用空间 |
2.2 软件环境
|
软件组件 |
版本要求 |
|
操作系统 |
Ubuntu 20.04 LTS / 22.04 LTS |
|
Docker |
Docker Engine 20.10及以上版本 |
|
网络 |
稳定的互联网连接 |
复制下面命令即可查询:
echo "===== Ubuntu 系统关键信息 =====" && \
echo -n "系统版本:" && cat /etc/os-release | grep PRETTY_NAME | cut -d'"' -f2 && \
echo -n "CPU 物理核心数:" && cat /proc/cpuinfo | grep "cpu cores" | head -n1 | awk '{print $4}' && \
echo -n "CPU 逻辑核心数:" && cat /proc/cpuinfo | grep "processor" | wc -l && \
echo -n "总内存(GB,精确计算):" && awk '/MemTotal/ {print $2/1024/1024 " GB"}' /proc/meminfo && \
echo -n "根目录 / 可用空间(GB/Gi):" && df -h / | awk '/\// {print $4}' && \
echo "==========================================="

三、Docker环境安装
Docker是一个开源的容器化平台,可以让我们轻松部署和管理openGauss数据库。如果您的系统已安装Docker,可跳过此步骤。
3.1 更新系统软件包
首先更新系统软件包列表,确保安装最新版本的软件:
sudo apt update && sudo apt upgrade -y

3.2 安装Docker
使用官方脚本一键安装Docker(推荐使用阿里云镜像加速):
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
执行过程说明:
•脚本会自动检测系统版本
•添加Docker官方GPG密钥
•配置Docker软件源
•自动安装Docker Engine
3.3 验证Docker安装
检查Docker版本,确认安装成功:
docker --version

预期输出示例:
Docker version x.x.x, build xxxxx
3.4 启动Docker服务
这里我已经设置了开机自启动的了,大家也可以按照下面命令自行设置:
启动Docker并设置开机自启:
sudo systemctl start docker
sudo systemctl enable docker
查看Docker服务状态:
sudo systemctl status docker

四、openGauss数据库部署
4.1 搜索openGauss镜像
在Docker Hub中搜索可用的openGauss镜像:
docker search opengauss
这里直接使用docker可能出现连不上,可以配置国内镜像源进行搜索和拉取:
国内用户访问 Docker 官方仓库经常超时,配置国内镜像源(如阿里云、华为云)可直接解决问题:
1. 编辑 Docker 配置文件
# 创建/编辑 Docker daemon.json 配置文件
sudo vim /etc/docker/daemon.json
2. 粘贴国内镜像源配置(选一个即可)
选项 A:阿里云镜像源(推荐,需登录阿里云获取专属地址)
- 打开阿里云容器镜像服务:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
- 登录后,复制你的 专属镜像加速地址(格式类似 https://xxxx.mirror.aliyuncs.com);
- 替换下面配置中的 <你的阿里云加速地址>:
{
"registry-mirrors": ["<你的阿里云加速地址>"]
}
选项 B:公共镜像源(无需登录,直接用)
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn", // 中科大镜像
"https://hub-mirror.c.163.com", // 网易镜像
"https://mirror.baidubce.com" // 百度镜像
]
}
3. 重启 Docker 服务生效
# 重新加载 Docker 配置
sudo systemctl daemon-reload
# 重启 Docker 服务
sudo systemctl restart docker
4. 验证配置是否生效
sudo docker info

- 若输出中能看到 Registry Mirrors: 列表,且包含你配置的镜像源,说明生效;
- 再次执行搜索命令,应该能正常返回结果:如果返回不了也不重要,直接拉取
sudo docker search opengauss
推荐镜像:
•enmotech/opengauss - 社区版本,功能完整
•opengauss/opengauss - 官方轻量版
4.2 拉取openGauss镜像
本教程使用具体版本(推荐),拉取稳定的5.0.0镜像:
docker pull enmotech/opengauss:5.0.0
注意:镜像大小约700MB,下载时间取决于网络速度,请耐心等待。

4.3 创建数据存储目录
为了数据持久化,创建本地存储目录:
mkdir -p /home/docker/opengauss
4.4 启动openGauss容器
使用以下命令创建并启动openGauss容器(完整参数版):
sudo docker run --name opengauss \
-p 5432:5432 \
-v /home/docker/opengauss:/opt/opengauss/data \
-e GS_PASSWORD=Gauss@2025 \
--privileged=true \
-d enmotech/opengauss:5.0.0
参数详解:
|
参数 |
说明 |
|
--name |
容器名称,设置为opengauss |
|
-p 5432:5432 |
端口映射,将容器5432端口映射到主机5432端口 |
|
-v |
数据卷挂载,实现数据持久化 |
|
GS_PASSWORD |
数据库密码,必须包含大小写字母、数字和特殊字符 |
|
--privileged |
给予容器特权模式,确保数据库正常运行 |
|
--restart |
设置容器随系统自动重启 |
|
-d |
后台运行模式 |
⚠️ 重要提示:密码必须至少8位,且包含大写字母、小写字母、数字和特殊字符,否则容器启动失败!

4.5 验证容器状态
等待3-5分钟让数据库初始化完成,然后查看容器运行状态:
sudo docker ps
正常输出示例:
如果STATUS显示Up,说明容器运行正常。

五、连接openGauss数据库
5.1 进入容器
使用以下命令进入openGauss容器:
sudo docker exec -it opengauss bash
5.2 切换用户
在容器内新增并切换到omm用户(openGauss专用管理用户):
su - omm

5.3 连接数据库
使用gsql工具连接到postgres默认数据库:
gsql -d postgres -p 5432
成功连接后会显示类似:

5.4 基本数据库操作
以下是一些常用的gsql命令:
|
命令 |
功能说明 |
|
\l |
查看所有数据库 |
|
\du |
查看所有用户 |
|
\c dbname |
切换到指定数据库 |
|
\dt |
查看当前数据库所有表 |
|
\q |
退出gsql |
六、数据库操作测试示例
通过实际的SQL操作来验证数据库功能是否正常。以下示例将创建数据库、表,并进行增删改查操作。
6.1 创建测试数据库
CREATE DATABASE testdb;
\c testdb

6.2 创建测试表
CREATE TABLE employees (
id SERIAL PRIMARY KEY,
name VARCHAR(50),
age INT,
department VARCHAR(50)
);

6.3 插入测试数据
INSERT INTO employees (name, age, department) VALUES
('张三', 28, '技术部'),
('李四', 32, '市场部'),
('王五', 25, '人力资源部');
6.4 查询数据
SELECT * FROM employees;
预期输出:

七、配置远程连接
默认情况下,openGauss只允许本地连接。要实现远程访问,需要修改配置文件。如果容器内有vim命令则可以如下:
7.1 进入数据目录
在容器内以omm用户身份进入数据目录:
cd /var/lib/opengauss/data
7.2 修改postgresql.conf
编辑postgresql.conf文件,设置监听地址:
vi postgresql.conf
找到listen_addresses参数,修改为:
listen_addresses = '0.0.0.0'
7.3 修改pg_hba.conf
编辑pg_hba.conf文件,配置访问权限:
vi pg_hba.conf
在文件末尾添加以下规则:
host all all 0.0.0.0/0 sha256
⚠️ 安全提示:0.0.0.0/0表示允许任意IP访问,生产环境建议指定具体IP段我容器无vim命令,我是直接复制到外面,修改完之后再复制到容器内的

7.4 重启数据库
使配置生效,重启数据库服务:
gs_ctl restart -D /var/lib/opengauss/data
或者重启整个Docker容器:
sudo docker restart opengauss
注意:这里我们不能直接使用远程连接去连接超管用户omm,只能新建一个用户,例如:

建完之后我们去使用navicat工具连接即可:

八、常见问题与解决方案
8.1 容器启动失败
问题现象:docker ps查看容器不存在或STATUS为Exited
可能原因:
1.密码不符合复杂度要求
2.端口5432被占用
3.数据目录权限问题
解决方法:
# 查看容器日志
sudo docker logs opengauss
# 检查端口占用
sudo netstat -tunlp | grep 5432
8.2 无法远程连接
问题现象:客户端工具无法连接到数据库
检查清单:
•确认防火墙已开放5432端口
•检查postgresql.conf中listen_addresses配置
•检查pg_hba.conf中是否添加了访问规则
•确认Docker容器端口映射正确
8.3 找不到readline.so.7库
问题现象:启动时报错缺少libreadline.so.7
解决方法:
sudo apt install libreadline-dev
sudo ln -s /usr/lib/x86_64-linux-gnu/libreadline.so.8 \
/usr/lib/x86_64-linux-gnu/libreadline.so.7
8.4 数据持久化问题
问题现象:删除容器后数据丢失
原因分析:未正确挂载数据卷
解决方法:确保启动容器时使用-v参数挂载本地目录
九、性能优化建议
9.1 内存配置
根据服务器内存大小,调整shared_buffers参数:
# 编辑postgresql.conf
shared_buffers = 256MB # 推荐设置为总内存的25%
9.2 连接数配置
max_connections = 200 # 根据实际并发需求调整
9.3 日志配置
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
十、总结
通过本教程,您已经完成了以下内容:
-
- 安装和配置Docker环境
- 部署openGauss数据库容器
- 掌握基本的数据库操作命令
- 配置远程连接访问
- 了解常见问题的解决方案
openGauss作为一款企业级开源数据库,具有优异的性能和丰富的功能。通过Docker容器化部署方式,大大简化了安装和管理流程,非常适合开发、测试和学习使用。

后续学习方向:
•深入学习SQL语法和高级特性
•研究openGauss的高可用架构
•探索AI调优和智能运维功能
•实践数据备份和恢复策略
639

被折叠的 条评论
为什么被折叠?



