APIを利用したデータのバックアップとリストア
Milvus Backupは、お客様のMilvusデータのセキュリティを確保するために、データのバックアップとリストア機能を提供します。
Milvus Backupの入手
コンパイル済みのバイナリをダウンロードするか、ソースからビルドすることができます。
コンパイル済みのバイナリをダウンロードするには、リリースページにアクセスしてください。常に最新版とマークされたリリースのバイナリを使用することを忘れないでください。
ソースからコンパイルするには、以下のようにします:
git clone git@github.com:zilliztech/milvus-backup.git
go get
go build
設定ファイルの準備
サンプルの設定ファイルをダウンロードし、あなたのニーズに合うように調整してください。
次に、ダウンロードまたはビルドしたMilvus Backupバイナリと一緒にフォルダを作成し、フォルダ名をconfigs
とし、設定ファイルをconfigs
フォルダの中に置きます。
フォルダ構造は以下のようになっているはずです:
ワークスペース ├── milvus-backup └── configs └── backup.yaml
Milvusバックアップはローカルパスへのバックアップができないため、設定ファイルを調整する際にはMinioの設定が正しいことを確認してください。
デフォルトのMinioバケット名はMilvusのインストール方法によって異なります。Minioの設定を変更する場合は、以下の表を参照してください。
フィールド | Docker Compose | Helm / Milvus オペレータ |
---|---|---|
bucketName | バケット | milvusバケット |
rootPath | ファイル | ファイル |
APIサーバの起動
次に、APIサーバーを以下のように起動する:
./milvus-backup server
APIサーバーはデフォルトで8080番ポートをリッスンします。これを変更するには、-p
フラグを指定して実行する。ポート443をリッスンするAPIサーバを起動するには、以下のようにする:
./milvus-backup server -p 443
Swagger UIにはhttp://localhost。
データの準備
デフォルトのポート19530でリッスンしている空のローカルMilvusインスタンスを実行する場合、インスタンスでいくつかのデータを生成するためにサンプルのPythonスクリプトを使用してください。スクリプトは必要に応じて自由に変更してください。
スクリプトを入手する。スクリプトを実行してデータを生成します。公式のMilvus Python SDKであるPyMilvusがインストールされていることを確認してください。
python example/prepare_data.py
このステップはオプションです。これをスキップする場合は、Milvusインスタンスに既にデータがあることを確認してください。
データのバックアップ
通常、Milvusインスタンスに対してMilvus Backupを実行しても、インスタンスの動作に影響はありません。バックアップまたはリストア中もMilvusインスタンスは完全に機能します。
以下のコマンドを実行してバックアップを作成します。必要に応じてcollection_names
とbackup_name
を変更してください。
curl --location --request POST 'http://localhost:8080/api/v1/create' \
--header 'Content-Type: application/json' \
--data-raw '{
"async": true,
"backup_name": "my_backup",
"collection_names": [
"hello_milvus"
]
}'
コマンドを実行すると、以下のようにMinioの設定で指定したバケット内のバックアップを一覧することができます:
curl --location --request GET 'http://localhost:8080/api/v1/list' \
--header 'Content-Type: application/json'
また、バックアップファイルは以下のようにダウンロードします:
curl --location --request GET 'http://localhost:8080/api/v1/get_backup?backup_id=<test_backup_id>&backup_name=my_backup' \
--header 'Content-Type: application/json'
上記のコマンドを実行しながら、backup_id
とbackup_name
を list API が返すものに変更する。
これで、バックアップファイルを安全な場所に保存して、将来復元することもできますし、Zilliz Cloudにアップロードして、データ入りのマネージドベクターデータベースを作成することもできます。詳しくはMilvusからZilliz Cloudへの移行をご参照ください。
データのリストア
リストアAPIコマンドにcollection_suffix
オプションを付けて呼び出すと、バックアップからデータをリストアして新しいコレクションを作成できます。必要に応じてcollection_names
とbackup_name
を変更します。
curl --location --request POST 'http://localhost:8080/api/v1/restore' \
--header 'Content-Type: application/json' \
--data-raw '{
"async": true,
"collection_names": [
"hello_milvus"
],
"collection_suffix": "_recover",
"backup_name":"my_backup"
}'
collection_suffix
オプションで、作成する新しいコレクションのサフィックスを設定できます。上記のコマンドはMilvusインスタンスにhello_milvus_recoverという新しいコレクションを作成します。
バックアップしたコレクションを名前を変更せずにリストアする場合は、バックアップからリストアする前にコレクションを削除してください。以下のコマンドを実行することで、Prepare dataで生成されたデータをクリーンアップできます。
python example/clean_data.py
次に、以下のコマンドを実行して、バックアップからデータをリストアします。
curl --location --request POST 'http://localhost:8080/api/v1/restore' \
--header 'Content-Type: application/json' \
--data-raw '{
"async": true,
"collection_names": [
"hello_milvus"
],
"collection_suffix": "",
"backup_name":"my_backup"
}'
リストアするデータのサイズによっては、リストア処理に時間がかかることがあります。そのため、すべてのリストアタスクは非同期で実行されます。実行することでリストアタスクのステータスを確認できます:
curl --location --request GET 'http://localhost:8080/api/v1/get_restore?id=<test_restore_id>' \
--header 'Content-Type: application/json'
test_restore_id
をリストアAPIによってリストアされたものに変更することを忘れないでください。
リストアされたデータの検証
リストアが完了したら、以下のようにリストアされたコレクションにインデックスを付けることで、リストアされたデータを検証できます:
python example/verify_data.py
上記のスクリプトは、-s
フラグを付けてrestore
コマンドを実行し、サフィックスが-recover
に設定されていることを前提としています。必要に応じて、スクリプトに必要な変更を加えてください。