跳到主要内容
KaiwuDB 3.1.0 在 Ubuntu 22.04 部署实战:TLS 配置与性能基线 | 极客日志
Shell / Bash
KaiwuDB 3.1.0 在 Ubuntu 22.04 部署实战:TLS 配置与性能基线 Ubuntu 22.04 环境下单机部署 KaiwuDB 3.1.0 的完整指南。涵盖系统环境核查、依赖安装、deploy.cfg 配置(含 TLS 安全模式)、一键安装脚本执行及服务验证。针对常见故障如依赖缺失、服务 inactive、端口占用、权限拒绝等进行复盘与解决方案梳理。最后提供基于 1 万行数据的读写性能基线测试及索引执行计划分析,确保安装即稳定可用。
flc 发布于 2026/3/21 更新于 2026/5/23 20 浏览KaiwuDB 3.1.0 在 Ubuntu 22.04 部署实战
本文以 Ubuntu 22.04 为基础环境,从实战角度出发,完整拆解 KaiwuDB 3.1.0 单机部署的全流程。重点涵盖环境核查、依赖配置、TLS 安全模式设置及常见问题排查,并通过服务验证与轻量级压测完成最小化验收。
1. 版本选择与部署目标
本次实战主要是在 Ubuntu 22.04 环境下,搞定 单机版 的命令行部署。建议直接上 KaiwuDB 3.1.0 ,新版本在脚本易用性上做了不少优化,像配置确认、运维脚本这些,能省不少心。
完成本教程后,你将能够:
摸清系统环境和资源(CPU、内存、磁盘)。
安装好关键运行依赖(特别是 libprotobuf23、squashfs-tools 等)。
让 KaiwuDB 的部署脚本一次跑通。
确保 systemd 服务处于 active 状态。
验证端口监听正常(默认 26257 和 8080)。
顺利连接数据库并执行基础 SQL。
2. 开干前的准备工作
2.1 摸底系统信息
先跑几个命令,看看手里的机器到底是个什么配置:
lsb_release -a
uname -a
lscpu | sed -n '1,20p'
free -h
df -h
timedatectl status
建议配置:
确认是 Ubuntu 22.04.x。
内存最好有 4G 以上,8G 更稳当。
磁盘留个 50G+,SSD 比 HDD 香,ext4 文件系统更靠谱。
2.2 检查端口占用
默认端口得先扫一眼,别到时候冲突了抓瞎:
sudo ss -tuln | egrep '(:26257|:8080)\b' || true
如果有输出,说明端口被占了。要么在后面的 deploy.cfg 里换个端口,要么就把占用端口的服务给停了。
2.3 规划目录
习惯把'安装包'和'数据'分开放,这样以后排查问题或者清理的时候心里更有数:
sudo mkdir -p /app/kwdb/{soft,data}
sudo chown -R "$USER " :"$USER " /app/kwdb
cd /app/kwdb/soft
3. 获取安装包
KaiwuDB 在 Gitee Releases 上有对应的包:
方式 A:直接 wget cd /app/kwdb/soft
VERSION="3.1.0"
FILE="KWDB-${VERSION} -ubuntu22.04-intel-x86_64-debs.tar.gz"
URL="https://gitee.com/kwdb/kwdb/releases/download/V${VERSION} /${FILE} "
curl -I -L "$URL " | head -n 20
wget -O "$FILE " "$URL "
方式 B:浏览器下载再上传 如果你习惯在 Windows 上下载,也可以先下好,然后用 scp 或者 WinSCP 扔到服务器的 /app/kwdb/soft/ 目录下。
4. 解压与依赖配置
4.1 解压查看 cd /app/kwdb/soft
tar -xzf "$FILE "
ls -al
解压完你会看到一个叫 kwdb_install 的目录,后面的操作咱们就都在这儿进行了。
4.2 安装依赖 sudo apt update
sudo apt install -y ca-certificates curl wget tar \
libprotobuf23 protobuf-compiler \
libgflags2.2 \
libssl-dev liblzma-dev libncurses-dev libatomic1 libstdc++6 \
squashfs-tools
dpkg -s libprotobuf23 | grep -E '^Version'
dpkg -l | grep -E '^ii\s+libgflags' || true
protoc --version || true
dpkg -l | grep -E 'squashfs-tools|libprotobuf23' || true
在 Ubuntu 22.04 上,最搞心态的就是 缺依赖导致 dpkg 报错 。提前把这些装好,能省下大把排错的时间。
特别是 squashfs-tools,这玩意儿经常被忽略,属于'隐形杀手',没装的话安装阶段直接报错给你看。
5. 修改配置文件 deploy.cfg cd /app/kwdb/soft/kwdb_install
ls -al
这里面默认已经有不少内容了。对于单机安装,通常只需要动两个地方:
data_root:改成你刚才规划好的数据目录(比如 /app/kwdb/data/kaiwudb)。
node_addr:改成你对外服务的 IP 地址,千万别开 [cluster]。
5.1 模板 A:非安全模式 insecure 如果你只是想快速跑通验证一下,或者嫌配证书麻烦,先用 insecure 模式凑合一下也行:
[global]
secure_mode =insecure
management_user =kaiwudb
rest_port =8080
kaiwudb_port =26257
grpc_port =27257
data_root =/app/kwdb/data/kaiwudb
[local]
node_addr =你的公网地址
5.2 模板 B:TLS 安全模式 tls 要是正儿八经用,或者想一步到位,建议直接上 TLS。node_addr 填客户端实际能连上的那个 IP。如果机器有内网和公网 IP,优先填对外能通的那个,省得后面证书报错或者路由不通。
[global]
secure_mode =tls
management_user =kaiwudb
rest_port =8080
kaiwudb_port =26257
grpc_port =27257
data_root =/app/kwdb/data/kaiwudb
[local]
node_addr =你的公网IP
5.3 清理多余段落 如果 deploy.cfg 里还有 [cluster]、ssh_*、[additional] 这些乱七八糟的段落,单机部署的话,我建议统统删掉或者注释掉,只保留:
这样跑 ./deploy.sh install --single 的时候,脚本才不会傻乎乎地去检查什么远程节点。
6. 一键安装
6.1 添加执行权限
6.2 执行单机安装 ./deploy.sh install --single
安装跑完之后,别急着庆祝。我建议立刻刷新一下 systemd 并把服务拉起来,不然有时候会遇到'服务是有了,但状态还是 inactive'的尴尬情况:
sudo systemctl daemon-reload
sudo systemctl enable --now kaiwudb
创建好 kaiwudb 的 systemd 服务。
生成几个运维用的脚本(像 kw-status.sh / kw-sql.sh 这些,看版本可能有差异)。
在安装目录下生成日志文件夹(万一报错了,第一时间去看日志)。
7. 验货环节
7.1 检查服务状态 sudo systemctl status kaiwudb --no-pager
要是看到状态是 inactive (dead),别慌,先试着救一下:
sudo systemctl daemon-reload
sudo systemctl enable --now kaiwudb
sudo systemctl status kaiwudb --no-pager
sudo journalctl -u kaiwudb -n200 --no-pager
7.2 检查端口监听 sudo ss -tulnp | egrep '(:26257|:8080)\b' || true
7.3 连接数据库 ls -al | egrep 'kw-(sql|status)\.sh' || true
./kw-status.sh || true
./kw-sql.sh || true
要是没有 kw-sql.sh,那就用 kwbase 客户端硬连(注意 TLS 模式得带上证书目录):
sudo /usr/local/kaiwudb/bin/kwbase sql --certs-dir=/etc/kaiwudb/certs --host=127.0.0.1:26257
如果你不加 sudo 报错 permission denied(读不到 /etc/kaiwudb/certs/*.key),那说明证书权限管得严,这是好事。想解决的话:
快速法:像上面一样加 sudo。
规范法:单独搞个'客户端证书目录',把证书和私钥拷出来,把权限理顺了再用。
7.4 最小化冒烟测试 这一步咱们不整复杂的,就为了验证一句:'这数据库确实能用'。
CREATE DATABASE IF NOT EXISTS demo;
CREATE TABLE IF NOT EXISTS demo.t_kv (
id INT PRIMARY KEY ,
v VARCHAR (64 )
);
INSERT INTO demo.t_kv (id, v) VALUES (1 , 'hello-kwdb' );
SELECT * FROM demo.t_kv;
8. 踩坑实录 为了让大家少走弯路,我把这次部署过程中遇到的、或者大家容易遇到的坑都整理出来了,按'现象 → 定位 → 解决 → 验证'的套路来复盘。
8.1 坑 1:dpkg 安装半路夭折 现象 :运行 ./deploy.sh install --single 的时候,脚本报错说缺依赖,然后直接退出,或者 dpkg 报了一堆错。
sudo apt update
sudo apt install -y libprotobuf23 squashfs-tools libgflags2.2
sudo apt --fix-broken install -y
sudo dpkg --configure -a
dpkg -l | grep -E 'libprotobuf23|squashfs-tools'
./deploy.sh install --single
8.2 坑 2:服务 inactive 现象 :脚本明明说安装成功了,结果一看 systemctl status kaiwudb 却是 inactive (dead),端口也没动静。
sudo systemctl daemon-reload
sudo systemctl enable --now kaiwudb
8.3 坑 3:node_addr 填错 现象 :服务跑得欢,端口也在监听,但死活从别的机器连不上,或者客户端握手失败。
去 deploy.cfg 里把 node_addr 改成对外能通的那个 IP。
检查防火墙是不是挡路了(测试环境可以先放开,生产环境按策略来)。
验证 :找台别的机器 telnet 一下端口试试(例如 telnet <ip> 26257 或 nc -vz <ip> 26257)。
8.4 坑 4:在 bash 里敲 SQL 现象 :直接在 shell 里输 select version();,报错 syntax error near unexpected token '('。
解决办法 :别闹,先进 SQL shell 再说话:
sudo /usr/local/kaiwudb/bin/kwbase sql --certs-dir=/etc/kaiwudb/certs --host=127.0.0.1:26257
8.5 坑 5:TLS 模式权限不足 现象 :运行 kwbase sql 的时候,提示读不到 /etc/kaiwudb/certs/*.key,权限不足。
sudo /usr/local/kaiwudb/bin/kwbase sql --certs-dir=/etc/kaiwudb/certs --host=127.0.0.1:26257
8.6 提醒:CPU 核数警告 现象 :安装或启动时提示:The number of CPU cores does not meet the requirement. KaiwuDB may running failed.
测试环境:只要能跑起来验收就行,别跑重负载任务。
生产环境:还是老老实实给够资源吧,至少 4C8G 起步,不然以后 OOM 了有的哭。
8.7 坑 6:磁盘满了或者权限不对 现象 :启动失败,日志里全是 permission denied 或者 no space left on device。
检查 data_root 目录权限对不对。
看看磁盘是不是满了,赶紧清理或者挂个大点的盘。
sudo systemctl restart kaiwudb
sudo systemctl status kaiwudb --no-pager
9. 进阶玩法:简单测测性能 装都装好了,光看个版本号多没劲。咱们在'安装成功'的基础上,再做两个小实验,把'能跑通、能解释、能复现'这个闭环给扣上。
9.1 核心特性体验:TLS 安全模式 这次咱们配的是 secure_mode=tls,连接的时候也确实碰到了证书权限的问题。这其实是个好现象,说明安全模式不是摆设。它涉及证书生成、存放位置以及最小权限访问策略。
服务端证书一般在:/etc/kaiwudb/certs
TLS 下连 SQL 的最短姿势:
sudo /usr/local/kaiwudb/bin/kwbase sql --certs-dir=/etc/kaiwudb/certs --host=127.0.0.1:26257
如果不加 sudo 就报权限错误,说明私钥权限管得严,这是对的。
9.2 读写性能实测 咱们不做复杂的压测,就做一个'讲道理'的基线测试:同一台机器、同一张表、同一批数据。资源有限,咱们就先测个 1 万行,别把机器跑崩了。
cat <<'SQL' | sudo /usr/local/kaiwudb/bin/kwbase sql --certs-dir=/etc/kaiwudb/certs --host=127.0.0.1:26257
create database if not exists bench;
create table if not exists bench.t_write (
ts timestamp,
dev varchar(32),
v1 double precision,
v2 double precision
);
SQL
N=10000
(echo "begin;"
for i in $(seq 1 "$N " ); do
echo "insert into bench.t_write values (now(), 'dev-01', $i , $i );"
done
echo "commit;" ) | time sudo /usr/local/kaiwudb/bin/kwbase sql --certs-dir=/etc/kaiwudb/certs --host=127.0.0.1:26257
cat <<'SQL' | time sudo /usr/local/kaiwudb/bin/kwbase sql --certs-dir=/etc/kaiwudb/certs --host=127.0.0.1:26257
select count(*) from bench.t_write;
select count(*) from bench.t_write where dev='dev-01' ;
SQL
写入侧:事务提交秒级搞定,单条 INSERT 也是微秒级的,说明单机写入链路没毛病,响应挺快。
读取侧:count(*) 毫秒级返回,结果也是对的,作为基线测试很合格。
9.3 索引与执行计划 光测个 count(*) 没啥意思,咱们来点稍微高级的:看看加不加索引到底有多大区别。
cat <<'SQL' | sudo /usr/local/kaiwudb/bin/kwbase sql --certs-dir=/etc/kaiwudb/certs --host=127.0.0.1:26257
create index if not exists idx_t_write_dev on bench.t_write (dev);
SQL
for i in $(seq 1 5); do
cat <<'SQL' | time sudo /usr/local/kaiwudb/bin/kwbase sql --certs-dir=/etc/kaiwudb/certs --host=127.0.0.1:26257
select count(*) from bench.t_write where dev='dev-01' ;
SQL
done
cat <<'SQL' | sudo /usr/local/kaiwudb/bin/kwbase sql --certs-dir=/etc/kaiwudb/certs --host=127.0.0.1:26257
explain analyze select count(*) from bench.t_write where dev='dev-01' ;
SQL
explain analyze 能打出执行计划,这一步很关键。它让'快'变得有理有据——你能看到到底有没有走索引,扫描了多少行,每一步花了多久。以后要深入分析性能,这就得是常备技能了。
9.4 稳定性实测:重启大法 sudo systemctl restart kaiwudb
sudo systemctl status kaiwudb --no-pager
sudo ss -tulnp | egrep '(:26257|:8080)\b' || true
cat <<'SQL' | sudo /usr/local/kaiwudb/bin/kwbase sql --certs-dir=/etc/kaiwudb/certs --host=127.0.0.1:26257
select count(*) from bench.t_write;
SQL
如果数据还在,恭喜你,至少'安装 → 启动 → 写入 → 重启 → 数据持久化'这条路是通的。
10. 总结
单机安装搞定 :Ubuntu 22.04 + KaiwuDB 3.1.0(TLS 模式),服务起了,端口通了。
踩坑闭环 :依赖缺失(libgflags2.2)知道咋补了;服务 inactive 知道咋救了;TLS 证书权限也知道咋绕过了。
最小可用验证 :建库、建表、写入、查询、重启,这一套流程全通。
性能基线建立 :1 万行数据量下的写入和查询基线有了,还通过索引和 explain analyze 把性能分析的架子搭起来了。
相关免费在线工具 Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
Markdown转HTML 将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
HTML转Markdown 将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
JSON 压缩 通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
JSON美化和格式化 将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online