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

適用対象: NoSQL MongoDB Cassandra

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

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

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

はじめに

開始するには、Azure portal で関連するプレビュー機能に登録します。

Azure Cosmos DB アカウント間でのコンテナー コピー

NoSQL API

Azure Cosmos DB for NoSQL アカウントのクロスアカウント オフライン コンテナー コピーを開始するには、Azure portal の [プレビュー機能][クロスアカウント オフライン コンテナー コピー (NoSQL)] プレビュー機能フラグを登録します。 登録が完了すると、このプレビューがサブスクリプション内のすべての NoSQL API アカウントに対して有効になります。

Azure Cosmos DB アカウント内でのコンテナー コピー

NoSQL および Cassandra API

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

MongoDB 用 API

Azure Cosmos DB for MongoDB アカウントのアカウント内オフライン コンテナー コピーを開始するには、Azure portal で [プレビュー機能][Intra-account offline container copy (MongoDB)] (アカウント内オフライン コンテナー コピー (MongoDB)) プレビュー機能フラグを登録します。 登録が完了すると、このプレビューがサブスクリプション内の MongoDB アカウントのすべての API に対して有効になります。

コンテナーのデータをコピーする

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

コンテナー コピーのしくみ

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

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

Note

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

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

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

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

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

    ヒント

    ターゲット コンテナーのスループットを、ソース コンテナーのスループットの少なくとも 2 倍に設定します。

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

    重要

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

制限事項

プレビュー資格条件

コンテナー コピー ジョブは、次の機能が有効になっているアカウントでは機能しません。 コンテナー コピー ジョブを実行する前に、次の機能を無効にしてください。

アカウント構成

Time to Live (TTL) 設定は、宛先コンテナーでは調整されません。 その結果、ソース コンテナーでドキュメントの有効期限が切れていない場合は、宛先コンテナーでそのカウントダウンが新たに開始されます。

FAQ

コンテナー コピー ジョブのサービス レベル アグリーメントはありますか?

現在、コンテナー コピー ジョブはベストエフォート ベースでサポートされています。 ジョブの完了にかかる時間についてのサービス レベル アグリーメント (SLA) の保証は提供されません。

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

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

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

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

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

コンテナー コピー ジョブは書き込みリージョンで実行されます。 複数リージョンの書き込みを指定して構成されたアカウントでは、ジョブは書き込みリージョンの一覧のいずれかのリージョンで実行されます。

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

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

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

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

米国 ヨーロッパおよびアフリカ アジア太平洋
ブラジル南部 フランス中部 オーストラリア中部
カナダ中部 フランス南部 オーストラリア中部 2
カナダ東部 ドイツ北部 オーストラリア東部
米国中部 ドイツ中西部 インド中部
米国中部 EUAP 北ヨーロッパ 東日本
米国東部 ノルウェー東部 韓国中部
米国東部 2 ノルウェー西部 東南アジア
米国東部 2 EUAP スイス北部 アラブ首長国連邦中部
米国中北部 スイス西部 インド西部
米国中南部 英国南部 東アジア
米国中西部 英国西部 マレーシア南部
米国西部 西ヨーロッパ 西日本
米国西部 2 イスラエル中部 オーストラリア南東部
サポートされていません 南アフリカ北部 サポートされていません

既知の一般的な問題

  • エラー - Owner resource doesn't exist (所有者リソースが存在しません)。

    ジョブの作成が失敗し、Owner resource doesn't exist (所有者リソースが存在しません) というエラー (エラー コード 404) が表示された場合、ターゲット コンテナーがまだ作成されていないか、ジョブの作成に使用されたコンテナー名が実際のコンテナー名と一致しません。

    概要に記載したように、ジョブを実行する前にターゲット コンテナーが作成されていることを確認し、ジョブのコンテナー名が実際のコンテナー名と一致していることを確認してください。

    "code": "404",
    "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\"]
    
  • エラー - この要求は認可されていません。

    要求が失敗し、Unauthorized (未承認) というエラー (エラー コード 401) が表示された場合、ローカルの承認が無効になっている可能性があります。 ローカルの承認を有効にする方法についてご確認ください。

    コンテナー コピー ジョブでは、認証に主キーが使用されます。 ローカルの承認が無効になっている場合、ジョブの作成は失敗します。 コンテナー コピー ジョブを機能させるには、ローカルの承認を有効にする必要があります。

    "code": "401",
    "message": " Response status code does not indicate success: Unauthorized (401); Substatus: 5202; ActivityId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx; Reason: Local Authorization is disabled. Use an AAD token to authorize all requests."
    
  • エラー - Error while getting resources for job. (ジョブのリソースを取得中にエラーが発生しました。)

    このエラーは、内部サーバーの問題が原因で発生する場合があります。 この問題を解決するには、Azure portal から新しいサポート リクエストをオープンして、Microsoft サポートにお問い合わせください。 [問題の種類] で、[Data Migration] (データ移行) を選択します。 [問題のサブタイプ] で、[Intra-account container copy] (アカウント内コンテナーのコピー) を選択します。

    "code": "500"
    "message": "Error while getting resources for job, StatusCode: 500, SubStatusCode: 0, OperationId:  xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, ActivityId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    

次のステップ