Depuis Milvus 1.x
Ce guide fournit un processus complet, étape par étape, pour la migration des données de Milvus 1.x (y compris 0.9.x et supérieur) vers Milvus 2.x. En suivant ce guide, vous pourrez transférer efficacement vos données, en tirant parti des fonctionnalités avancées et des performances améliorées de Milvus 2.x.
Conditions préalables
- Versions du logiciel:
- Milvus source : 0.9.x à 1.x
- Milvus cible : 2.x
- Outils requis:
- Outil demigration Milvus. Pour plus de détails sur l'installation, voir Installer l'outil de migration.
Exportation des métadonnées de l'installation Milvus source
Pour préparer les données de migration pour Milvus 0.9.x à 1.x, arrêter l'installation Milvus source ou au moins cesser d'y effectuer des opérations DML.
Exporter les métadonnées de l'installation Milvus source vers
meta.json
.- Pour les installations utilisant MySQL comme backend, exécuter
./milvus-migration export -m "user:password@tcp(adderss)/milvus?charset=utf8mb4&parseTime=True&loc=Local" -o outputDir
- Pour les installations utilisant SQLite comme backend, exécuter
./milvus-migration export -s /milvus/db/meta.sqlite -o outputDir
Copiez le dossier
tables
de votre installation Milvus, puis déplacez les dossiersmeta.json
ettables
dans un dossier vide.Une fois cette étape terminée, la structure du dossier vide devrait ressembler à ceci :
migration_data ├── meta.json └── tables
Téléchargez le dossier préparé à l'étape précédente vers un bloc de stockage S3 ou utilisez directement ce dossier local dans la section suivante.
Configurer le fichier de migration
Enregistrez le fichier de configuration de l'exemple de migration sous migration.yaml
et modifiez les configurations en fonction de vos conditions réelles. Vous êtes libre de placer le fichier de configuration dans n'importe quel répertoire local.
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
Le tableau suivant décrit les paramètres du fichier de configuration de l'exemple. Pour une liste complète des configurations, reportez-vous à Milvus Migration : Milvus1.x à Milvus 2.x.
dumper
Paramètre Description du paramètre dumper.worker.limit
Concurrence des threads dumper. dumper.worker.workMode
Le mode opérationnel de la tâche de migration. Défini sur milvus1x
lors de la migration depuis Milvus 1.x.dumper.worker.reader.bufferSize
Taille de la mémoire tampon à lire à partir de Milvus 1.x dans chaque lot. Unité : KO. dumper.worker.writer.bufferSize
Taille de la mémoire tampon pour écrire dans Milvus 2.x dans chaque lot. Unité : Ko : KO. loader
Paramètre Description loader.worker.limit
Concurrence des threads du chargeur. meta
Paramètre Description meta.mode
Spécifie où le fichier meta meta.json est lu. Valeurs valides : local
,remote
,mysql
,sqlite
.meta.localFile
Chemin d'accès au répertoire local où se trouve le fichier meta.json
. Cette configuration n'est utilisée que lorsquemeta.mode
est défini surlocal
. Pour d'autres configurations méta, reportez-vous à README_1X.source
Paramètre Description source.mode
Spécifie l'endroit où les fichiers sources sont lus. Valeurs valides :
-local
: lit les fichiers à partir d'un disque local.
-remote
: lit les fichiers à partir d'un stockage distant.source.local.tablesDir
Chemin d'accès au répertoire où se trouvent les fichiers sources. Par exemple, /db/tables/
.target
Paramètre Description target.mode
Emplacement de stockage des fichiers vidés. Valeurs valides :
-local
: Stockage des fichiers vidés sur les disques locaux.
-remote
: Stockage des fichiers vidés sur le stockage d'objets.target.remote.outputDir
Chemin du répertoire de sortie dans le panier de stockage en nuage. target.remote.ak
Clé d'accès pour le stockage Milvus 2.x. target.remote.sk
Clé secrète pour le stockage Milvus 2.x. target.remote.cloud
Fournisseur de services de stockage en nuage. Exemples de valeurs : aws
,gcp
,azure
.target.remote.region
Région de stockage dans le nuage. Il peut s'agir de n'importe quelle valeur si vous utilisez MinIO local. target.remote.bucket
Nom du bac pour le stockage des données. La valeur doit être la même que la configuration dans Milvus 2.x. Pour plus d'informations, voir Configurations du système. target.remote.useIAM
Si un rôle IAM doit être utilisé pour la connexion. target.remote.checkBucket
Vérifier si le seau spécifié existe dans le stockage d'objets. target.milvus2x.endpoint
Adresse du serveur Milvus cible. target.milvus2x.username
Nom d'utilisateur pour le serveur Milvus 2.x. Ce paramètre est requis si l'authentification utilisateur est activée pour votre serveur Milvus. Pour plus d'informations, voir Activer l'authentification. target.milvus2x.password
Mot de passe pour le serveur Milvus 2.x. Ce paramètre est requis si l'authentification utilisateur est activée pour votre serveur Milvus. Pour plus d'informations, voir Activer l'authentification.
Démarrer la tâche de migration
Lancer la tâche de migration avec la commande suivante. Remplacez
{YourConfigFilePath}
par le répertoire local où se trouve le fichier de configurationmigration.yaml
../milvus-migration dump --config=/{YourConfigFilePath}/migration.yaml
La commande ci-dessus convertit les données source dans Milvus 1.x en fichiers NumPy, puis utilise l'opération bulkInsert pour écrire les données dans le seau cible.
Une fois les fichiers NumPy générés, importez-les dans Milvus 2.x à l'aide de la commande suivante. Remplacez
{YourConfigFilePath}
par le répertoire local où se trouve le fichier de configurationmigration.yaml
../milvus-migration load --config=/{YourConfigFilePath}/migration.yaml
Vérifier le résultat
Une fois la tâche de migration exécutée, vous pouvez effectuer des appels API ou utiliser Attu pour afficher le nombre d'entités migrées. Pour plus d'informations, reportez-vous à Attu et à get_collection_stats().