Sauvegarde et restauration de données à l'aide d'API
Milvus Backup propose des fonctions de sauvegarde et de restauration des données pour garantir la sécurité de vos données Milvus.
Obtenir Milvus Backup
Vous pouvez télécharger le binaire compilé ou construire à partir de la source.
Pour télécharger le binaire compilé, rendez-vous sur la page des versions, où vous trouverez toutes les versions officielles. N'oubliez pas de toujours utiliser les binaires de la version marquée comme la plus récente.
Pour compiler à partir des sources, procédez comme suit :
git clone git@github.com:zilliztech/milvus-backup.git
go get
go build
Préparer le fichier de configuration
Téléchargez le fichier de configuration d'exemple et adaptez-le à vos besoins.
Créez ensuite un dossier à côté du binaire Milvus Backup téléchargé ou construit, nommez le dossier configs
et placez le fichier de configuration dans le dossier configs
.
La structure de votre dossier doit être similaire à la suivante :
workspace ├── milvus-backup └── configs └── backup.yaml
Milvus Backup ne pouvant pas sauvegarder vos données sur un chemin local, assurez-vous que les paramètres Minio sont corrects lorsque vous adaptez le fichier de configuration.
Le nom du seau Minio par défaut varie en fonction de la manière dont vous installez Milvus. Lorsque vous modifiez les paramètres Minio, reportez-vous au tableau suivant.
champ | Docker Compose | Helm / Milvus Operator |
---|---|---|
bucketName | a-bucket | Milvus-bucket |
rootPath | fichiers | fichier |
Démarrer le serveur API
Vous pouvez ensuite démarrer le serveur API comme suit :
./milvus-backup server
Par défaut, le serveur API écoute sur le port 8080. Vous pouvez le modifier en l'exécutant avec l'option -p
. Pour démarrer le serveur API qui écoute sur le port 443, procédez comme suit :
./milvus-backup server -p 443
Vous pouvez accéder à l'interface utilisateur Swagger en utilisant http://localhost :
Préparer les données
Si vous exécutez une instance locale vide de Milvus écoutant sur le port par défaut 19530, utilisez les scripts Python d'exemple pour générer des données dans votre instance. N'hésitez pas à apporter les modifications nécessaires aux scripts pour les adapter à vos besoins.
Obtenez les scripts. Exécutez ensuite les scripts pour générer les données. Assurez-vous que PyMilvus, le SDK Python officiel de Milvus, a été installé.
python example/prepare_data.py
Cette étape est facultative. Si vous la sautez, assurez-vous que vous avez déjà des données dans votre instance Milvus.
Sauvegarder les données
Notez que l'exécution de Milvus Backup sur une instance Milvus n'affectera normalement pas le fonctionnement de l'instance. Votre instance Milvus est entièrement fonctionnelle pendant la sauvegarde ou la restauration.
Exécuter la commande suivante pour créer une sauvegarde. Modifiez collection_names
et backup_name
si nécessaire.
curl --location --request POST 'http://localhost:8080/api/v1/create' \
--header 'Content-Type: application/json' \
--data-raw '{
"async": true,
"backup_name": "my_backup",
"collection_names": [
"hello_milvus"
]
}'
Une fois la commande exécutée, vous pouvez lister les sauvegardes dans le seau spécifié dans les paramètres Minio comme suit :
curl --location --request GET 'http://localhost:8080/api/v1/list' \
--header 'Content-Type: application/json'
Et télécharger les fichiers de sauvegarde comme suit :
curl --location --request GET 'http://localhost:8080/api/v1/get_backup?backup_id=<test_backup_id>&backup_name=my_backup' \
--header 'Content-Type: application/json'
Lors de l'exécution de la commande ci-dessus, remplacez backup_id
et backup_name
par ceux renvoyés par l'API de liste.
Vous pouvez maintenant enregistrer les fichiers de sauvegarde dans un endroit sûr pour les restaurer ultérieurement, ou les télécharger vers Zilliz Cloud pour créer une base de données vectorielle gérée avec vos données. Pour plus de détails, reportez-vous à la section Migrer de Milvus vers Zilliz Cloud.
Restauration des données
Vous pouvez appeler la commande API restore avec une option collection_suffix
pour créer une nouvelle collection en restaurant les données de la sauvegarde. Modifiez collection_names
et backup_name
si nécessaire.
curl --location --request POST 'http://localhost:8080/api/v1/restore' \
--header 'Content-Type: application/json' \
--data-raw '{
"async": true,
"collection_names": [
"hello_milvus"
],
"collection_suffix": "_recover",
"backup_name":"my_backup"
}'
L'option collection_suffix
vous permet de définir un suffixe pour la nouvelle collection à créer. La commande ci-dessus créera une nouvelle collection appelée hello_milvus_recover dans votre instance Milvus.
Si vous préférez restaurer la collection sauvegardée sans changer son nom, supprimez la collection avant de la restaurer à partir de la sauvegarde. Vous pouvez maintenant nettoyer les données générées dans Prepare data en exécutant la commande suivante.
python example/clean_data.py
Exécutez ensuite la commande suivante pour restaurer les données à partir de la sauvegarde.
curl --location --request POST 'http://localhost:8080/api/v1/restore' \
--header 'Content-Type: application/json' \
--data-raw '{
"async": true,
"collection_names": [
"hello_milvus"
],
"collection_suffix": "",
"backup_name":"my_backup"
}'
Le processus de restauration peut prendre du temps en fonction de la taille des données à restaurer. C'est pourquoi toutes les tâches de restauration sont exécutées de manière asynchrone. Vous pouvez vérifier l'état d'une tâche de restauration en exécutant la commande suivante :
curl --location --request GET 'http://localhost:8080/api/v1/get_restore?id=<test_restore_id>' \
--header 'Content-Type: application/json'
N'oubliez pas de remplacer test_restore_id
par celui qui a été restauré par l'API de restauration.
Vérification des données restaurées
Une fois la restauration terminée, vous pouvez vérifier les données restaurées en indexant la collection restaurée comme suit :
python example/verify_data.py
Notez que le script ci-dessus suppose que vous avez exécuté la commande restore
avec l'indicateur -s
et que le suffixe est défini sur -recover
. N'hésitez pas à modifier le script en fonction de vos besoins.