KaiwuDBKaiwuDB

KWDB 创作者计划 | 多副本集群部署

2025-05-21

原文链接:【KWDB 2025 创作者计划】_多副本集群部署 - 墨天轮

作者:董小姐

一、集群部署概述

KaiwuDB 支持使用裸机或容器安装包部署以下集群:

类别

多副本集群

单副本集群

定义

KaiwuDB 在同一机房的多个节点上运行,每份数据默认有 3 份副本,且副本分布在不同节点上。

KaiwuDB 在同一机房的多个节点上运行,整个集群只有一份数据副本,所有数据的存储和更新操作都由该副本负责。

性能

数据写入性能弱于单节点部署和单副本集群;
简单场景下数据读取性能略弱于单节点部署,复杂场景下数据读取性能与单副本集群相同。

数据写入性能优于多副本集群,略弱于单节点部署;
简单场景下数据读取性能略弱于单节点部署,复杂场景下数据读取性能与多副本集群相同。

集群扩缩容

支持集群扩容和缩容,更多详细信息,参见集群扩缩容

仅支持集群扩容,更多详细信息,参见集群扩缩容

高可用性

支持高可用性,能够实现故障转移和数据强一致性。更多详细信息,参见集群高可用

不支持高可用性。集群节点出现故障时,数据写入、查询和 DDL 操作可能失败;故障节点数超过集群节点总数的一半时,所有操作将会暂停。

集群升级

- 支持 2.0.4 及以上版本在线升级至更高版本,更多详细信息,参见集群升级
- 支持 2.0.4 以下版本通过导入导出升级至更高版本,更多详细信息,参见数据导出数据导入

支持 2.1.0 及以上版本离线升级至更高版本。更多详细信息,参见集群升级

数据均衡

支持集群扩缩容后的自动数据均衡。

不支持集群扩容后的自动数据均衡。

二、前提条件

2.1 系统要求

  • 所有待部署节点的硬件、操作系统和软件依赖满足安装部署要求。
  • 网络设置:
    • 各节点间网络联通。
    • 节点所在机器位于同一机房内。
    • 物理机器间网络延迟不高于 50 ms。
    • 各节点时钟相差不大于 500 ms。
    • 各节点已预留 KaiwuDB 服务所需端口。

2.2 用户权限要求

  • 已配置当前节点与集群内其他节点的 SSH 免密登录。
  • 安装用户为 root 用户或者拥有 sudo 权限的普通用户。
    • root 用户和配置 sudo 免密的普通用户在执行部署脚本时无需输入密码。
    • 未配置 sudo 免密的普通用户在执行部署脚本时,需要输入密码进行提权。
  • 使用容器安装包部署时,如果安装用户为非 root 用户,需要通过 sudo usermod -aG docker $USER 命令将用户添加到 docker 组。

三、环境说明

操作系统为Kylin-Server-V10-SP3-2403-Release-20240426-x86_64

ip:192.168.40.135 和 192.168.40.136和 192.168.40.137

四、准备工作

4.1 硬件要求

为了提高可用性,降低数据丢失的风险,建议在单台计算机上只运行一个节点。KaiwuDB 采用跨节点复制机制,如果在一台计算机上同时运行多个节点,当计算机发生故障时,更有可能丢失数据

下表列出使用裸机安装包部署 KaiwuDB 所需的硬件规格要求。

项目

要求

CPU 和内存

- 单节点配置建议不低于 4 核 8G。
- 对于数据量大、复杂工作负载、高并发和高性能场景,建议配置更高的 CPU 和内存资源以确保系统的高效运行。

磁盘

- 推荐使用 SSD 或者 NVMe 设备,尽量避免使用 NFS、CIFS、CEPH 等共享存储。
- 使用 HDD 硬盘部署单机版本时,避免设备数过多或每秒写入测点数过高,否则数据写入性能将显著下降;不建议使用 HDD 部署分布式集群版本。
- 磁盘至少能够实现 500 IOPS 和 30 MB/s 处理效率。
- KaiwuDB 系统自身启动不会占用过多磁盘容量(低于 1G)。实际所需磁盘大小主要取决于用户的业务量以及是否开启 KaiwuDB 压缩等可以减少原始数据磁盘占用的功能,更多详细信息,参见预估磁盘使用量

文件系统

建议使用 ext4 文件系统。

