API를 사용한 데이터 백업 및 복원
밀버스 백업은 데이터 백업 및 복원 기능을 제공하여 밀버스 데이터의 보안을 보장합니다.
Milvus 백업 받기
컴파일된 바이너리를 다운로드하거나 소스에서 빌드할 수 있습니다.
컴파일된 바이너리를 다운로드하려면 모든 공식 릴리스를 찾을 수 있는 릴리스 페이지로 이동하세요. 항상 최신으로 표시된 릴리즈의 바이너리를 사용하세요.
소스에서 컴파일하려면 다음과 같이 하세요:
git clone git@github.com:zilliztech/milvus-backup.git
go get
go build
구성 파일 준비
예제 구성 파일을 다운로드하여 필요에 맞게 조정합니다.
그런 다음 다운로드하거나 빌드한 Milvus 백업 바이너리 옆에 폴더를 만들고 폴더 이름을 configs
으로 지정한 다음 configs
폴더 안에 구성 파일을 넣습니다.
폴더 구조는 다음과 비슷해야 합니다:
작업 공간 ├── milvus-backup └── configs └── backup.yaml
Milvus 백업은 데이터를 로컬 경로에 백업할 수 없으므로 구성 파일을 조정할 때 Minio 설정이 올바른지 확인하세요.
기본 Minio 버킷의 이름은 Milvus 설치 방식에 따라 다릅니다. Minio 설정을 변경할 때는 다음 표를 참조하세요.
필드 | 도커 컴포즈 | 헬름/밀버스 오퍼레이터 |
---|---|---|
bucketName | a-bucket | 밀버스-버킷 |
rootPath | 파일 | 파일 |
API 서버 시작
그런 다음 다음과 같이 API 서버를 시작할 수 있습니다:
./milvus-backup server
API 서버는 기본적으로 포트 8080에서 수신 대기합니다. -p
플래그를 사용하여 실행하여 변경할 수 있습니다. 포트 443에서 수신 대기 중인 API 서버를 시작하려면 다음과 같이 하세요:
./milvus-backup server -p 443
http://localhost:
데이터 준비
기본 포트 19530에서 수신 대기 중인 빈 로컬 Milvus 인스턴스를 실행하는 경우, 예제 Python 스크립트를 사용하여 인스턴스에서 일부 데이터를 생성하세요. 필요에 따라 스크립트를 자유롭게 변경할 수 있습니다.
스크립트를 받습니다. 그런 다음 스크립트를 실행하여 데이터를 생성합니다. 공식 Milvus Python SDK인 PyMilvus가 설치되어 있는지 확인합니다.
python example/prepare_data.py
이 단계는 선택 사항입니다. 이 단계를 건너뛰는 경우 Milvus 인스턴스에 이미 일부 데이터가 있는지 확인하세요.
데이터 백업
Milvus 인스턴스에 대해 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에서 반환한 것으로 변경합니다.
이제 백업 파일을 안전한 곳에 저장하여 나중에 복원할 수 있도록 하거나 질리즈 클라우드에 업로드하여 데이터로 관리형 벡터 데이터베이스를 생성할 수 있습니다. 자세한 내용은 밀버스에서 질리즈 클라우드로 마이그레이션하기를 참조하세요.
데이터 복원
collection_suffix
옵션으로 복원 API 명령을 호출하여 백업에서 데이터를 복원하여 새 컬렉션을 만들 수 있습니다. 필요한 경우 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
옵션을 사용하면 새로 생성할 컬렉션의 접미사를 설정할 수 있습니다. 위의 명령은 Milvus 인스턴스에 hello_milvus_recover라는 새 컬렉션을 만듭니다.
백업된 컬렉션의 이름을 변경하지 않고 복원하려면 백업에서 복원하기 전에 컬렉션을 삭제하세요. 이제 다음 명령을 실행하여 데이터 준비에서 생성된 데이터를 정리할 수 있습니다.
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
위 스크립트는 -s
플래그와 함께 restore
명령을 실행하고 접미사가 -recover
로 설정되어 있다고 가정합니다. 필요에 따라 스크립트를 자유롭게 변경할 수 있습니다.