seekdb 部署助手
seekdb 是 OceanBase 开源的单机 AI 原生数据库,只提供 Linux 版本(无 Windows 原生包)。 本 Skill 覆盖从零到「能执行 SQL + 拿到遥测 ID」的完整路径,并收录了实际踩过的坑。
什么时候用
- 要在本机或服务器上跑一个 seekdb 实例
- 已经装了但
wsl/docker/seekdb起不来,需要定位原因 - 找不到
telemetry.json或取不到content.id - 需要连 seekdb 执行 SQL 验证实例健康
快速判断:你的环境适合哪种方式
| 环境 | 推荐方式 | 说明 | |---|---|---| | Linux (Ubuntu 20.04/22.04) | Docker 或 deb 包 | 最简单 | | Windows 10/11 | WSL2 + Ubuntu 22.04 + Docker | Windows 无原生版 | | CentOS 7 | 只能用 Docker | 官方无 el7 的 seekdb 包 | | 已有 VMware 虚机 | 建议改用 WSL2 | 省资源,文件互通 |
⚠️ seekdb 的 RPM 只针对 el9 构建(glibc 2.34)。CentOS 7 是 glibc 2.17,RPM 装不上,只能走 Docker。
标准流程(WSL2 路线)
第 1 步:安装 WSL2 运行时
# 管理员 PowerShell
winget install --id Microsoft.WSL --exact --accept-package-agreements
关键:
wsl --install在某些环境下只打印 help 文本而不报错,这是 Store 分发通道不可用的表现。 直接装Microsoft.WSL包更可靠。
第 2 步:装 Ubuntu(rootfs 导入法,最稳)
wsl --install -d Ubuntu-22.04 失败时,用官方 rootfs 手动导入:
# 下载(国内建议用清华镜像,直连快,不要挂代理)
# https://mirrors.tuna.tsinghua.edu.cn/ubuntu-cloud-images/wsl/jammy/current/ubuntu-jammy-wsl-amd64-ubuntu22.04lts.rootfs.tar.gz
wsl --import Ubuntu-22.04 C:\wsl\Ubuntu-22.04 "C:\wsl\<下载的文件名>.tar.gz" --version 2
wsl -d Ubuntu-22.04
导入后默认用户是 root,不需要设密码。
第 3 步:装 Docker 并启动 seekdb
# Ubuntu 内
sudo apt-get update && sudo apt-get install -y ca-certificates curl gnupg lsb-release
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg \
| sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" \
| sudo tee /etc/apt/sources.list.d/docker.list
sudo apt-get update && sudo apt-get install -y docker-ce docker-ce-cli containerd.io
# WSL 里没有 systemd 时用 service
sudo service docker start
# 配镜像加速(国内必需)
sudo tee /etc/docker/daemon.json > /dev/null <<'EOF'
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://mirror.ccs.tencentyun.com"
]
}
EOF
sudo service docker restart
# 启动 seekdb
sudo docker run -d --name seekdb --restart unless-stopped \
-p 2881:2881 -p 2886:2886 \
-e ROOT_PASSWORD='Seekdb@123' \
-e MEMORY_LIMIT=2G -e CPU_COUNT=2 \
-v seekdb_data:/var/lib/seekdb \
oceanbase/seekdb:latest
第 4 步:验证
sudo docker ps --filter name=seekdb
sudo docker exec seekdb mysql -h127.0.0.1 -P2881 -uroot -p'Seekdb@123' -e "select 1 as ok;"
返回 1 即成功。
第 5 步:取遥测 ID
sudo docker exec seekdb sh -c 'find /var/lib /etc -name "telemetry*.json" 2>/dev/null'
sudo docker exec seekdb python3 -c \
'import json;print(json.load(open("/var/lib/seekdb/run/telemetry.json"))["content"]["id"])'
高频坑
1. 数据目录版本差异
seekdb 镜像 1.4+ 用 /var/lib/seekdb,1.3.x 用 /var/lib/oceanbase。
挂错目录不会报错,只是数据不持久化、telemetry.json 可能找不到。
做法:两个目录都挂卷,或先 docker inspect 确认版本。
2. 重建容器会换掉遥测 ID
docker rm -f seekdb 后重新 run 会生成新的 telemetry.json,content.id 随之改变。
- 重启用
docker restart seekdb(ID 不变) - 停止用
docker stop seekdb(ID 不变) - 不要删容器
3. WSL 里没有 systemd
systemctl start docker 会失败,用 sudo service docker start。
想一劳永逸,在 /etc/wsl.conf 加:
[boot]
systemd=true
然后 Windows 侧 wsl --shutdown 重启。
4. 内存不足导致容器反复重启
MEMORY_LIMIT=2G 是 seekdb 自身的限制,宿主机还要跑系统。
在 %USERPROFILE%\.wslconfig 限制 WSL 资源:
[wsl2]
memory=8GB
processors=8
swap=4GB
改完必须 wsl --shutdown 才生效。
5. 下载慢:别挂代理
publicwsldistros.blob.core.windows.net(微软 Azure)和国内镜像站在国内本来就快。
挂代理反而绕道境外变慢。下载时切直连。
6. telemetry.json 字段可能与预期不符
开源版 telemetry.sh.template 生成的路径是 /etc/seekdb/telemetry.json,字段是 clusterId 而非 content.id。
脚本兜底逻辑:同时搜 telemetry*.json,依次尝试 content.id → content.clusterId → 顶层 clusterId。
连接与日常运维
# 连接
sudo docker exec -it seekdb mysql -h127.0.0.1 -P2881 -uroot -p'Seekdb@123'
# 查看日志
sudo docker logs --tail 50 seekdb
# 重启电脑后恢复
wsl -d Ubuntu-22.04
sudo service docker start
sudo docker start seekdb
版本与镜像源
| 来源 | 地址 |
|---|---|
| Docker Hub | oceanbase/seekdb |
| quay.io | quay.io/oceanbase/seekdb |
| ghcr.io | ghcr.io/oceanbase/seekdb |
| deb 包(Ubuntu 22.04) | mirrors.aliyun.com/oceanbase/community/stable/ubuntu/jammy/amd64/ |
| rpm 包(el9) | mirrors.aliyun.com/oceanbase/community/stable/el/9/x86_64/ |
验收清单
- [ ]
docker ps显示容器Up - [ ]
select 1返回1 - [ ] 已从容器内现读遥测 ID(不要手抄)
- [ ] 遥测 ID 格式为 36 位 UUID,含 4 个连字符
- [ ] 已截图保存
docker ps与 SQL 结果
微信扫一扫