从 Milvus 1.x
本指南为从 Milvus 1.x(包括 0.9.x 及以上版本)向 Milvus 2.x 迁移数据提供了一个全面的、逐步的过程。
前提条件
- 软件版本:
- 源 Milvus:0.9.x 至 1.x
- 目标 Milvus: 2.x
- 所需工具
- Milvus-migration工具。有关安装细节,请参阅安装迁移工具。
导出源 Milvus 安装的元数据
要为 Milvus 0.9.x 至 1.x 准备迁移数据,请停止源 Milvus 或至少停止在源 Milvus 中执行任何 DML 操作。
将源 Milvus 安装的元数据导出到
meta.json
。- 对于使用 MySQL 作为后端的安装,运行
./milvus-migration export -m "user:password@tcp(adderss)/milvus?charset=utf8mb4&parseTime=True&loc=Local" -o outputDir
- 对于使用 SQLite 作为后端的安装,运行
./milvus-migration export -s /milvus/db/meta.sqlite -o outputDir
复制 Milvus 安装的
tables
文件夹,然后将meta.json
和tables
文件夹移动到一个空文件夹。完成此步骤后,空文件夹的结构应如下所示:
migration_data ├── meta.json └── tables
将上一步准备好的文件夹上传到 S3 块存储桶,或在下一节中直接使用该本地文件夹。
配置迁移文件
将示例迁移配置文件保存为migration.yaml
,然后根据实际情况修改配置。您可以将配置文件放在任何本地目录中。
dumper:
worker:
limit: 2
workMode: milvus1x
reader:
bufferSize: 1024
writer:
bufferSize: 1024
loader:
worker:
limit: 16
meta:
mode: local
localFile: /outputDir/test/meta.json
source:
mode: local
local:
tablesDir: /db/tables/
target:
mode: remote
remote:
outputDir: "migration/test/xx"
ak: xxxx
sk: xxxx
cloud: aws
region: us-west-2
bucket: xxxxx
useIAM: true
checkBucket: false
milvus2x:
endpoint: "{yourMilvus2_xServerAddress}:{port}"
username: xxxx
password: xxxx
下表描述了示例配置文件中的参数。有关配置的完整列表,请参阅Milvus 迁移:Milvus1.x 到 Milvus 2.x。
dumper
参数 参数 dumper.worker.limit
转存线程的并发量。 dumper.worker.workMode
迁移任务的运行模式。从 Milvus 1.x 迁移时设置为 milvus1x
。dumper.worker.reader.bufferSize
每批从 Milvus 1.x 读取的缓冲区大小。单位:KB:单位:KB。 dumper.worker.writer.bufferSize
每批写入 Milvus 2.x 的缓冲区大小。单位:KB:单位:KB。 loader
参数 说明 loader.worker.limit
加载器线程的并发量。 meta
参数 说明 meta.mode
指定从何处读取元文件 meta.json。有效值: local
,remote
,mysql
,sqlite
。meta.localFile
meta.json
文件所在的本地目录路径。此配置仅在meta.mode
设置为local
时使用。有关其他元配置,请参阅README_1X。source
参数 说明 source.mode
指定读取源文件的位置。有效值:
-local
: 从本地磁盘读取文件。
-remote
: 从远程存储器读取文件。source.local.tablesDir
源文件所在目录路径。例如: /db/tables/
。target
参数 说明 target.mode
转储文件的存储位置。有效值:
-local
: 将转储文件存储在本地磁盘上。
-remote
: 将转储文件存储在对象存储上。target.remote.outputDir
云存储桶中的输出目录路径。 target.remote.ak
Milvus 2.x 存储的访问密钥。 target.remote.sk
Milvus 2.x 存储的密钥。 target.remote.cloud
云存储服务提供商。示例值: aws
,gcp
,azure
。target.remote.region
云存储区域。如果使用本地 MinIO,它可以是任何值。 target.remote.bucket
用于存储数据的存储桶名称。该值必须与 Milvus 2.x 中的配置相同。更多信息,请参阅系统配置。 target.remote.useIAM
是否使用 IAM 角色进行连接。 target.remote.checkBucket
是否检查对象存储中是否存在指定的存储桶。 target.milvus2x.endpoint
目标 Milvus 服务器地址。 target.milvus2x.username
Milvus 2.x 服务器的用户名。如果 Milvus 服务器启用了用户身份验证,则需要使用此参数。有关详细信息,请参阅启用身份验证。 target.milvus2x.password
Milvus 2.x 服务器的密码。如果 Milvus 服务器启用了用户身份验证,则需要使用此参数。有关详细信息,请参阅启用身份验证。
启动迁移任务
使用以下命令启动迁移任务。将
{YourConfigFilePath}
替换为配置文件migration.yaml
所在的本地目录。./milvus-migration dump --config=/{YourConfigFilePath}/migration.yaml
上述命令将 Milvus 1.x 中的源数据转换为 NumPy 文件,然后使用bulkInsert操作将数据写入目标数据桶。
生成 NumPy 文件后,使用以下命令将这些文件导入 Milvus 2.x。将
{YourConfigFilePath}
替换为配置文件migration.yaml
所在的本地目录。./milvus-migration load --config=/{YourConfigFilePath}/migration.yaml
验证结果
迁移任务执行后,你可以调用 API 或使用 Attu 查看已迁移实体的数量。有关详细信息,请参阅Attu和get_collection_stats()。