Azure Cosmos DB でのアカウント内コンテナー コピー ジョブ (プレビュー)

適用対象: NoSQL Cassandra

コンテナー コピー ジョブを使用すると、Azure Cosmos DB アカウント内でオフライン コンテナー コピーを実行できます。

次のいずれかのシナリオを実行する場合は、Azure Cosmos DB アカウント内のデータをコピーする必要がある場合があります。

アカウント内コンテナー コピー ジョブは、CLI コマンドを使用して作成および管理できます。

はじめに

コンテナー コピー ジョブの使用を開始するには、Azure portal の [プレビュー機能] 一覧から [Intra-account offline container copy (Cassandra & SQL)] (アカウント内オフライン コンテナー コピー (Cassandra および SQL)) プレビューに登録します。 登録が完了すると、このプレビューがサブスクリプション内のすべての Cassandra アカウントとAPI for NoSQLアカウントに対して有効になります。

コンテナー コピーを実行するために必要な手順の概要

  1. 目的の設定 (パーティション キー、スループットの細分性、RU、一意キーなど) を使用して、ターゲット Azure Cosmos DB コンテナーを作成します。
  2. アプリケーション インスタンスまたはそのコンテナーに接続しているクライアントを一時停止して、ソース コンテナーに対する操作を停止します。
  3. コンテナー コピー ジョブを作成します
  4. コンテナー コピー ジョブの進行状況を監視し、完了するまで待ちます。
  5. 目的に応じて、アプリケーションまたはクライアントをソースまたはターゲットのコンテナー コピーに適切にポイントして、操作を再開します。

アカウント内コンテナー コピーのしくみ

アカウント内コンテナー コピー ジョブでは、ソース コンテナーの増分変更フィード ログを使用してオフライン データ コピーを実行します。

  • プラットフォームによって、Azure Cosmos DB アカウントにサーバー側のコンピューティング インスタンスが割り当てられます。
  • これらのインスタンスは、アカウント内に 1 つ以上のコンテナー コピー ジョブが作成されると割り当てられます。
  • コンテナー コピー ジョブは、これらのインスタンスで実行されます。
  • 1 つのジョブが、すべてのインスタンスでいつでも実行されます。
  • インスタンスは、同じアカウント内で実行されているすべてのコンテナー コピー ジョブで共有されます。
  • >15 分間アイドル状態の場合、プラットフォームはインスタンスの割り当てを解除できます。

注意

現在、オフライン コンテナー コピー ジョブのみがサポートされています。 そのため、コンテナー コピーを開始する前に、ソース コンテナーに対する操作の実行をすべて停止することを強くお勧めします。
コピー ジョブの開始後にソース コンテナーで行われた項目の削除と更新はキャプチャされない場合があります。 そのため、コンテナー ジョブの進行中にソース コンテナーに対して操作を実行し続けると、ターゲット コンテナーにデータが追加される可能性や、データが紛失する可能性があります。

コンテナー コピー ジョブの速度に影響を与える要因

コンテナー コピー ジョブの進行速度は、次の要因によって決まります。

  • ソース コンテナー/データベースのスループット設定。

  • ターゲット コンテナー/データベースのスループット設定。

  • データ転送を実行するために Azure Cosmos DB アカウントに割り当てられたサーバー側のコンピューティング インスタンス。

    重要

    既定の SKU では、アカウントごとに 2 つの 4 vCPU 16 GB サーバー側インスタンスが利用できます。

FAQ

コンテナー コピー ジョブの SLA はありますか?

現在、コンテナー コピー ジョブはベストエフォート ベースでサポートされています。 これらのジョブの完了までにかかった時間に対する SLA 保証は提供していません。

アカウント内に複数のコンテナー コピー ジョブを作成できますか?

はい。同じアカウント内に複数のジョブを作成できます。 ジョブは連続して実行されます。 アカウント内で作成されたすべてのジョブを一覧表示し、その進行状況を監視できます。

