APIを利用したデータのバックアップとリストア
Milvusバックアップは、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-bucket |
rootPath | ファイル | ファイル |
APIサーバの起動
次に、APIサーバーを以下のように起動する:
./milvus-backup server
APIサーバーはデフォルトで8080番ポートをリッスンします。これを変更するには、-p
フラグを指定して実行する。ポート443をリッスンするAPIサーバを起動するには、以下のようにする:
./milvus-backup server -p 443
Swagger UIにはhttp://localhost。
データの準備
空のローカルMilvusインスタンスをデフォルトのポート19530でリッスンしている場合、サンプルの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
に設定されていることを前提としています。必要に応じて、スクリプトに必要な変更を加えてください。