4.2 操作系统

KaiwuDB 支持在以下服务器操作系统进行安装部署。

操作系统

版本

架构

Anolis

8.6

ARM_64


8.6

x86_64

KylinOS

V10 SP3 2403
V10 SP3 2303

ARM_64


V10 SP3 2403
V10 SP3 2303

x86_64

Ubuntu

V18.04

x86_64


V20.04

ARM_64


V20.04

x86_64


V22.04

ARM_64


V22.04

x86_64


V24.04

ARM_64


V24.04

x86_64

UOS

1060e

x86_64


1060e

ARM_64

说明

未提及的操作系统版本也许可以运行 KaiwuDB,但尚未得到 KaiwuDB 官方支持。

4.3 软件依赖

安装时,KaiwuDB 会对依赖进行检查。如果缺少依赖会退出安装并提示依赖缺失。如果目标机器不能联网,用户需要在能联网的机器上根据目标机器的操作系统下载好所有依赖文件,然后将依赖文件复制到目标机器上进行安装。

下表列出需要在目标机器安装的依赖。

依赖

版本

说明

OpenSSL

v1.1.1+

N/A

libprotobuf

v3.6.1+

Ubuntu 18.04 版本默认的 libprotobuf 版本低于所需版本,用户需要在部署前提前安装高版本的 libprotobuf 或者使用安装包内提供的高版本 libprotobuf 完成安装。具体操作说明,参见libprotobuf 安装

GEOS

v3.3.8+

可选依赖

xz-libs

v5.2.0+

N/A

squashfs-tools

any

N/A

libgcc

v7.3.0+

N/A

mount

any

N/A

squashfuse

any

可选依赖

4.4 端口

下表列出 KaiwuDB 服务需要映射的端口。在安装部署前,确保目标机器的以下端口没有被占用且没有被防火墙拦截。在安装部署时,用户可以修改 deploy.cfg 文件中的端口配置参数。

端口号

说明

8080

数据库 Web 服务端口

26257

数据库服务端口、节点监听端口和对外连接端口

4.5 获取安装包并解压

下载代码压缩包,并将其解压缩到指定目录。

mkdir -p /opt/kwdb
tar -xvf /opt/KWDB-2.2.0-kylinV10_2403-x86_64-rpms.tar.gz -C /opt/kwdb

处于网络安全考虑,本文档采用下载代码压缩包方式下载代码最新版 KWDB 2.2.0。

源码下载地址:https://gitee.com/kwdb/kwdb/releases/tag/V2.2.0

解压后生成的目录包含以下文件:

文件

说明

add_user.sh

安装、启动 KaiwuDB 后,为 KaiwuDB 数据库创建用户。

deploy.cfg

安装部署配置文件,用于配置部署节点的 IP 地址、端口等配置信息。

deploy.sh

安装部署脚本,用于安装、卸载、启动、状态获取、关停和重启等操作。

packages目录

存放 DEB、RPM、镜像包和 libprotobuf 包。

utils目录

存放工具类脚本。

4.6 配置yum

上传Kylin-Server-V10-SP3-2403-Release-20240426-x86_64.iso至服务器/soft目录并挂载

#配置本地yum源
cd /etc/yum.repos.d
mkdir bk
mv *.repo bk/


cat > /etc/yum.repos.d/kylinv10sp3.repo << "EOF"
[local]
name=kylinv10sp3
baseurl=file:///mnt
gpgcheck=0
enabled=1
EOF

mount /opt/Kylin-Server-V10-SP3-General-Release-2303-X86_64.iso  /mnt


#安装所需的软件
yum install -y gcc-c++
yum install -y  protobuf-compiler

KWDB 支持用户根据需求选择二进制安装包、容器和源码安装与试用 KWDB 数据库:

  • 二进制安装包:支持单机和集群以及安全和非安全部署模式。
  • 容器镜像:KWDB 暂未提供可供下载的容器镜像,如需以容器方式部署 KWDB,需联系 KWDB 技术支持人员获取。
  • 源码:源码编译目前支持单节点非安全模式部署。

4.7 节点配置

部署 KaiwuDB 集群时,系统将对配置文件、运行环境、硬件配置、软件依赖和 SSH 免密登录进行检查。

  • 如果硬件配置未满足要求,系统将继续安装,并提示硬件规格不满足要求。
  • 如果软件依赖未满足要求,系统会中止安装并提供相应的错误信息。

