博客 / 詳情

返回

使用Docker實現KWDB數據庫的快速部署與配置

作者:江湖有緣

原文鏈接:https://blog.csdn.net/jks212454/article/details/147656934

前言

隨着 AIoT 技術的快速發展,對數據庫的多模數據處理能力和智能化水平提出了更高要求。KaiwuDB 作為一款面向 AIoT 場景的國產分佈式數據庫,憑藉其高效的時序數據處理能力與多模融合特性,逐漸成為行業關注的焦點。本文將通過 Docker 容器化方式,帶大家快速部署並體驗 KaiwuDB 數據庫的強大功能與便捷管理。

一、KWDB介紹

1.1 KWDB簡介

KWDB 是一款面向 AIoT 場景的分佈式、多模融合數據庫產品。 支持在同一個實例中建立時序庫和關係庫,並統一處理多種類型的數據,具備對海量時序數據的高效讀寫與分析能力。 產品具備高可用、安全穩定、易運維等特性,廣泛應用於工業物聯網、數字能源、車聯網、智慧礦山等多個行業領域,為用户提供一站式數據存儲、管理與分析的基礎平台。

1.2 主要特點

  • 高性能處理能力:支持海量時序數據高速讀寫,提供插值查詢、數學函數等豐富的時序特色功能,提升應用效率。
  • 低運管成本:統一存儲與管理多模數據,一套系統滿足跨業務、跨部門數據融合需求,降低企業IT與運維投入。
  • 低存儲成本:支持 5-30 倍數據壓縮比,結合數據生命週期管理策略,靈活控制數據保留時間,顯著節省存儲資源。
  • 高安全性:提供數據庫審計與加密機制,保障數據在複雜業務場景下的安全穩定運行。
  • 易用性強:提供標準 SQL 接口、高速寫入、極速查詢、集羣部署等能力,與第三方工具無縫集成,開發運維更便捷。

1.3 典型應用場景

應用場景 場景描述
工業物聯網 支持 SCADA/DCS 系統對接,統一存儲設備實時數據與生產管理數據,助力智能化生產分析。
數字能源 融合傳感器與業務數據,實現調峯調頻分析與實時預警,推動能源系統智能化升級。
車聯網 高速寫入車端傳感器數據,支撐車輛狀態監控與上層業務分析,打造智能車聯網解決方案。
智慧礦山 統一處理採選冶全流程中的關係與時序數據,打通多業務系統,提升礦山數字化水平。

二、環境介紹

2.1 部署環境要求

  • KWDB數據庫的硬件規格要求

  • KWDB 支持在以下已安裝 Docker的操作系統中進行容器部署

2.2 本地環境規劃

本次實踐為個人測試環境,操作系統版本為Ubuntu 22.04.1。

2.3 部署模式

  • 使用容器鏡像部署KaiwuDB的部署模式説明:

三、部署Docker環境

3.1 安裝相關工具

安裝docker之前,我們先安裝 HTTPS傳輸工具及必要組件。

 apt  install -y apt-transport-https ca-certificates curl gnupg lsb-release software-properties-common

3.2 配置Docker軟件源

  • 添加阿里雲 GPG 密鑰

    mkdir -p /etc/apt/keyrings
    curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker-archive-keyring.gpg
  • 執行以下命令,開始配置阿里雲 Docker 軟件源。

    echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

3.3 更新軟件源

  • 使用apt-get update命令,更新軟件源。

    root@jeven01:~# apt update
    Hit:1 https://mirrors.aliyun.com/ubuntu jammy InRelease
    Hit:2 https://mirrors.aliyun.com/ubuntu jammy-security InRelease
    Hit:3 https://mirrors.aliyun.com/ubuntu jammy-updates InRelease
    Hit:4 https://mirrors.aliyun.com/ubuntu jammy-backports InRelease
    Hit:5 https://mirrors.aliyun.com/docker-ce/linux/ubuntu jammy InRelease
    Reading package lists... Done
    Building dependency tree... Done
  • packages can be upgraded. Run 'apt list --upgradable' to see them.

3.4 安裝Docker

  • 執行以下命令,安裝Docker核心組件。

    apt  install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

3.5 配置鏡像加速

  • 執行以下命令,快速配置Docker鏡像加速。可以自行添加多個Docker鏡像加速源,確保後續可以成功拉取Docker鏡像。

    mkdir -p /etc/docker
sudo  tee /etc/docker/daemon.json > /dev/null <<EOF
{
    "registry-mirrors": ["https://80c84f5330e14908928ca78944e61dc4.mirror.swr.myhuaweicloud.com"]
}
EOF

執行以下命令,配置Docker開機自啓。

systemctl daemon-reload
systemctl restart docker
systemctl enable  docker

3.6 檢查Docker版本

檢查Docker版本,可以看到當前安裝的版本為28.1.1。

root@jeven01:~# docker -v
Docker version 28.1.1, build 4eba377

檢查Docker compose版本,當前安裝版本為2.35.1。

