一、前言
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及以上版本 |
|
網絡 |
穩定的互聯網連接 |
複製下面命令即可查詢:
三、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 配置文件
2. 粘貼國內鏡像源配置(選一個即可)
選項 A:阿里雲鏡像源(推薦,需登錄阿里雲獲取專屬地址)
- 打開阿里雲容器鏡像服務:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
- 登錄後,複製你的 專屬鏡像加速地址(格式類似 https://xxxx.mirror.aliyuncs.com);
- 替換下面配置中的 <你的阿里雲加速地址>:
選項 B:公共鏡像源(無需登錄,直接用)
3. 重啓 Docker 服務生效
4. 驗證配置是否生效
- 若輸出中能看到 Registry Mirrors:列表,且包含你配置的鏡像源,説明生效;
- 再次執行搜索命令,應該能正常返回結果:如果返回不了也不重要,直接拉取
推薦鏡像:
•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調優和智能運維功能
•實踐數據備份和恢復策略