Миграция между экземплярами в средах S3
В этой теме подробно описывается процесс резервного копирования коллекции из одного экземпляра Milvus и ее восстановления в другом экземпляре, причем каждый экземпляр использует разные хранилища объектов.
Обзор
На приведенной ниже диаграмме показан процесс резервного копирования и восстановления с использованием различных объектных хранилищ.
multi-storage-backup-and-restore.png
Предположим, что у нас есть два экземпляра Milvus, milvus_A
и milvus_B
, использующие разные хранилища объектов. В этом примере нам необходимо выполнить следующие задачи:
Создать резервную копию (my_backup) для коллекции
coll
вbucket_A
объектного хранилищаmilvus_A
.Перенести резервную копию my_backup на
bucket_B
изmilvus_B
'объектного хранилища.
В bucket_B
выполните восстановление из резервной копии и назовите восстановленную коллекцию coll_bak.
Предварительные условия
Убедитесь, что инструмент milvus-backup установлен.
Ознакомьтесь с настройками объектного хранилища Milvus. Подробнее см. в разделе "Объектное хранилище".
Резервное копирование коллекции из milvus_A
Шаг 1: Подготовьте конфигурацию
Перейдите в каталог проекта milvus-backup и создайте каталог с именем configs:
mkdir configs
cd configs
Загрузите резервный файл конфигурации backup.yaml
:
wget https://raw.githubusercontent.com/zilliztech/milvus-backup/main/configs/backup.yaml
Структура файла выглядит следующим образом:
├── configs
│ └── backup.yaml
├── milvus-backup
└── README.md
Шаг 2: Редактирование файла конфигурации
Измените файл backup.yaml
, чтобы установить соответствующие конфигурации для milvus_A:
Connection configs
# milvus proxy address, compatible to milvus.yaml milvus: address: milvus_A port: 19530 authorizationEnabled: false # tls mode values [0, 1, 2] # 0 is close, 1 is one-way authentication, 2 is two-way authentication. tlsMode: 0 user: "root" password: "Milvus"
milvus.address
: IP-адрес или имя хоста сервера milvus_A.milvus.port
: TCP-порт, на котором прослушивается сервер Milvus (по умолчанию 19530).
Конфигурации хранилища (настройки MinIO/S3)
# Related configuration of minio, which is responsible for data persistence for Milvus. minio: # cloudProvider: "minio" # deprecated use storageType instead storageType: "minio" # support storage type: local, minio, s3, aws, gcp, ali(aliyun), azure, tc(tencent) address: minio_A # Address of MinIO/S3 port: 9000 # Port of MinIO/S3 accessKeyID: minioadmin # accessKeyID of MinIO/S3 secretAccessKey: minioadmin # MinIO/S3 encryption string useSSL: false # Access to MinIO/S3 with SSL useIAM: false iamEndpoint: "" bucketName: "bucket_A" # Milvus Bucket name in MinIO/S3, make it the same as your milvus instance rootPath: "files" # Milvus storage root path in MinIO/S3, make it the same as your milvus instance # only for azure backupAccessKeyID: minioadmin # accessKeyID of MinIO/S3 backupSecretAccessKey: minioadmin # MinIO/S3 encryption string backupBucketName: "bucket_A" # Bucket name to store backup data. Backup data will store to backupBucketName/backupRootPath backupRootPath: "backup" # Rootpath to store backup data. Backup data will store to backupBucketName/backupRootPath
minio.bucketName
: Имя ведра, используемого для хранения данных в milvus_A. В данном примере установлено значениеbucket_A
.minio.rootPath
: Корневой путь внутри ведра, где хранятся данные из milvus_A. В данном примере установлено значениеfiles
.minio.backupBucketName
: Имя ведра, используемого для хранения резервных копий. В данном примере установлено значениеbucket_A
.minio.backupRootPath
: Корневой путь в ведре, предназначенном для хранения файлов резервных копийmilvus_B
. В данном примере установлено значениеbackup
.
Шаг 3: Создание резервной копии
После сохранения файла backup.yaml создайте резервную копию с именем my_backup
:
./milvus-backup create -c coll -n my_backup
Эта команда создает резервную копию bucket_A/backup/my_backup
в объектном хранилище milvus_A
.
Вручную перенесите резервную копию на milvus_B
Поскольку milvus_A
и milvus_B
используют разные объектные хранилища, вам нужно вручную загрузить резервную копию из хранилища milvus_A и выгрузить ее в хранилищеmilvus_B
.
Использование консоли MinIO
Войдите в консоль MinIO.
Найдите ведро, указанное в minio.address для milvus_A.
Выберите файлы резервных копий в этом ведре.
Нажмите Download, чтобы загрузить файлы на свой компьютер.
Использование клиента mc
В качестве альтернативы можно использовать клиент mc для загрузки файлов резервных копий:
- Настройте хост MinIO:
# configure a Minio host
mc alias set my_minio https://<minio_endpoint> <accessKey> <secretKey>
- Список доступных ведер:
# List the available buckets
mc ls my_minio
- Загрузите ведро рекурсивно:
# Download a bucket recursively
mc cp --recursive my_minio/<your-bucket-path> <local_dir_path>
После загрузки файлов резервных копий их можно загрузить в хранилище объектов, используемое milvus_B
, для последующего восстановления. Кроме того, можно загрузить резервную копию в Zilliz Cloud, чтобы создать управляемую векторную базу данных с вашими данными. Подробности см. в разделе Миграция из Milvus в Zilliz Cloud.
Восстановление из резервной копии на milvus_B
Шаг 1: Настройте параметры восстановления
Повторите шаг 2, чтобы изменить конфигурацию для восстановления на milvus_B
, убедившись, что minio.bucketName
установлен на bucket_B
.
Вот пример конфигурации:
# milvus proxy address, compatible to milvus.yaml
milvus:
address: milvus_B
port: 19530
authorizationEnabled: false
# tls mode values [0, 1, 2]
# 0 is close, 1 is one-way authentication, 2 is two-way authentication.
tlsMode: 0
user: "root"
password: "Milvus"
# Related configuration of minio, which is responsible for data persistence for Milvus.
minio:
# cloudProvider: "minio" # deprecated use storageType instead
storageType: "minio" # support storage type: local, minio, s3, aws, gcp, ali(aliyun), azure, tc(tencent)
address: minio_B # Address of MinIO/S3
port: 9000 # Port of MinIO/S3
accessKeyID: minioadmin # accessKeyID of MinIO/S3
secretAccessKey: minioadmin # MinIO/S3 encryption string
useSSL: false # Access to MinIO/S3 with SSL
useIAM: false
iamEndpoint: ""
bucketName: "bucket_B" # Milvus Bucket name in MinIO/S3, make it the same as your milvus instance
rootPath: "files" # Milvus storage root path in MinIO/S3, make it the same as your milvus instance
# only for azure
backupAccessKeyID: minioadmin # accessKeyID of MinIO/S3
backupSecretAccessKey: minioadmin # MinIO/S3 encryption string
backupBucketName: "bucket_B" # Bucket name to store backup data. Backup data will store to backupBucketName/backupRootPath
backupRootPath: "backup" # Rootpath to store backup data. Backup data will store to backupBucketName/backupRootPath
Шаг 2: Восстановление из резервной копии
Восстановите резервную копию на milvus_B
:
./milvus-backup restore -c coll -n my_backup -s _bak
Эта команда восстанавливает резервную копию в новую коллекцию с именем coll_bak вmilvus_B
, с данными, хранящимися в bucket_B/files/insert_log/[ID of new collection]
в хранилище объектов milvus_B
.