Ubuntu系统使用Docker安装openGauss数据库完整教程

 

一、前言

openGauss是华为公司开源的企业级关系型数据库,采用木兰宽松许可证v2发行。该数据库具有高性能、高安全、高可靠的特点,支持多核架构优化、AI智能调优等先进功能。本教程将详细介绍如何在Ubuntu系统上通过Docker容器化方式快速部署openGauss数据库。

  1. 多种存储模式支持复合业务场景,新引入提供原地更新存储引擎。
  2. NUMA化数据结构支持高性能。
  3. Paxos一致性日志复制协议,主备模式,CRC校验支持高可用。
  4. 支持全密态计算、账本数据库等安全特性,提供全方位端到端的数据安全保护。
  5. 通过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:阿里云镜像源(推荐,需登录阿里云获取专属地址)
  1. 打开阿里云容器镜像服务:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
  2. 登录后,复制你的 专属镜像加速地址(格式类似 https://xxxx.mirror.aliyuncs.com);
  3. 替换下面配置中的 <你的阿里云加速地址>

    {

      "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

  1. 若输出中能看到 Registry Mirrors: 列表,且包含你配置的镜像源,说明生效;
  2. 再次执行搜索命令,应该能正常返回结果:如果返回不了也不重要,直接拉取

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'

十、总结

通过本教程,您已经完成了以下内容:

    1. 安装和配置Docker环境
    2. 部署openGauss数据库容器
    3. 掌握基本的数据库操作命令
    4. 配置远程连接访问
    5. 了解常见问题的解决方案

openGauss作为一款企业级开源数据库,具有优异的性能和丰富的功能。通过Docker容器化部署方式,大大简化了安装和管理流程,非常适合开发、测试和学习使用。

后续学习方向:

•深入学习SQL语法和高级特性

•研究openGauss的高可用架构

•探索AI调优和智能运维功能

•实践数据备份和恢复策略

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会洗碗的CV工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值