在部署过程中,系统会自动生成相关日志。如果部署时出现错误,用户可以通过查看终端输出或 KaiwuDB 安装目录中 log 目录里的日志文件,获取详细的错误信息。

4.7.1 SSH 免密登录

4.7.1.1 生成公私密钥对

登录当前节点,生成公私密钥对。

ssh-keygen -f ~/.ssh/id_rsa -N ""

参数说明:

    • -f ~/.ssh/id_rsa:指定生成的密钥对文件目录。
    • -N:将密钥密码设置为空,以实现免密登录。

4.7.1.2 将密钥分发至集群其它节点

--语法
ssh-copy-id -f -i ~/.ssh/id_rsa.pub -o StrictHostKeyChecking=no <target_node>

--示例
ssh-copy-id -f -i ~/.ssh/id_rsa.pub -o StrictHostKeyChecking=no 192.168.40.136
ssh-copy-id -f -i ~/.ssh/id_rsa.pub -o StrictHostKeyChecking=no 192.168.40.137

4.7.1.3 确认是否可以使用 SSH 免密登录到集群其它节点。

--语法
ssh <target_node>

--示例
ssh 192.168.40.136
ssh 192.168.40.137

4.7.2 配置时钟同步

KaiwuDB 采用中等强度的时钟同步机制来维持数据的一致性。当节点检测到自身的机器时间与集群中至少 50% 的节点的机器时间的误差值超过集群最大允许时间误差值(默认为 500 ms)的 80% 时,该节点会自动停止,从而避免违反数据一致性,带来读写旧数据的风险。每个节点都必须运行 NTP(Network Time Protocol,网络时间协议)或其他时钟同步软件,防止时钟漂移得太远。

4.7.2.1 安装ntp服务

yum install ntp --安装ntp

systemctl enable ntpd

4.7.2.2 修改配置文件

less /etc/ntp.conf

--系统时间与BIOS事件的偏差记录
driftfile /var/lib/ntp/drift            

--配置与本机同步的机器权限
# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system.

--默认拒绝任何操作
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery

默认拒绝任何操作
任何ip4地址、ip6地址 不能修改、不能trap远程登录、不能尝试对等、不能校对时间

restrict 控制相关权限。

语法为: restrict [ 客户端IP ] mask [ IP掩码 ] [参数]

其中IP地址也可以是default ,default 就是指所有的IP

参数有以下几个:

nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时。

notrust :拒絕沒有認證的用戶端

noquery :客户端不能使用ntpq,ntpc来查询ntp服务器,等于不提供校对时间服务

notrap :不提供trap远程登录功能,trap服务是一种远程时间日志服务

拒绝为匹配的主机提供模式 6 控制消息陷阱服务。陷阱服务是 ntpdq 控制消息协议的子系统,用于远程事件日志记录程序。

nopeer :用于阻止主机尝试与服务器对等

kod : 访问违规时发送 KoD 包,向不安全的访问者发送Kiss-Of-Death报文。

restrict -6 表示IPV6地址的权限设置。


如何控制客户的范围

# Permit all access over the loopback interface.  This could   下面的配置是允许运行任何权限的访问在本地接口,
# be tightened as well, but to do so would effect some of     这里最好收紧权限,但是会影响一些管理功能
# the administrative functions.
restrict 127.0.0.1 
restrict ::1

# Hosts on local network are less restricted.      配置给本地局域网络配置小一些的权限
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

本机与公共时间服务器同步选项

设定NTP主机来源(其中prefer表示优先主机)

# Use public servers from the pool.ntp.org project.   从时间池工程中使用公共服务器
# Please consider joining the pool ( http://www.pool.ntp.org/join.html ).  请考虑加入这个 时间池 项目
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst

server host [ key n ] [ version n ] [ prefer ] [ mode n ] [ minpoll n ] [ maxpoll n ] [ iburst ]

其中host是上层NTP服务器的IP地址或域名,随后所跟的参数解释如下所示:

◆ key: 表示所有发往服务器的报文包含有秘钥加密的认证信息,n是32位的整数,表示秘钥号。

◆ version: 表示发往上层服务器的报文使用的版本号,n默认是3,可以是1或者2。

◆ prefer: 优先使用。