root@jeven01:~# docker compose version
Docker Compose version v2.35.1

四、下載容器鏡像

執行以下命令,拉取KWDB容器鏡像。本次實踐所使用的KWDB鏡像為kwdb/kwdb:2.2.0。

root@jeven01:/data/kwdb# docker pull kwdb/kwdb:2.2.0
2.2.0: Pulling from kwdb/kwdb
Digest: sha256:9dda946922a69557e20be9f1d99c504c467fba6351bb8af0a34fe42711cde73f
Status: Image is up to date for kwdb/kwdb:2.2.0
docker.io/kwdb/kwdb:2.2.0

五、非安全部署模式(可選)

5.1 創建部署目錄

  • 創建kwdb數據庫目錄
mkdir -p /data/kwdb   &&  cd /data/kwdb/

5.2 創建KWDB容器

使用docker run命令方式部署,可參考以下:

docker run -d --privileged --name kaiwudb \
  --ulimit memlock=-1 \
  --ulimit nofile=65535 \
  -p 26257:26257 \
  -p 8080:8080 \
  -v /var/lib/kaiwudb:/kaiwudb/deploy/kaiwudb-container \
  --ipc shareable \
  -w /kaiwudb/bin \
  kwdb/kwdb:2.2.0 \
  ./kwbase start-single-node \
    --insecure \
    --listen-addr=0.0.0.0:26257 \
    --http-addr=0.0.0.0:8080 \
    --store=/kaiwudb/deploy/kaiwudb-container

使用 Docker Compose和YAML配置文件部署,目前只支持非安全部署模式,

version: '3.3'
services:
  kaiwudb-container:
    image: "kwdb/kwdb:2.2.0"
    container_name: kaiwudb-experience
    hostname: kaiwudb-experience
    ports:
      - 8080:8080
      - 26257:26257
    ulimits:
      memlock: -1
    volumes:
      - /dev:/dev
    networks:
      - default
    restart: on-failure
    ipc: shareable
    privileged: true
    environment:
      - LD_LIBRARY_PATH=/kaiwudb/lib
    tty: true
    working_dir: /kaiwudb/bin
    command:
      - /bin/bash
      - -c
      - |
        /kaiwudb/bin/kwbase start-single-node --insecure --listen-addr=0.0.0.0:26257 --advertise-addr=127.0.0.1:26257 --http-addr=0.0.0.0:8080 --store=/kaiwudb/deploy/kaiwudb
  • 部署文件相關參數解釋

  • 啓動命令參數説明:

執行docker compose up -d 命令,運行KWDB容器

root@jeven01:/data/kwdb# docker compose up -d
[+] Running 2/2
 ✔ Network kwdb_default          Created                                                                                                          0.1s
 ✔ Container kaiwudb-experience  Started                                                                                                          0.2s

5.3 檢查容器狀態

  • 檢查KWDB容器狀態,確保容器正常啓動。
root@jeven01:/data/kwdb# docker compose ps
NAME                 IMAGE               COMMAND                  SERVICE             CREATED             STATUS              PORTS
kaiwudb-experience   kwdb/kwdb:2.2.0     "/bin/bash -c '/kaiw…"   kaiwudb-container   5 minutes ago       Up 5 minutes        0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:26257->26257/tcp, :::26257->26257/tcp

5.4 訪問本地KWDB數據庫

我們使用 KaiwuDB 提供的內置命令行工具 kwbase 連接數據庫。該工具支持以安全模式(適用於生產環境)或非安全模式(適用於測試環境)進行連接,便於用户執行數據庫操作與維護。在非安全模式部署時,KaiwuDB 允許任意用户無需密碼即可連接,通常用於本地開發和測試場景。

docker exec -it kaiwudb-experience ./kwbase sql --insecure  --host=127.0.0.1

5.5 使用普通用户訪問KWDB

進入KWDB數據庫後,我們創建新用户zhangsan,如下所示:

CREATE USER zhangsan;

執行以下命令,查詢剛新建的zhangsan用户。

show users;

我們使用剛創建的zhangsan普通用户,在非安全模式下免密登錄KWDB數據庫。

docker exec -it kaiwudb-experience ./kwbase sql --insecure  --host=127.0.0.1 -u zhangsan

六、安全部署模式

6.1 創建證書文件

在以 TLS 安全模式部署 KaiwuDB 時,需先通過一系列命令創建數據庫的證書頒發機構(CA)、root 用户的客户端證書以及節點服務器證書。這些證書為系統提供身份驗證和加密通信能力,是實現安全部署的基礎步驟。創建節點證書時,請確保將本地IP地址(例如192.168.3.88)包含在內,以生成正確的服務器證書。

docker run --rm --privileged \
  -v /data/kwdb/certs:/kaiwudb/certs \
  -w /kaiwudb/bin \
   kwdb/kwdb:2.2.0  \
  bash -c './kwbase cert create-ca --certs-dir=/kaiwudb/certs --ca-key=/kaiwudb/certs/ca.key && \
            ./kwbase cert create-client root --certs-dir=/kaiwudb/certs --ca-key=/kaiwudb/certs/ca.key && \
            ./kwbase cert create-node 127.0.0.1 localhost 0.0.0.0  192.168.3.88 --certs-dir=/kaiwudb/certs --ca-key=/kaiwudb/certs/ca.key'

