← Back to skills
extension
Category: Development & EngineeringAPI key requirement unconfirmed

seekdb 部署助手

在 Windows(WSL2) 或 Linux 上部署 seekdb 单机实例,并提取遥测 ID(telemetry content.id)。当用户要安装/启动 seekdb、配置 Docker 镜像源、排查 WSL2 安装失败、找不到 telemetry.json、或需要连接 seekdb 执行 SQL 时使用。

personAuthor: skeplogohubOpenAPI

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 结果
<!-- OB-S:MtXCcum3MQf92CCKZGNPzw -->