◆ mode: 指定数据报文mode字段的值。

◆ minpoll: 指定与查询该服务器的最小时间间隔为2的n次方秒,n默认为6,范围为4-14。

◆ maxpoll: 指定与查询该服务器的最大时间间隔为2的n次方秒,n默认为10,范围为4-14。

◆ iburst: 当初始同步请求时,采用突发方式接连发送8个报文,时间间隔为2秒。


#broadcast 192.168.1.255 autokey        # broadcast server
#broadcastclient                        # broadcast client
#broadcast 224.0.1.1 autokey            # multicast server
#multicastclient 224.0.1.1              # multicast client
#manycastserver 239.255.254.254         # manycast server
#manycastclient 239.255.254.254 autokey # manycast client

当外部时间不可用时,以本地(本机)时间作为服务时间
本地时间以 127.127.1.0 表示 级别为10

# Undisciplined Local Clock. This is a fake driver intended for backup
# and when no outside source of synchronized time is available.
#server 127.127.1.0     # local clock
#fudge  127.127.1.1

下面是一些加密认证的配置

# Enable public key cryptography.
#crypto
includefile /etc/ntp/crypto/pw

# Key file containing the keys and key identifiers used when operating
# with symmetric key cryptography.
keys /etc/ntp/keys

# Specify the key identifiers which are trusted.
#trustedkey 4 8 42

# Specify the key identifier to use with the ntpdc utility.
#requestkey 8

# Specify the key identifier to use with the ntpq utility.
#controlkey 8
 
# Enable writing of statistics records.
#statistics clockstats cryptostats loopstats peerstats
示例
restrict default kod nomodify notrap nopeer noquery  
   拒绝所有ip4 的请求 
   # restrict -6 default kod nomodify notrap nopeer noquery  #针对ipv6设置 
   # 允许本地所有操作 
   restrict 127.0.0.1 
   #restrict -6 ::1 
   # 允许的局域网络段或单独ip 某些权限 
   restrict 10.0.0.0 mask 255.0.0.0 nomodify motrap 
   restrict 192.168.0.0 mask 255.255.255.0 nomodify motrap 
   restrict 192.168.1.123 mask 255.255.255.255 nomodify motrap 
   # 使用上层的internet ntp服务器 
   restrict cn.pool.ntp.org 
   restrict 1.cn.poo.ntp.org 
   restrict 0.asia.pool.ntp.org 
   restrict 3.asia.pool.ntp.org 
   server cn.pool.ntp.org prefer 
   server 1.cn.poo.ntp.org 
   server 0.asia.pool.ntp.org 
   server 3.asia.pool.ntp.org 
   # 如果无法与上层ntp server通信以本地时间为标准时间 
   server   127.127.1.0     
   # local clock 
   fudge    127.127.1.0 stratum 10 
   # 计算本ntp server 与上层ntpserver的频率误差 
   driftfile  
   /var/lib/ntp/drift 
   # Key file containing the keys and key identifiers used when operating 
   # with symmetric key cryptography. 
   keys  
   /etc/ntp/keys 
   #日志文件 
   logfile  
   /var/log/ntp 
   .log

4.7.2.3 配置/etc/sysconfig/ntpd文件

ntp服务,默认只会同步系统时间。如果想要让ntp同时同步硬件时间,可以设置/etc/sysconfig/ntpd文件,在/etc/sysconfig/ntpd文件中,添加 SYNC_HWCLOCK=yes 这样,就可以让硬件时间与系统时间一起同步。

#允许BIOS与系统时间同步,也可以通过hwclock -w 命令
SYNC_HWCLOCK=yes

4.7.2.4 启动ntpd 服务

systemctl start ntpd

4.7.2.5 验证

查看ntp的端口

查看ntp的端口,应该看到123端口

netstat  -unlnp
查看ntp服务器有无和上层连通
ntpstat

输出如下:

synchronised to NTP server () at stratum 2 
 
time 
correct to within 74 ms 
 
polling server every 128 s 
 
# 注意:此命令出现上述synchronised结果比较慢,我的用了大概5分钟。

刚启动的时候,一般是:

# ntpstat 
unsynchronised
  time server re-starting
   polling server every 64 s
连接并同步后:
synchronised to NTP server (202.112.10.36) at stratum 3 
   time correct to within 275 ms
   polling server every 256 s
