スナップショットCompatible with Milvus 3.0.x
スナップショットとは、Milvusコレクションの特定の時点の状態を反映したイメージであり、迅速なロールバック、バージョン管理、およびテストに最適です。特定のタイムスタンプ時点でのコレクションの状態をキャプチャし、効率的な保存と復元のために、スキーマ、インデックス、ベクトルデータファイル(binlog)などのメタデータとマニフェストファイルのみを保存します。
スナップショットは、データの特定の時点の状態を素早く取得したもので、迅速なロールバックやテスト(数日から数週間)に適しています。一方、バックアップは独立した完全なコピーであり、長期的な災害復旧(数週間から数年)や、ストレージ全体の障害に対するより強力な保護を目的として、別途保存されます。
バックアップの作成方法については、「Milvus Backup」を参照してください。
スナップショットの構造
Milvus は、実際のベクトルデータを複製することなく、データの特定の時点での取得、保存、復元を効率的に行うために、マニフェストベースのスナップショットアーキテクチャを実装しています。このアーキテクチャは、メタデータ管理と物理的なデータ保存を分離しており、オブジェクトストレージ内の既存のセグメントファイルを参照する軽量なスナップショットを実現します。
コレクションのスナップショットを作成すると、Milvus は以下の情報を収集します:
スナップショットのメタデータ
スナップショット名や説明、対象コレクション ID、スナップショット作成時点など、スナップショット作成に必要な基本情報を提供します。
コレクションの説明
対象コレクションの説明が含まれており、スキーマ定義、パーティション情報、プロパティなどが含まれます。
インデックス情報
インデックスのメタデータと、インデックスファイルへのパスが格納されます。
セグメントデータ
ベクトルデータファイル(binlog)、削除ログ(deltalog)、およびインデックスファイルを格納します。
上記の情報のうち、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 がスナップショット内のセグメントまたはインデックスファイルを参照すると、スナップショットを削除しない限り、それらのファイルはガベージコレクションの対象にはなりません。スナップショットは、対象コレクションのサイズに比例してストレージを消費し、スナップショットの保持期間中はオブジェクトストレージのコストが発生します。極端な場合、1 つのスナップショットだけでオブジェクトストレージのコストが 2 倍になることもあります。以下のことをお勧めします。
- ストレージを節約するために、古いスナップショットを定期的に削除することをお勧めします。
- 将来参照できるよう、わかりやすい名前と説明を使用してください。
- スナップショットの作成および復元結果は、必ず確認してください。
- 監視やトラブルシューティングのために、スナップショットの作成タイムスタンプとストレージ使用量を追跡してください。
- 監視およびトラブルシューティングのために、復元ジョブの ID を保存してください。
制限事項
- スナップショットは、作成後は変更できなくなります。
- スナップショットは、元のコレクションと同じクラスタ内の新しいコレクションにのみ復元できます。
- 復元されたコレクションは、元のコレクションと同じスキーマ、シャード数、パーティション数を保持します。
- 復元された履歴データは、TTL ポリシーと競合する可能性があります。スナップショットを作成する前に、TTL を無効にするか、TTL 設定を調整することをお勧めします。
- スナップショットを
milvus-tableの外部ソースとして使用するには、そのスナップショットが通常のStorageV3 Milvusコレクションに由来するものである必要があります。外部コレクションのスナップショットは、milvus-tableのソースとしてサポートされていません。
関連情報
- スナップショットの管理— スナップショットの作成、一覧表示、説明、固定、復元、削除。
- スナップショットのユースケース— 一般的なパターンとワークフロー。
- Milvus バックアップ— クラスタ間の長期バックアップおよび復元。