Azure Cosmos DB NoSQL アカウントを別のリージョンに再配置する

既存の Azure リソースを別のリージョンに移動するシナリオには、さまざまなケースがあります。 管理容易性のため、ガバナンス上の理由、会社の合併や買収による場合などです。

この記事では、次の方法について説明します。

  • Azure Cosmos DB でデータがレプリケートされるリージョンを移動します。
  • アカウント (Azure Resource Manager) のメタデータとデータを一方のリージョンから他方に移行する。

前提条件

  • アプリの登録は、ソースとターゲットのリソース グループ インスタンスへの委任されたアクセス許可と、"User.ReadBasic.All" の "API アクセス許可" を使用して作成する必要があります。

  • 選択された Cosmos DB API は、ソースからターゲットまで同じままである必要があります。 このドキュメントでは、SQL DB API を使用します。

  • アカウント名は、44 文字 (すべて小文字) 以内である必要があります。

  • Azure Cosmos アカウントに対して場所の追加または削除を行う場合、他のプロパティを同時に変更することはできません。

  • すべての Cosmos DB 依存リソースを識別します。

ダウンタイム:

サービス エンドポイントに関する考慮事項

Azure Cosmos DB の仮想ネットワーク サービス エンドポイントは、指定した仮想ネットワークへのアクセスを制限します。 エンドポイントは、IPv4 (インターネット プロトコル バージョン 4) アドレス範囲のリストへのアクセスを制限することもできます。 これらのソース以外から Event Hubs に接続しようとするユーザーは、アクセスを拒否されます。 Event Hubs リソースのソース リージョンでサービス エンドポイントが構成されている場合は、ターゲット リージョンでも同じ手順を実行する必要があります。

ターゲット リージョンで Azure Cosmos DB を正常に再作成するには、VNet とサブネットを事前に作成する必要があります。 これら 2 つのリソースの移動が Azure Resource Mover ツールで実行される場合、サービス エンドポイントは自動的に構成されません。 そのため、手動で構成する必要があります。これは、Azure portalAzure CLI、または Azure PowerShell 経由で行うことができます。

データなしで再デプロイする

構成と顧客データなしで Cosmos DB インスタンスを単独で再配置する必要がある場合は、Microsoft.DocumentDB databaseAccounts を使用してインスタンス自体を作成できます

データを含めて再デプロイする

Azure Cosmos DB はデータ レプリケーションをネイティブでサポートしているため、一方のリージョンから他方にデータを移動するのは簡単です。 これを行うには、Azure portal、Azure PowerShell、または Azure CLI を使用します。 これには、次の手順が含まれます。

  1. 新しいリージョンをアカウントに追加します。

    Azure Cosmos DB アカウントに新しいリージョンを追加するには、Azure Cosmos DB アカウントに対するリージョンの追加/削除に関するページを参照してください。

  2. 新しいリージョンへの手動フェールオーバーを実行します。

    削除するリージョンが、現時点でアカウントの書き込みリージョンである場合は、前の手順で追加した新しいリージョンへのフェールオーバーを開始する必要があります。 これは、ダウンタイムなしの操作です。 複数リージョンのアカウントで読み取りリージョンを移動する場合は、この手順は省略できます。

    フェールオーバーを開始するには Azure Cosmos DB アカウントでの手動フェールオーバーの実行に関する記事を参照してください。

  3. 元のリージョンを削除します。

    Azure Cosmos DB アカウントからリージョンを削除するには、Azure Cosmos DB アカウントに対するリージョンの追加/削除に関するページを参照してください。

注意

非同期スループット スケーリング操作の進行中にフェールオーバー操作を実行したり、新しいリージョンを追加または削除すると、スループットのスケールアップ操作は一時停止されます。 フェールオーバーまたはリージョンの追加/削除操作が完了すると、自動的に再開されます。

Azure Cosmos DB アカウントのメタデータを再デプロイする

Azure Cosmos DB は、一方のリージョンから他方へのアカウント メタデータの移行をネイティブではサポートしていません。 アカウント メタデータと顧客データの両方を一方のリージョンから他方に移行するには、目的のリージョンに新しいアカウントを作成し、データを手動でコピーする必要があります。

重要

データが保存されているか、別のリージョンに移動されている場合は、アカウントのメタデータを移行する必要はありません。 アカウントメタデータが存在するリージョンは、Azure Cosmos DB アカウントのパフォーマンス、セキュリティ、またはその他の運用面には影響しません。

NoSQL 用 API の移行をダウンタイムがほぼゼロで行うには、変更フィードを使用するか、それを使用するツールを使う必要があります。

次の手順では、NoSQL 用 API とそのデータの Azure Cosmos DB アカウントを一方のリージョンから他方に移行する方法について説明します。

  1. 目的のリージョンに新しい Azure Cosmos DB アカウントを作成します。

    Azure portal、PowerShell、または Azure CLI を使用して新しいアカウントを作成するには、Azure Cosmos DB アカウントの作成に関するページを参照してください。

  2. 新しいデータベースとコンテナーを作成します。

    新しいデータベースとコンテナーを作成するには、「Azure Cosmos DB コンテナーを作成する」を参照してください。

  3. Azure Cosmos DB Spark Connector ライブ マイグレーション サンプルを使用してデータを移行します。

    ダウンタイムがほぼゼロのデータ移行を行うには、Spark Connector を使用した Azure Cosmos DB SQL API コンテナー データのライブ マイグレーションに関するページを参照してください。

  4. アプリケーション接続文字列を更新します。

    Live Data Migration サンプルを実行したまま、アプリケーションの新しいデプロイで接続情報を更新します。 アプリケーションのエンドポイントとキーは、Azure portal から取得できます。

    Azure portal でのアクセス制御、NoSQL データベースのセキュリティのデモ。

  5. 新しいアプリケーションに要求をリダイレクトします。

    新しいアプリケーションが Azure Cosmos DB に接続された後、新しいデプロイにクライアント要求をリダイレクトできます。

  6. 不要になったリソースを削除します。

    これで、要求が新しいインスタンスに完全にリダイレクトされるようになったため、古い Azure Cosmos DB アカウントを削除したり、Live Data Migrator サンプルを停止したりできます。

次の手順

Azure Cosmos DB アカウント、データベース、コンテナーの管理方法に関する詳細と例については、次の記事を参照してください。