ntptrace -n 127.0.0.1 
127.0.0.1: stratum 3, offset -0.001095, synch distance 0.532610 
116.193.83.174: timed out, nothing received
查看ntp服务器与上层ntp服务器的状态
[root@dxj:/root]$ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*dns2.synet.edu. .BDS.            1 u   35  128  377   26.230   -5.649   2.103
+119.28.183.184  100.122.36.196   2 u   17  128  377   40.243   -4.085   1.909
-ntp7.flashdance 194.58.202.20    2 u  102  128  377  255.774   28.460   5.450
+ntp.wdc2.us.lea 130.133.1.10     2 u  103  128  377  246.156   -8.842  35.893

参数解释:

ntpq -p 
# 其中: 
# remote - 本机和上层ntp的ip或主机名,“+”有连线可做候选,“*”正在使用的  
# refid - 更上一层的ntp地址 
# st - stratum的 级别 
# when   - 多少秒前曾经同步过时间 
# poll   - 下次更新在多少秒后 
# reach  - 已经向上层ntp服务器要求更新的次数 
# delay  - 网络延迟 
# offset - 时间补偿 
# jitter - 系统时间与bios时间差

4.7.3 配置NTP客户端

在所有客户端上vim /etc/ntp.conf,添加:

server 192.168.40.135

--192.168.40.135 为上面配置的ntp服务器地址

注意:当server与client之间的时间误差过大时(可能是1000秒),处于对修改时间可能对系统和应用带来不可预知的问题,NTP将停止时间同步!
所以如果发现NTP启动之后时间并不进行同步时,应该考虑到可能是时间差过大引起的,
此时需要先手动进行时间同步 ntpdate !

在所有要安装 KaiwuDB 服务的集群节点上重复执行以上步骤。

五、部署步骤

5.1 配置deploy.cfg 配置文件

登录待部署节点,编辑安装包目录下的 deploy.cfg 配置文件,设置安全模式、管理用户、服务端口等信息,并添加其他节点信息。

配置文件内容如下:

[global]
# Whether to turn on secure mode
secure_mode=tls
# Management KaiwuDB user
management_user=kaiwudb
# KaiwuDB cluster http port
rest_port=8080
# KaiwuDB service port
kaiwudb_port=26257
# KaiwuDB data directory
data_root=/var/lib/kaiwudb
# CPU usage[0-1]
# cpu=0

[local]
# local node configuration
node_addr=192.168.40.135
# section cluster is optional
[cluster]
# remote node addr,split by ','
node_addr=192.168.40.136,192.168.40.137
# ssh info
ssh_port=22
ssh_user=root

配置参数说明:

  • global:全局配置
    • secure_mode:是否开启安全模式,支持以下三种取值:
    • insecure:使用非安全模式。
    • tls:(默认选项)开启 TLS 安全模式。开启安全模式后,KaiwuDB 生成 TLS 证书,作为客户端或应用程序连接数据库的凭证。生成的客户端相关证书存放在 /etc/kaiwudb/certs 目录。
    • tlcp:开启 TLCP 安全模式。开启安全模式后,KaiwuDB 生成 TLCP 证书,作为客户端或应用程序连接数据库的凭证。生成的客户端相关证书存放在 /etc/kaiwudb/certs 目录。
    • management_user:KaiwuDB 的管理用户,默认为 kaiwudb。安装部署后,KaiwuDB 创建相应的管理用户以及和管理用户同名的用户组。
    • rest_port:KaiwuDB Web 服务端口,默认为 8080
    • kaiwudb_port:KaiwuDB 服务端口,默认为 26257
    • data_root:数据目录,默认为 /var/lib/kaiwudb
    • cpu: 可选参数,用于指定 KaiwuDB 服务占用当前节点服务器 CPU 资源的比例,默认无限制。取值范围为 [0,1],最大精度为小数点后两位。KaiwuDB 支持调整 CPU 资源占用率。更多信息,参见配置裸机部署集群 或配置容器部署集群 。注意:如果部署环境为 Ubuntu 18.04 版本,在裸机部署集群完成后,需要将 kaiwudb.service 文件中的 CPUQuota 修改为整型值,例如,将 180.0% 修改为 180%,以确保设置生效。具体操作步骤,参见配置 CPU 资源占用率
    • encrypto_store: 可选参数,用于在部署时启用关系数据库存储加密功能。默认情况下,该参数不会显示,需要用户手动添加到配置文件中并设置为 true。启用后,系统将在 /etc/kaiwudb/certs 目录下自动生成存储密钥,使用 SM4 加密算法对数据进行加密。KaiwuDB 支持通过 --store-encryption 启动参数,在部署后进行目录加密、解密、存储密钥更新和算法更换等操作,更多信息,参见存储加密
  • local:本地节点配置
    • local_node_ip:本地节点对外提供服务的 IP 地址,监听地址为 0.0.0.0,端口为 KaiwuDB 服务端口。
  • cluster:集群内其他节点的配置
    • cluster_node_ips:远程节点对外提供服务的 IP 地址。各节点的 IP 地址使用逗号(,)分割,远程节点数应不少于 2 个。
    • ssh_port:远程节点的 SSH 服务端口。各节点的 SSH 服务端口必须相同。
    • ssh_user:远程节点的 SSH 登录用户。各节点的 SSH 登录用户必须相同。ssh_user如果采用自定义用户,必须提前创建,不然执行deploy.sh 会反复输入密码。

