从 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.localFilemeta.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.akMilvus 2.x 存储的访问密钥。 target.remote.skMilvus 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.usernameMilvus 2.x 服务器的用户名。如果 Milvus 服务器启用了用户身份验证,则需要使用此参数。有关详细信息,请参阅启用身份验证。 target.milvus2x.passwordMilvus 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()。