You need to enable JavaScript to run this app.
文档中心
向量数据库VikingDB

向量数据库VikingDB

复制全文
下载 pdf
最佳实践
开源向云上版本数据迁移
复制全文
下载 pdf
开源向云上版本数据迁移

限制因素:
本文档仅限于迁移 viking://resources 等公共目录数据或本人(user) 目录下的私有数据;
迁移的数据规模受限于云上版本的数据导入限制,建议单次迁移的数据量不超过 100MB。
本地源端创建的 user id 必须为 default

环境变量准备

后续命令默认使用以下环境变量:

# 需要迁移的服务地址
export SOURCE_URL="http://localhost:1933"
# serverless 服务地址
export TARGET_URL="https://api.vikingdb.cn-beijing.volces.com/openviking"

# 源端使用 account API Key。
export SOURCE_API_KEY="<source-account-admin-key>"

# 目标端使用 account API Key。
export TARGET_API_KEY="<remote-account-admin-key>"

export EXPORT_DIR="./exports"
mkdir -p "${EXPORT_DIR}"

1、全量迁移

步骤1:从源端备份全部数据

curl -sS -X POST "${SOURCE_URL}/api/v1/pack/backup" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: ${SOURCE_API_KEY}" \
  -d '{"include_vectors": false}' \
  --output "${EXPORT_DIR}/openviking-local.ovpack"

说明:使用 --output 参数后,响应内容直接写入文件,终端无返回。

步骤2:上传备份包到目标端

TARGET_TEMP_FILE_ID=$(
  curl -sS -X POST "${TARGET_URL}/api/v1/resources/temp_upload" \
    -H "X-API-Key: ${TARGET_API_KEY}" \
    -F "file=@${EXPORT_DIR}/openviking-local.ovpack" \
  | jq -r ".result.temp_file_id"
)

echo "${TARGET_TEMP_FILE_ID}"

返回示例:

upload_xxxxxxxxxxxxxxxxxxxxxxxx.ovpack

说明:使用 jq 解析后,终端只会显示提取的 temp_file_id。如果没有安装 jq,可以直接查看上传接口响应 JSON,手动取出 result.temp_file_id 字段。

步骤3:恢复数据到目标端

curl -sS -X POST "${TARGET_URL}/api/v1/pack/restore" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: ${TARGET_API_KEY}" \
  -d "{
    \"temp_file_id\": \"${TARGET_TEMP_FILE_ID}\",
    \"on_conflict\": \"overwrite\"
  }"

返回示例:

{"status":"ok","result":{"uri":"viking://"},"error":null,"telemetry":null,"profile":null}

2. 局部迁移

适用于只迁移某个目录,例如:

viking://resources/my-project

步骤1:从源端导出目录

curl -sS -X POST "${SOURCE_URL}/api/v1/pack/export" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: ${SOURCE_API_KEY}" \
  -d '{
    "uri": "viking://resources/my-project",
    "include_vectors": false
  }' \
  --output "${EXPORT_DIR}/my-project.ovpack"

说明:使用 --output 参数后,响应内容直接写入文件,终端无返回。

步骤2:上传局部包到目标端

TARGET_TEMP_FILE_ID=$(
  curl -sS -X POST "${TARGET_URL}/api/v1/resources/temp_upload" \
    -H "X-API-Key: ${TARGET_API_KEY}" \
    -F "file=@${EXPORT_DIR}/my-project.ovpack" \
  | jq -r ".result.temp_file_id"
)

echo "${TARGET_TEMP_FILE_ID}"

返回示例:

upload_xxxxxxxxxxxxxxxxxxxxxxxx.ovpack

说明:使用 jq 解析后,终端只会显示提取的 temp_file_id。如果没有安装 jq,可以直接查看上传接口响应 JSON,手动取出 result.temp_file_id 字段。

步骤3:导入到目标端

curl -sS -X POST "${TARGET_URL}/api/v1/pack/import" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: ${TARGET_API_KEY}" \
  -d "{
    \"temp_file_id\": \"${TARGET_TEMP_FILE_ID}\",
    \"parent\": \"viking://resources/\",
    \"on_conflict\": \"overwrite\"
  }"

返回示例:

{"status":"ok","result":{"uri":"viking://resources/my-project"},"error":null,"telemetry":null,"profile":null}

注意parent 必须是导出目录的父目录。例如导出 viking://resources//my-project 时,parent 应为 viking://resources

最近更新时间:2026.06.05 14:24:31
这个页面对您有帮助吗?
有用
有用
无用
无用