5.2 为 deploy.sh 脚本增加运行权限

chmod +x ./deploy.sh

5.3 多副本集群部署

./deploy.sh install --multi-replica

执行成功后,控制台输出以下信息:

[root@localhost kwdb_install]# ./deploy.sh install --multi-replica
 [WARN] 2025-04-16 11:11:11 The number of CPU cores does not meet the requirement. KaiwuDB may running failed. 
root@192.168.40.135's password: ######                                        ] 20%
root@192.168.40.135's password:
root@192.168.40.135's password: #############                                 ] 35%
root@192.168.40.135's password: #####################                         ] 50%
root@192.168.40.135's password: #######################                       ] 55%
root@192.168.40.135's password: ############################                  ] 65%
root@192.168.40.135's password:
root@192.168.40.135's password: ####################################          ] 80%
root@192.168.40.135's password:
root@192.168.40.135's password:
root@192.168.40.135's password: ######################################        ] 85%
[INSTALL COMPLETED]:KaiwuDB has been installed successfully! To start KaiwuDB, please execute the command 'systemctl daemon-reload'.

脚本安装很丝滑,整个安装过程很畅通,但是日志输出内容有些不完整,期待后面日志输出内容能更完善一些。

5.4 重新加载 systemd 守护进程的配置文件

systemctl daemon-reload

5.5 初始化并启动集群

注意事项:多副本集群初始化和启动大约需要 10 秒左右时间。在此期间,如果有节点死亡,可能会导致集群无法触发高可用机制。

./deploy.sh cluster -i
或
./deploy.sh cluster --init

输出如下:

[root@localhost kwdb_install]# ./deploy.sh cluster -i
root@192.168.40.135's password:
root@192.168.40.135's password:
root@192.168.40.135's password:
root@192.168.40.135's password:
root@192.168.40.135's password:
[INIT COMPLETED]:Cluster init successfully.

脚本初始化很丝滑,整个初始化过程很畅通,但是日志输出内容有些不完整,期待后面日志输出内容能更完善一些。

5.6 查看集群节点状态

./deploy.sh cluster -s
或
./deploy.sh cluster --status

输出如下:

[root@localhost kwdb_install]# ./deploy.sh cluster -s
  id |       address        |     sql_address      | build |            started_at            |            updated_at            |   locality   |      start_mode      | is_available | is_live
-----+----------------------+----------------------+-------+----------------------------------+----------------------------------+--------------+----------------------+--------------+----------
   1 | 192.168.40.135:26257 | 192.168.40.135:26257 | 2.2.0 | 2025-04-16 03:28:54.173638+00:00 | 2025-04-16 03:31:09.331276+00:00 | region=NODE1 | start-multi-replica | true         | true
(1 row)

返回字段说明:

字段

描述

id

节点 ID。

address

节点地址。

sql_address

SQL 地址。

build

节点运行的 KaiwuDB 版本

started_at

节点启动的日期和时间。

updated_at

节点状态更新的日期和时间。节点正常时,每 10 秒左右记录一次新的状态;节点异常时,更新信息可能会有所滞后。

locality

节点所在机器的地理位置,例如国家、数据中心或机架等。

start_mode

