스냅샷Compatible with Milvus 3.0.x
스냅샷은 Milvus 컬렉션의 특정 시점 이미지를 의미하며, 신속한 롤백, 버전 관리 및 테스트에 이상적입니다. 스냅샷은 특정 타임스탬프 시점의 컬렉션 상태를 캡처하며, 효율적인 저장 및 복원을 위해 스키마, 인덱스, 벡터 데이터 파일(binlog)과 같은 메타데이터 및 매니페스트 파일만 저장합니다.
스냅샷은 데이터의 특정 시점 이미지를 신속하게 생성하는 것으로, 빠른 롤백이나 테스트(수일에서 수주)에 적합합니다. 반면, 백업은 독립적이고 완전한 복사본으로, 장기적인 재해 복구(수주에서 수년) 및 전체 스토리지 장애에 대한 더 나은 보호를 위해 별도로 저장됩니다.
백업을 생성하려면 Milvus 백업을 참조하십시오.
스냅샷 구조
Milvus는 실제 벡터 데이터를 중복 저장하지 않으면서도 데이터를 특정 시점 기준으로 효율적으로 캡처, 저장 및 복원하기 위해 매니페스트 기반 스냅샷 아키텍처를 구현합니다. 이 아키텍처는 메타데이터 관리와 물리적 데이터 저장을 분리하여, 오브젝트 스토리지 내의 기존 세그먼트 파일을 참조하는 경량 스냅샷을 가능하게 합니다.
컬렉션에 대한 스냅샷을 생성하면 Milvus는 다음 정보를 수집합니다:
스냅샷 메타데이터
스냅샷 이름 및 설명, 대상 컬렉션 ID, 스냅샷 생성 시점 등 스냅샷 생성에 필요한 기본 정보를 제공합니다.
컬렉션 설명
스키마 정의, 파티션 정보 및 속성을 포함하여 대상 컬렉션에 대한 설명이 포함됩니다.
인덱스 정보
인덱스 메타데이터와 인덱스 파일의 경로를 저장합니다.
세그먼트 데이터
벡터 데이터 파일(binlogs), 삭제 로그(deltalogs) 및 인덱스 파일을 포함합니다.
위의 정보 중 Milvus는 각 세그먼트에 대해 Apache Avro 매니페스트 파일을 생성하고, 스냅샷 메타데이터, 컬렉션 설명, 인덱스 정보 및 매니페스트 파일의 경로를 JSON 파일에 저장합니다. 다음 다이어그램은 스냅샷 폴더 구조를 보여줍니다.
snapshots/{collection_id}/
├── metadata/
│ └── {snapshot_id}.json # Snapshot metadata (JSON format)
│
└── manifests/
└── {snapshot_id}/ # Directory for each snapshot
├── {segment_id_1}.avro # Individual segment manifest (Avro format)
├── {segment_id_2}.avro
└── ...
스냅샷 생성은 일반적으로 밀리초 단위로 소요되며, 복원에는 데이터 양에 따라 몇 초에서 몇 분 정도 걸립니다.
저장소에 미치는 영향 및 고려 사항
Milvus가 스냅샷 내의 세그먼트 또는 인덱스 파일을 참조하면, 스냅샷을 삭제하지 않는 한 해당 파일에 대한 가비지 컬렉션이 수행되지 않습니다. 스냅샷은 대상 컬렉션의 크기에 비례하여 스토리지를 소비하며, 스냅샷 보존 기간 동안 오브젝트 스토리지 비용이 부과됩니다. 극단적인 경우, 단일 스냅샷으로 인해 오브젝트 스토리지 비용이 두 배로 늘어날 수도 있습니다. 다음을 권장합니다.
- 저장 공간을 절약하기 위해 오래된 스냅샷을 정기적으로 삭제하십시오.
- 나중에 참조할 수 있도록 설명적인 이름과 설명을 사용하십시오.
- 스냅샷 생성 및 복원 결과를 항상 확인하십시오.
- 모니터링 및 문제 해결을 위해 스냅샷 생성 타임스탬프와 스토리지 사용량을 추적하십시오.
- 모니터링 및 문제 해결을 위해 복원 작업 ID를 저장하십시오.
제한 사항 및 제약 조건
- 스냅샷은 생성 후 변경할 수 없게 됩니다.
- 스냅샷은 원본과 동일한 클러스터 내의 새 컬렉션으로만 복원할 수 있습니다.
- 복원된 컬렉션은 동일한 스키마, 샤드 수 및 파티션 수를 유지합니다.
- 복원된 과거 데이터는 TTL 정책과 충돌할 수 있습니다. 스냅샷을 생성하기 전에 TTL을 비활성화하거나 TTL 설정을 조정하는 것이 좋습니다.
milvus-table의 외부 소스로 스냅샷을 사용하려면, 소스 스냅샷이 일반 StorageV3 Milvus 컬렉션에서 가져온 것이어야 합니다. 외부 컬렉션의 스냅샷은milvus-table소스로 지원되지 않습니다.