使用Docker实现KWDB数据库的快速部署与配置

作者:江湖有缘

原文链接:blog.csdn.net/jks212454/a...

前言

随着 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传输工具及必要组件。

bash 复制代码
 apt  install -y apt-transport-https ca-certificates curl gnupg lsb-release software-properties-common

3.2 配置Docker软件源

  • 添加阿里云 GPG 密钥
bash 复制代码
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 软件源。
bash 复制代码
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命令,更新软件源。
bash 复制代码
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
Reading state information... Done
194 packages can be upgraded. Run 'apt list --upgradable' to see them.

3.4 安装Docker

  • 执行以下命令,安装Docker核心组件。
bash 复制代码
apt  install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

3.5 配置镜像加速

  • 执行以下命令,快速配置Docker镜像加速。可以自行添加多个Docker镜像加速源,确保后续可以成功拉取Docker镜像。
bash 复制代码
mkdir -p /etc/docker
bash 复制代码
sudo  tee /etc/docker/daemon.json > /dev/null <<EOF
{
    "registry-mirrors": ["https://80c84f5330e14908928ca78944e61dc4.mirror.swr.myhuaweicloud.com"]
}
EOF

执行以下命令,配置Docker开机自启。

bash 复制代码
systemctl daemon-reload
systemctl restart docker
systemctl enable  docker

3.6 检查Docker版本

检查Docker版本,可以看到当前安装的版本为28.1.1。

bash 复制代码
root@jeven01:~# docker -v
Docker version 28.1.1, build 4eba377

检查Docker compose版本,当前安装版本为2.35.1。

bash 复制代码
root@jeven01:~# docker compose version
Docker Compose version v2.35.1

四、下载容器镜像

执行以下命令,拉取KWDB容器镜像。本次实践所使用的KWDB镜像为kwdb/kwdb:2.2.0。

bash 复制代码
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数据库目录
bash 复制代码
mkdir -p /data/kwdb   &&  cd /data/kwdb/

5.2 创建KWDB容器

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

bash 复制代码
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配置文件部署,目前只支持非安全部署模式,

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容器

bash 复制代码
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容器状态,确保容器正常启动。
bash 复制代码
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 允许任意用户无需密码即可连接,通常用于本地开发和测试场景。

bash 复制代码
docker exec -it kaiwudb-experience ./kwbase sql --insecure  --host=127.0.0.1

5.5 使用普通用户访问KWDB

进入KWDB数据库后,我们创建新用户zhangsan,如下所示:

sql 复制代码
CREATE USER zhangsan;

执行以下命令,查询刚新建的zhangsan用户。

sql 复制代码
show users;

我们使用刚创建的zhangsan普通用户,在非安全模式下免密登录KWDB数据库。

bash 复制代码
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)包含在内,以生成正确的服务器证书。

bash 复制代码
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目录下的证书相关文件,如下所示:

bash 复制代码
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容器,如下所示:

bash 复制代码
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容器创建成功。

bash 复制代码
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 时,请确保以部署数据库时所创建的用户进行登录。这种方式保证了操作的安全性和权限管理的准确性。

bash 复制代码
docker exec -it kwdb ./kwbase sql --certs-dir=/kaiwudb/certs  --host=192.168.3.88

6.6 创建用户和密码

创建用户 jeven,设置密码为 jeven1234,并赋予管理员权限(角色为 admin)

sql 复制代码
CREATE USER jeven WITH PASSWORD 'jeven1234';
GRANT admin TO jeven;
  • 查询新建jeven用户,如下所示:

方法一:

bash 复制代码
SELECT * FROM  system.users;

方法二:

bash 复制代码
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 数据库。

bash 复制代码
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 开发者中心

下载地址:gitee.com/kwdb/kwdb/r...

下载后解压软件包,直接双击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 不仅性能稳定、功能丰富,而且具备高度的可操作性和前瞻性,是一款值得深入学习与广泛应用的国产数据库产品。

相关推荐
阿蒙Amon40 分钟前
C#读写文件:多种方式详解
开发语言·数据库·c#
东窗西篱梦1 小时前
Redis集群部署指南:高可用与分布式实践
数据库·redis·分布式
就是有点傻2 小时前
C#如何实现中英文快速切换
数据库·c#
1024小神2 小时前
hono框架绑定cloudflare的d1数据库操作步骤
数据库
呆萌的代Ma4 小时前
解决Mac上的老版本docker desktop 无法启动/启动后一直转圈/无法登陆账号的问题
macos·docker·eureka
feilieren4 小时前
Docker 安装 Elasticsearch 9
运维·elasticsearch·docker·es
KellenKellenHao4 小时前
MySQL数据库主从复制
数据库·mysql
@ chen4 小时前
Redis事务机制
数据库·redis
一只fish5 小时前
MySQL 8.0 OCP 1Z0-908 题目解析(16)
数据库·mysql