节点的启动模式。

is_available

is_live

如果均为 true,表示节点处于正常状态。
如果均为 false,表示节点处于异常状态。

5.7 配置 KaiwuDB 开机自启动

配置 KaiwuDB 开机自启动后,如果系统重启,则自动启动 KaiwuDB。

systemctl enable kaiwudb

注意事项:系统重启后,如果当前节点与其它节点时钟相差大于 500 ms,可能会导致 KaiwuDB 自启动失败。用户需要先进行时钟同步,再手动启动 KaiwuDB。

六、集群配置

集群部署和启动后,用户需要完成以下操作。

6.1 配置许可证

KaiwuDB 数据库集群启动后,只有具有 admin 权限的管理员可以登录数据库并通过 cluster.license 集群参数将许可证添加到已启动的集群中。成功启动 KaiwuDB 集群后,如果集群中的当前节点数量未超过许可证限制的节点数量时,用户可以设置许可证成功。否则,用户设置许可证失败。此时,用户需要先缩容集群,等节点数量满足许可证要求后,方可成功设置许可证。数据库会自动检查许可证的有效性。如果有效,则激活集群并允许其他用户登录。否则,将拒绝其他用户登录。

root 用户需要登录 KaiwuDB,并将许可证添加到集群中,以激活集群并允许其他用户登录。有关详细信息,参见配置许可证

6.1.1 获取 KaiwuDB 许可证文件

联系open in new window KaiwuDB 技术支持人员,获取 .lic 格式的 KaiwuDB 许可证文件。

license文件是给企业版,开源版KWDB不需要license

6.1.2 将许可证码添加到已启动的数据库集群中

复制文件中的许可证码,通过以下命令将许可证码添加到已启动的数据库集群中。其中,your-license-code 应替换为从 .lic 文件中复制的许可证码。有关 cluster.license 集群参数的详细信息,参见集群实时参数

SET CLUSTER SETTING cluster.license = '<your-license-code>';

6.1.3 查看许可证信息

SHOW LICENSE;

用户也可以通过 kwdb_internal.kwdb_license 系统视图查看许可证信息。有关详细信息,参见系统视图

列名

数据类型

描述

product

STRING

产品名称

version

STRING

产品版本号

edition

STRING

产品版本

customer

STRING

客户名称

expiration_time

TIMESTAMP

许可证到期时间

endpoint_limit

INT8

许可证限制测点的数量

endpoint_used

INT8

集群已用测点的数量

node_limit

INT8

许可证限制集群节点的数量

node_used

INT8

集群当前节点的数量

serial_number

STRING

许可证唯一编号

6.1.4 更新许可证(可选)

许可证过期后,只有具有 admin 权限的管理员可以登录数据库并通过 cluster.license 集群参数更新许可证。

6.2 创建数据库用户(可选)

KaiwuDB 在安装包中提供了 add_user.sh 脚本。在安装并运行 KaiwuDB 后,用户可以运行此脚本为数据库创建用户和密码,并使用创建的用户名和密码来登录数据库。

注意事项:

  • 如需创建多个用户,可以多次执行 add_user.sh 脚本。
  • 安装用户为 root 用户或者配置了 sudo 免密的普通用户,在执行脚本时无需输入密码。未配置 sudo 免密的普通用户,在执行脚本时,需要输入密码进行提权。
  • 已安装且成功启动 KaiwuDB 数据库。
  • 拥有 KaiwuDB 安装包目录的访问权限。
--进入 KaiwuDB 安装包目录
cd /opt/kwdb/kwdb_install

--执行 add_user.sh 脚本
./add_user.sh
根据系统提示创建用户名和密码,输出如下:
Please enter the username:top
Please enter the password:
[ADD USER COMPLETED]:User creation completed.

6.3 配置集群参数(可选)

6.3.1 配置启动参数

通常情况下,如果用户没有配置启动参数,系统会使用参数默认值启动 KaiwuDB。当用户配置了启动参数,KaiwuDB 启动时会优先使用配置的启动参数。部署完 KaiwuDB 后,用户可以按需修改 kaiwudb_env 文件中的启动参数。有关所有支持的启动参数,参见集群参数配置

6.3.1.1 停止 KaiwuDB 服务

systemctl stop kaiwudb

6.3.1.2 配置 KaiwuDB 启动参数