查看在certs目錄下的證書相關文件,如下所示:

root@jeven01:/data/kwdb# ls certs/
ca.crt  ca.key  client.root.crt  client.root.key  node.crt  node.key

6.2 創建KWDB容器

以TLS安全模式,創建KWDB容器,如下所示:

docker run -d --privileged --name kwdb \
--ulimit memlock=-1 \
--ulimit nofile=65535 \
-p 26257:26257 \
-p 8080:8080 \
-v /data/kwdb/certs:/kaiwudb/certs \
-v /data/kwdb/db:/kaiwudb/deploy/kaiwudb-container \
--ipc shareable \
-w /kaiwudb/bin \
 kwdb/kwdb:2.2.0  \
./kwbase start-single-node \
  --certs-dir=/kaiwudb/certs \
  --listen-addr=0.0.0.0:26257 \
  --http-addr=0.0.0.0:8080 \
  --store=/kaiwudb/deploy/kaiwudb-container

6.3 查看容器狀態

我們查詢KWDB容器狀態,確保KWDB容器創建成功。

root@jeven01:/data/kwdb# docker ps
CONTAINER ID   IMAGE             COMMAND                  CREATED          STATUS          PORTS                               NAMES
3fd88edd6fce   kwdb/kwdb:2.2.0   "./kwbase start-sing…"   53 seconds ago   Up 52 seconds   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:26257->26257/tcp, :::26257->26257/tcp   kwdb

6.5 訪問KWDB數據庫

使用 kwbase CLI 工具連接 KaiwuDB 時,請確保以部署數據庫時所創建的用户進行登錄。這種方式保證了操作的安全性和權限管理的準確性。

docker exec -it kwdb ./kwbase sql --certs-dir=/kaiwudb/certs  --host=192.168.3.88

6.6 創建用户和密碼

創建用户 jeven,設置密碼為 jeven1234,並賦予管理員權限(角色為 admin)

CREATE USER jeven WITH PASSWORD 'jeven1234';
GRANT admin TO jeven;

  • 查詢新建jeven用户,如下所示:

方法一:

SELECT * FROM  system.users;

方法二:

root@192.168.3.88:26257/defaultdb> SHOW USERS;
  username |  options   | member_of
-----------+------------+------------
  admin    | CREATEROLE | {}
  jeven    |            | {admin}
  root     | CREATEROLE | {admin}
(3 rows)

Time: 10.348748ms

6.7 使用新用户連接KWDB

退出當前的 KWDB 數據庫會話,然後使用新生成的 jeven 用户重新連接 KWDB 數據庫。

docker exec -it  kwdb ./kwbase sql --certs-dir=/kaiwudb/certs  --host=192.168.3.88    --host=192.168.3.88 -u jeven

七、使用KaiwuDB開發者中心連接KWDB

7.1 安裝環境要求

支持的操作系統

  • Windows: Windows 7 及以上 64 位系統
  • Linux: 內核 2.6 及以上系統
  • macOS: Mac 操作系統

硬件環境

軟件環境

7.2 安裝 KaiwuDB 開發者中心

下載地址:https://gitee.com/kwdb/kwdb/releases/tag/V2.2.0

下載後解壓軟件包,直接雙擊KaiwuDB Developer Center.exe,即可運行 KaiwuDB 開發者中心應用程序。

7.3 連接 KWDB 數據庫

在創建新連接窗口中,選擇 KaiwuDB 驅動,然後單擊 下一步 按鈕以繼續。

連接設置:

  • 主機名稱:192.168.3.88(本機IP),端口默認26257;
  • 數據庫:defaultdb;
  • 用户:新創建的用户jeven;
  • 密碼:自己設置的密碼;
  • 確認連接:填寫完畢後,點擊“完成”確認即可。
  • 備註:確認連接前,可單擊測試鏈接,檢查連接是否成功。

連接成功,進入KWDB數據庫,如下所示:

我們在 SQL 編輯器中輸入並執行用户的查詢語句後,即可查看用户列表信息。

八、KWDB數據庫體驗與總結

通過本次實踐,我深刻體會到 KWDB 數據庫作為一款國產分佈式數據庫的強大能力與優秀設計。儘管是首次接觸,但藉助 Docker 的快速部署方式,整個安裝配置過程簡潔高效,即使是技術小白也能輕鬆上手。無論是非安全模式還是安全部署模式,KWDB 都提供了清晰的操作流程和良好的系統支持。其內置的多模數據處理能力和對 AI 能力的融合,讓我看到了它在工業物聯網、車聯網等複雜場景中的巨大潛力。KWDB 不僅性能穩定、功能豐富,而且具備高度的可操作性和前瞻性,是一款值得深入學習與廣泛應用的國產數據庫產品。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.