하나의 버킷에 있는 인스턴스 간 마이그레이션(서로 다른 루트 경로)
이 주제에서는 각 인스턴스에 대해 서로 다른 루트 경로를 가진 공유 버킷을 오브젝트 스토리지로 사용하면서 한 Milvus 인스턴스에서 컬렉션을 백업하고 다른 인스턴스로 복원하는 프로세스에 대해 자세히 설명합니다.
개요
아래 다이어그램은 공유 버킷을 사용한 백업 및 복원 프로세스를 보여줍니다.
공유 버킷 백업 및 복원.png
개체 스토리지에 기본 MinIO 스토리지 엔진을 사용하는 Milvus 인스턴스 milvus_A
와 milvus_B
가 있다고 가정합니다. 이 인스턴스는 동일한 버킷인 bucket_A
을 공유하지만 데이터를 서로 다른 루트 경로( milvus_A
의 경우 files_A
, milvus_B
의 경우 files_B)에 저장합니다. 이 예제에서는 다음 작업을 완료하는 것이 목표입니다:
milvus_A
에 대해files_A
경로 아래에 저장되는 컬렉션 coll에 대한 백업(my_backup)을 만듭니다.백업에서 복원하여
milvus_B
에 대한 files_B에 저장합니다.
전제 조건
밀버스 백업 도구가 설치되어 있는지 확인합니다.
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단계: 구성 파일 편집
milvus_A
에 대한 적절한 구성을 설정하도록 backup.yaml 파일을 수정합니다:
연결 구성
# 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
:milvus_A
서버의 IP 주소 또는 호스트 이름.milvus.port
: Milvus 서버가 수신 대기 중인 TCP 포트(기본값 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: milvus_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_A" # 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_A
로 설정합니다.minio.backupBucketName
: 저장에 사용되는 버킷의 이름입니다. 이 예에서는milvus_A
와milvus_B
이 버킷을 공유합니다. 따라서bucket_A
.minio.backupRootPath
: 백업 파일을 저장하기 위해 지정된 버킷 내 루트 경로milvus_B
. 이 예에서는milvus_A
과 다른 경로를 사용하므로backup
로 설정합니다.
3단계: 백업 생성
backup.yaml
이 저장되면 my_backup이라는 이름의 백업을 만듭니다:
./milvus-backup create -c coll -n my_backup
이 명령은 컬렉션 coll
에 대한 개체 스토리지에 bucket_A/backup/my_backup
백업을 만듭니다.
백업을 다음 위치로 복원합니다. milvus_B
1단계: 복원 설정 구성
2단계를 반복하여 milvus_B
로 복원하기 위한 구성을 수정하고 minio.bucketName
을 bucket_A
으로, minio.rootPath
을 files_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: milvus_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_A" # Milvus Bucket name in MinIO/S3, make it the same as your milvus instance
rootPath: "files_B" # Milvus storage root path in MinIO/S3, make it the same as your milvus instance
...
2단계: 백업 복원
백업을 milvus_B
으로 복원합니다:
./milvus-backup restore -c coll -n my_backup -s _bak
이 명령은 milvus_B
에 coll_bak
라는 새 컬렉션으로 백업을 복원하고 bucket_A/files_B/insert_log/[ID of new collection]
에 데이터를 저장합니다.