进入 /etc/kaiwudb/script 目录,打开 kaiwudb_env 文件。

示例将 --cache 启动参数设置为 10000

cd /etc/kaiwudb/script
vi kaiwudb_env
KAIWUDB_START_ARG="--cache=10000"

保存 kaiwudb_env 文件

6.3.1.3重新加载文件

systemctl daemon-reload

6.3.1.4 重新启动 KaiwuDB 服务

systemctl restart kaiwudb

6.3.2 配置 CPU 资源占用率

KaiwuDB 支持实时修改 CPU 资源占用率。

进入 /etc/systemd/system 目录,打开 kaiwudb.service 文件。根据需要,修改 KaiwuDB 的 CPU 资源占用率。

CPUQuota 的计算公式为:CPU 占用率 x 服务器CPU核数 x 100%。例如,假设节点所在服务器的 CPU 核数为 6,计划将 CPU 占用率调整为 0.3, 则对应的 CPUQuota 的值应为 0.3 x 6 x 100% = 180%

6.3.2.1 更改kaiwudb.service 文件

示例将 CPU 资源占用率(CPUQuota)设置为 180%:

cd /etc/systemd/system/
vi kaiwudb.service
[Service] 下面增加
CPUQuota=180%

保存 kaiwudb.service 文件

6.3.2.2 重新加载文件

systemctl daemon-reload

6.3.2.3 确认新的 CPU 资源占用率是否生效

systemctl show kaiwudb | grep CPUQuota

输出如下:

[root@localhost system]# systemctl show kaiwudb | grep CPUQuota
CPUQuotaPerSecUSec=1.800000s
CPUQuotaPeriodUSec=infinity

七、集群管理

7.1 启动与停止 KaiwuDB 服务

介绍如何启动、停止、重启集群中的单个 KaiwuDB 节点。执行所有命令时都需要 root 或 sudo 权限。

7.1.1 启动 KaiwuDB 服务

7.1.1.1 启动 KaiwuDB 服务

systemctl start kaiwudb

7.1.1.2 确认 KaiwuDB 服务已启动

systemctl status kaiwudb

7.1.2 停止 KaiwuDB 服务

systemctl stop kaiwudb

7.2 重启 KaiwuDB 服务

重启正在运行的 KaiwuDB 服务:

systemctl restart kaiwudb

说明:如果 KaiwuDB 服务处于停止状态,用户需要先启动 KaiwuDB 服务,然后再重启服务。

7.3 查看 KaiwuDB 服务状态

查询当前节点的 KaiwuDB 服务状态:

systemctl status kaiwudb

八、卸载集群

8.1 将 kaiwudb_install 目录传输到集群的所有其他节

登录安装部署集群的初始节点,将 kaiwudb_install 目录传输到集群的所有其他节点。

8.1.1 登录远程节点

ssh root@192.168.40.136 "mkdir -p ~/kaiwudb_install "

8.1.2 传输 kaiwudb_install 目录到目标节点

cd /opt/kwdb/
scp -r kaiwudb_install  root@192.168.40.136:~/kaiwudb_install /

8.2 在集群的每个节点执行以下操作

8.2.1 停止 KaiwuDB 服务

systemctl stop kaiwudb

8.2.2 在 kaiwudb_install 目录下执行数据库卸载命令

./deploy.sh uninstall

8.2.3 确认是否删除数据目录

确认是否删除数据目录。输入 y 将删除数据目录,取消 KaiwuDB 数据目录下的 loop 设备挂载。输入 n 将保留数据目录。

When uninstalling KaiwuDB, you can either delete or keep all user data. Please confirm your choice: Do you want to delete the data? (y/n):

卸载完成后,控制台输出以下信息:

[UNINSTALL COMPLETED]:KaiwuDB has been uninstalled successfully.


体验全新的分布式多模数据库解决方案

企业版 社区版

KaiwuDB 是浪潮控股的数据库企业,面向工业物联网、数字能源、车联网、智慧产业等行业领域,提供稳定安全、高性能、易运维的创新数据软件与服务。

关注官方微信

友情链接:浪潮  

© 上海沄熹科技有限公司 Shanghai Yunxi Technology Co., Ltd.    沪ICP备2023002175号-1    网站服务协议   |   隐私政策
400-624-5688-7
服务与支持
marketing@kaiwudb.org.cn