一、前言

openGauss是華為公司開源的企業級關係型數據庫,採用木蘭寬鬆許可證v2發行。該數據庫具有高性能、高安全、高可靠的特點,支持多核架構優化、AI智能調優等先進功能。本教程將詳細介紹如何在Ubuntu系統上通過Docker容器化方式快速部署openGauss數據庫。

  • 多種存儲模式支持複合業務場景,新引入提供原地更新存儲引擎。
  • NUMA化數據結構支持高性能。
  • Paxos一致性日誌複製協議,主備模式,CRC校驗支持高可用。
  • 支持全密態計算、賬本數據庫等安全特性,提供全方位端到端的數據安全保護。
  • 通過Table Access Method接口層支持多存儲引擎。


Ubuntu系統使用Docker安裝openGauss數據庫完整教程_數據庫

教程特點:

步驟詳盡,適合數據庫初學者

採用Docker方式安裝,簡單快捷

包含完整的配置和測試步驟

提供遠程連接和常見問題解決方案

二、系統要求與準備

2.1 硬件要求

硬件項目

最低要求

CPU

2核心及以上(推薦4核心)

內存

4GB及以上(推薦8GB

硬盤

至少20GB可用空間

2.2 軟件環境

軟件組件

版本要求

操作系統

Ubuntu 20.04 LTS / 22.04 LTS

Docker

Docker Engine 20.10及以上版本

網絡

穩定的互聯網連接

複製下面命令即可查詢:

Ubuntu系統使用Docker安裝openGauss數據庫完整教程_數據庫_02

Ubuntu系統使用Docker安裝openGauss數據庫完整教程_docker_03

三、Docker環境安裝

Docker是一個開源的容器化平台,可以讓我們輕鬆部署和管理openGauss數據庫。如果您的系統已安裝Docker,可跳過此步驟。

3.1 更新系統軟件包

首先更新系統軟件包列表,確保安裝最新版本的軟件:

sudo apt update && sudo apt upgrade -y

Ubuntu系統使用Docker安裝openGauss數據庫完整教程_openGauss_04

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


Ubuntu系統使用Docker安裝openGauss數據庫完整教程_docker_05

預期輸出示例:

Docker version x.x.x, build xxxxx

3.4 啓動Docker服務

這裏我已經設置了開機自啓動的了,大家也可以按照下面命令自行設置:

啓動Docker並設置開機自啓:

sudo systemctl start docker

sudo systemctl enable docker

查看Docker服務狀態:

sudo systemctl status docker

Ubuntu系統使用Docker安裝openGauss數據庫完整教程_openGauss_06

四、openGauss數據庫部署

4.1 搜索openGauss鏡像

Docker Hub中搜索可用的openGauss鏡像:

docker search opengauss


這裏直接使用docker可能出現連不上,可以配置國內鏡像源進行搜索和拉取:

國內用户訪問 Docker 官方倉庫經常超時,配置國內鏡像源(如阿里雲、華為雲)可直接解決問題:

1. 編輯 Docker 配置文件

Ubuntu系統使用Docker安裝openGauss數據庫完整教程_數據庫_07

2. 粘貼國內鏡像源配置(選一個即可)
選項 A:阿里雲鏡像源(推薦,需登錄阿里雲獲取專屬地址)
  1. 打開阿里雲容器鏡像服務:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
  2. 登錄後,複製你的 專屬鏡像加速地址(格式類似 https://xxxx.mirror.aliyuncs.com);
  3. 替換下面配置中的 <你的阿里雲加速地址>

Ubuntu系統使用Docker安裝openGauss數據庫完整教程_docker_08

選項 B:公共鏡像源(無需登錄,直接用)

Ubuntu系統使用Docker安裝openGauss數據庫完整教程_docker_09

3. 重啓 Docker 服務生效

Ubuntu系統使用Docker安裝openGauss數據庫完整教程_數據庫_10

4. 驗證配置是否生效

Ubuntu系統使用Docker安裝openGauss數據庫完整教程_openGauss_11

Ubuntu系統使用Docker安裝openGauss數據庫完整教程_數據庫_12

  • 若輸出中能看到 Registry Mirrors:列表,且包含你配置的鏡像源,説明生效;
  • 再次執行搜索命令,應該能正常返回結果:如果返回不了也不重要,直接拉取

Ubuntu系統使用Docker安裝openGauss數據庫完整教程_數據庫_13


推薦鏡像:

•enmotech/opengauss - 社區版本,功能完整

•opengauss/opengauss - 官方輕量版

4.2 拉取openGauss鏡像

本教程使用具體版本(推薦),拉取穩定的5.0.0鏡像:

docker pull enmotech/opengauss:5.0.0

注意:鏡像大小約700MB,下載時間取決於網絡速度,請耐心等待。

Ubuntu系統使用Docker安裝openGauss數據庫完整教程_數據庫_14

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位,且包含大寫字母、小寫字母、數字和特殊字符,否則容器啓動失敗!

Ubuntu系統使用Docker安裝openGauss數據庫完整教程_數據庫_15

4.5 驗證容器狀態

等待3-5分鐘讓數據庫初始化完成,然後查看容器運行狀態:

sudo docker ps

正常輸出示例:

如果STATUS顯示Up,説明容器運行正常。

Ubuntu系統使用Docker安裝openGauss數據庫完整教程_數據庫_16

五、連接openGauss數據庫

5.1 進入容器

使用以下命令進入openGauss容器:

sudo docker exec -it opengauss bash


5.2 切換用户

在容器內新增並切換到omm用户(openGauss專用管理用户):

su - omm

Ubuntu系統使用Docker安裝openGauss數據庫完整教程_openGauss_17

5.3 連接數據庫

使用gsql工具連接到postgres默認數據庫:

gsql -d postgres -p 5432

成功連接後會顯示類似

Ubuntu系統使用Docker安裝openGauss數據庫完整教程_openGauss_18

5.4 基本數據庫操作

以下是一些常用的gsql命令:

命令

功能説明

\l

查看所有數據庫

\du

查看所有用户

\c dbname

切換到指定數據庫

\dt

查看當前數據庫所有表

\q

退出gsql

六、數據庫操作測試示例

通過實際的SQL操作來驗證數據庫功能是否正常。以下示例將創建數據庫、表,並進行增刪改查操作。

6.1 創建測試數據庫

CREATE DATABASE testdb;

\c testdb

Ubuntu系統使用Docker安裝openGauss數據庫完整教程_數據庫_19

6.2 創建測試表

CREATE TABLE employees (

id SERIAL PRIMARY KEY,

name VARCHAR(50),

age INT,

department VARCHAR(50)

);

Ubuntu系統使用Docker安裝openGauss數據庫完整教程_docker_20

6.3 插入測試數據

INSERT INTO employees (name, age, department) VALUES

('張三', 28, '技術部'),

('李四', 32, '市場部'),

('王五', 25, '人力資源部');

6.4 查詢數據

SELECT * FROM employees;

預期輸出:

Ubuntu系統使用Docker安裝openGauss數據庫完整教程_數據庫_21

七、配置遠程連接

默認情況下,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命令,我是直接複製到外面,修改完之後再複製到容器內的

Ubuntu系統使用Docker安裝openGauss數據庫完整教程_docker_22

7.4 重啓數據庫

使配置生效,重啓數據庫服務:

gs_ctl restart -D /var/lib/opengauss/data

或者重啓整個Docker容器:

sudo docker restart opengauss


注意:這裏我們不能直接使用遠程連接去連接超管用户omm,只能新建一個用户,例如:

Ubuntu系統使用Docker安裝openGauss數據庫完整教程_openGauss_23

建完之後我們去使用navicat工具連接即可:

Ubuntu系統使用Docker安裝openGauss數據庫完整教程_docker_24

八、常見問題與解決方案

8.1 容器啓動失敗

問題現象:docker ps查看容器不存在或STATUSExited

可能原因:

1.密碼不符合複雜度要求

2.端口5432被佔用

3.數據目錄權限問題

解決方法:

# 查看容器日誌

sudo docker logs opengauss

# 檢查端口占用

sudo netstat -tunlp | grep 5432

8.2 無法遠程連接

問題現象:客户端工具無法連接到數據庫

檢查清單:

確認防火牆已開放5432端口

檢查postgresql.conflisten_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容器化部署方式,大大簡化了安裝和管理流程,非常適合開發、測試和學習使用。

Ubuntu系統使用Docker安裝openGauss數據庫完整教程_docker_25

後續學習方向:

深入學習SQL語法和高級特性

研究openGauss的高可用架構

探索AI調優和智能運維功能

實踐數據備份和恢復策略