Azure Cosmos DB アカウント内のデータベース全体をコピーできますか?

データベース内のコンテナーごとにジョブを作成する必要があります。

複数のリージョンを持つ Azure Cosmos DB アカウントを持っています。 コンテナー コピー ジョブはどのリージョンで実行されますか?

コンテナー コピー ジョブは、書き込みリージョンで実行されます。 複数リージョンの書き込みを含んで構成されたアカウントがある場合、ジョブはそのリストのいずれかのリージョンで実行されます。

アカウントの書き込みリージョンが変更されると、コンテナー コピー ジョブはどうなりますか?

アカウントの書き込みリージョンは、リージョンの停止や手動フェールオーバーによるめったにないシナリオで変更される場合があります。 このようなシナリオでは、アカウント内に不完全なコンテナー コピー ジョブが作成され、失敗します。 これらの失敗したジョブは再作成する必要があります。 再作成されたジョブは、新しい (現在の) 書き込みリージョンで実行されます。

コンテナー コピー ジョブを実行するとき、アカウント内に新しいデータベース __datatransferstate が作成されるのはなぜですか? このデータベースに対して課金されますか?

  • __datatransferstate は、コンテナー コピー ジョブの実行中に作成されるデータベースです。 このデータベースは、コピー ジョブの状態と進行状況を保存するためにプラットフォームによって使用されます。
  • このデータベースでは、手動でプロビジョニングされた 800 RU のスループットが使用されます。 このデータベースに対しては課金されます。
  • このデータベースを削除すると、アカウントからコンテナー コピー ジョブの履歴が削除されます。 ジョブの履歴が不要になった場合、アカウント内のすべてのジョブが完了した後、これを安全に削除できます。 プラットフォームでは、__datatransferstate データベースは自動的にはクリーンアップされません。

サポートされているリージョン

現在、コンテナー コピーは、次のリージョンでサポートされています。

南北アメリカ ヨーロッパおよびアフリカ アジア太平洋
ブラジル南部 フランス中部 オーストラリア中部
カナダ中部 フランス南部 オーストラリア中部 2
カナダ東部 ドイツ北部 オーストラリア東部
米国中部 ドイツ中西部 インド中部
米国中部 EUAP 北ヨーロッパ 東日本
米国東部 ノルウェー東部 韓国中部
米国東部 2 ノルウェー西部 東南アジア
米国東部 2 EUAP スイス北部 アラブ首長国連邦中部
米国中北部 スイス西部 インド西部
米国中南部 英国南部
米国中西部 英国西部
米国西部 西ヨーロッパ
米国西部 2

既知の問題/一般的な問題

  • エラー - Owner resource does not exist (所有者リソースが存在しません)

"Owner resource does not exist" (所有者リソースが存在しません) というエラーによってジョブの作成が失敗した場合、原因はターゲット コンテナーが作成されていないこと、またはこのコンテナーのスペルが誤っていることです。 概要セクションで指定されているように、ジョブを実行する前にターゲット コンテナーが作成されていることを確認してください。

"code": "500",
"message": "Response status code does not indicate success: NotFound (404); Substatus: 1003; ActivityId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx; Reason: (Message: {\"Errors\":[\"Owner resource does not exist\"]
  • エラー - Shared throughput database creation is not supported for serverless accounts (サーバーレス アカウントでは共有スループット データベースの作成はサポートされていません)

"Shared throughput database creation is not supported for serverless accounts" (サーバーレス アカウントでは共有スループット データベースの作成はサポートされていません) というエラーによって、サーバーレス アカウントでジョブの作成が失敗する場合があります。 対処法として、アカウント内に __datatransferstate というデータベースを手動で作成し、コンテナー コピー ジョブをもう一度作成してみてください。

ERROR: (BadRequest) Response status code does not indicate success: BadRequest (400); Substatus: 0; ActivityId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx; Reason: (Shared throughput database creation is not supported for serverless accounts.

次のステップ