メインコンテンツまでスキップ

Snapshots

スナップショットは、Milvus コレクションの特定時点のイメージであり、迅速なロールバック、バージョン管理、テストに最適です。指定したタイムスタンプにおけるコレクションの状態をキャプチャし、スキーマ、インデックス、ベクトルデータファイル(binlogs)などのメタデータとマニフェストファイルのみを保存するため、効率的な保存と復元が可能です。

スナップショットはデータの特定時点のイメージであり、高速なロールバックやテスト(数日〜数週間)に適しています。一方、バックアップは長期的なディザスタリカバリ(数週間〜数年)やストレージ全体の障害への耐性を高めるため、独立した完全なコピーとして別途保存されます。

バックアップの作成については、 を参照してください。

スナップショットの構造

Milvus は、実際のベクトルデータを複製することなく、データの効率的なキャプチャ、保存、復元を実現するマニフェストベースのスナップショットアーキテクチャを採用しています。このアーキテクチャではメタデータ管理と物理データストレージが分離されており、オブジェクトストレージ内の既存セグメントファイルを参照する軽量なスナップショットを実現します。

コレクションのスナップショットを作成すると、Milvus は以下の情報を収集します。

  • スナップショットメタデータ

    スナップショット名、説明、対象コレクションID、作成時刻など、スナップショット作成に必要な基本情報が含まれます。

  • コレクション情報

    スキーマ定義、パーティション情報、プロパティなど、対象コレクションの詳細が含まれます。

  • インデックス情報

    インデックスメタデータおよびインデックスファイルへのパスが保存されます。

  • セグメントデータ

    ベクトルデータファイル(binlogs)、削除ログ(deltalogs)、インデックスファイルがキャプチャされます。

上記の情報に基づき、Milvus はセグメントごとに Apache Avro マニフェストファイルを生成し、スナップショットメタデータ、コレクション情報、インデックス情報、マニフェストファイルへのパスを JSON ファイルに保存します。次の図はスナップショットのフォルダー構造を示しています。

python
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つのスナップショットによってオブジェクトストレージコストが倍増することもあります。そのため、以下の運用を推奨します。

  • ストレージ節約のため、古いスナップショットは定期的に削除してください。

  • 後から参照しやすいよう、分かりやすい名前と説明を付けてください。

  • スナップショットの作成および復元結果を必ず確認してください。

  • スナップショットの作成日時やストレージ使用量を記録し、

  • 監視やトラブルシューティングに備えて復元ジョブIDを保管してください。

制限事項

  • スナップショットは作成後は変更できません。

  • スナップショットの復元先は、元のコレクションと同じクラスター内の新しいコレクションに限られます。

  • 復元されたコレクションは、元のスキーマ、シャード数、パーティション数を維持します。

  • 復元された過去データが TTL ポリシーと競合する可能性があります。スナップショット作成前に TTL を無効にするか、TTL 設定を調整することを推奨します。

  • スナップショットを milvus-table の外部ソースとして使用するには、ソースとなるスナップショットが通常の StorageV3 Milvus コレクションのものである必要があります。外部コレクションのスナップショットは、milvus-table のソースとしてはサポートされていません。

関連資料

スナップショットの管理

このガイドでは、スナップショットの作成と管理の方法について学習します。内容には以下が含まれます | Cloud

Ctrl I