스냅샷Compatible with Milvus 3.0.x
스냅샷은 빠른 롤백, 버전 관리 및 테스트에 이상적인 Milvus 컬렉션의 특정 시점 이미지입니다. 특정 타임스탬프에서 컬렉션의 상태를 캡처하고 효율적인 저장 및 복원을 위해 스키마, 인덱스, 벡터 데이터 파일(빈로그) 등의 메타데이터와 매니페스트 파일만 저장합니다.
스냅샷은 데이터의 빠른 특정 시점 이미지로, 빠른 롤백이나 테스트(며칠에서 몇 주)에 적합합니다. 동시에 백업은 장기적인 재해 복구(몇 주에서 몇 년)와 전체 스토리지 장애에 대한 더 나은 보호를 위해 별도로 저장된 독립적이고 완전한 사본입니다.
백업을 만들려면 Milvus 백업을 참조하세요.
스냅샷 구조
Milvus는 실제 벡터 데이터를 복제하지 않고 데이터를 효율적으로 특정 시점에 캡처, 저장, 복원할 수 있도록 매니페스트 기반 스냅샷 아키텍처를 구현합니다. 이 아키텍처는 메타데이터 관리와 물리적 데이터 스토리지를 분리하여 오브젝트 스토리지의 기존 세그먼트 파일을 참조하는 경량 스냅샷을 가능하게 합니다.
컬렉션에 대한 스냅샷을 만들 때 Milvus는 다음을 수집합니다:
스냅샷 메타데이터
스냅샷 이름 및 설명, 대상 컬렉션 ID, 스냅샷이 생성되는 시점 등 스냅샷 생성을 위한 기본 정보를 제공합니다.
컬렉션 설명
스키마 정의, 파티션 정보, 속성 등 대상 컬렉션에 대한 설명이 포함되어 있습니다.
인덱스 정보
인덱스 메타데이터와 인덱스 파일의 경로를 저장합니다.
세그먼트 데이터
벡터 데이터 파일(빈로그), 삭제 로그(델타로그), 인덱스 파일을 캡처합니다.
위의 정보 중 각 세그먼트에 대한 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 설정을 조정하는 것이 좋습니다.