Резервное копирование и восстановление данных с помощью API
Milvus Backup предоставляет функции резервного копирования и восстановления данных для обеспечения безопасности ваших данных Milvus.
Получение Milvus Backup
Вы можете загрузить скомпилированный двоичный файл или собрать его из исходных текстов.
Чтобы загрузить скомпилированный двоичный файл, перейдите на страницу релиза, где вы найдете все официальные релизы. Помните, что всегда используйте двоичные файлы из релиза, помеченного как Latest.
Чтобы скомпилировать из исходников, сделайте следующее:
git clone git@github.com:zilliztech/milvus-backup.git
go get
go build
Подготовьте конфигурационный файл
Скачайте пример конфигурационного файла и измените его в соответствии с вашими потребностями.
Затем создайте папку рядом с загруженным или собранным двоичным файлом Milvus Backup, назовите ее configs
, а файл конфигурации поместите в папку configs
.
Структура папки должна быть похожа на следующую:
workspace
├── milvus-backup
└── configs
└── backup.yaml
Поскольку Milvus Backup не может создавать резервные копии данных по локальному пути, при настройке файла конфигурации убедитесь, что настройки Minio верны.
Имя ведра Minio по умолчанию зависит от способа установки Milvus. При внесении изменений в настройки Minio руководствуйтесь следующей таблицей.
поле | Docker Compose | Helm / Milvus Operator |
---|---|---|
bucketName | a-bucket | milvus-bucket |
rootPath | файлы | файл |
Запустите сервер API
Затем вы можете запустить сервер API следующим образом:
./milvus-backup server
По умолчанию API-сервер прослушивает порт 8080. Вы можете изменить это, запустив его с флагом -p
. Чтобы запустить сервер API, прослушивающий порт 443, сделайте следующее:
./milvus-backup server -p 443
Вы можете получить доступ к пользовательскому интерфейсу Swagger, используя http://localhost:
Подготовьте данные
Если вы запустили пустой локальный экземпляр Milvus, прослушивающий порт по умолчанию 19530, используйте примеры сценариев Python для генерации некоторых данных в вашем экземпляре. Не стесняйтесь вносить необходимые изменения в скрипты в соответствии с вашими потребностями.
Получите сценарии. Затем запустите скрипты для генерации данных. Убедитесь, что PyMilvus, официальный Milvus Python SDK, установлен.
python example/prepare_data.py
Этот шаг необязателен. Если вы его пропустите, убедитесь, что в вашем экземпляре Milvus уже есть данные.
Резервное копирование данных
Обратите внимание, что запуск Milvus Backup на экземпляре Milvus обычно не влияет на работу экземпляра. Ваш экземпляр Milvus будет полностью функционировать во время резервного копирования или восстановления.
Выполните следующую команду для создания резервной копии. При необходимости измените адреса collection_names
и backup_name
.
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"
]
}'
После выполнения команды вы можете перечислить резервные копии в ведро, указанное в настройках Minio, следующим образом:
curl --location --request GET 'http://localhost:8080/api/v1/list' \
--header 'Content-Type: application/json'
А скачать файлы резервных копий можно следующим образом:
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'
Во время выполнения вышеуказанной команды измените backup_id
и backup_name
на те, которые возвращает API list.
Теперь вы можете сохранить файлы резервных копий в безопасном месте для восстановления в будущем или загрузить их в Zilliz Cloud для создания управляемой векторной базы данных с вашими данными. Подробности см. в разделе Миграция с Milvus на Zilliz Cloud.
Восстановление данных
Вы можете вызвать команду restore API с параметром collection_suffix
, чтобы создать новую коллекцию, восстановив данные из резервной копии. При необходимости измените параметры collection_names
и backup_name
.
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"
}'
Параметр collection_suffix
позволяет задать суффикс для создаваемой новой коллекции. Приведенная выше команда создаст новую коллекцию под названием hello_milvus_recover в вашем экземпляре Milvus.
Если вы предпочитаете восстановить резервную копию коллекции без изменения ее имени, отбросьте коллекцию перед ее восстановлением из резервной копии. Теперь вы можете очистить данные, сгенерированные в Prepare data, выполнив следующую команду.
python example/clean_data.py
Затем выполните следующую команду для восстановления данных из резервной копии.
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"
}'
Процесс восстановления может занять много времени в зависимости от размера восстанавливаемых данных. Поэтому все задачи восстановления выполняются асинхронно. Состояние задачи восстановления можно проверить, выполнив команду:
curl --location --request GET 'http://localhost:8080/api/v1/get_restore?id=<test_restore_id>' \
--header 'Content-Type: application/json'
Не забудьте изменить адрес test_restore_id
на тот, который был восстановлен с помощью API восстановления.
Проверка восстановленных данных
После завершения восстановления можно проверить восстановленные данные, проиндексировав восстановленную коллекцию следующим образом:
python example/verify_data.py
Обратите внимание, что в приведенном выше сценарии предполагается, что вы выполнили команду restore
с флагом -s
и суффикс установлен на -recover
. Не стесняйтесь вносить необходимые изменения в сценарий в соответствии с вашими потребностями.