データベース リソースをグローバル Azure に移行する

重要

2018 年 8 月以降、元の Microsoft Cloud Germany ロケーションでは、新しい顧客の受け入れや、新しい機能やサービスのデプロイはしていません。

お客様のニーズの変化に基づき、Microsoft ではドイツで最近新しいデータセンターのリージョンを 2 つ立ち上げ、顧客データ所在地、Microsoft のグローバル クラウド ネットワークへの完全な接続、市場競争力のある価格を提供しています。

さらに、2020 年 9 月 30 日、Microsoft Cloud Germany が 2021 年 10 月 29 日に終了することを発表しました。 詳細については、https://www.microsoft.com/cloud-platform/germany-cloud-regions をご覧ください。

今すぐ移行して、ドイツの新しいデータセンター リージョン内で使用可能な幅広い機能、エンタープライズレベルのセキュリティ、包括的な機能をご利用ください。

この記事には、Azure データベース リソースの Azure Germany からグローバル Azure への移行に役立つ可能性のある情報が含まれています。

SQL Database

移行されるデータベースをオンラインのままにしないで、小さい Azure SQL Database ワークロードを移行するには、エクスポート関数を使用して BACPAC ファイルを作成します。 BACPAC ファイルは、メタデータと SQL Server データベースからのデータを含む圧縮 (zip 形式) ファイルです。 BACPAC ファイルを作成した後では、(たとえば、AzCopy を使用して) ターゲット環境にファイルをコピーし、インポート関数を使用してデータベースを再構築することができます。 次の考慮事項に注意してください。

  • エクスポートでトランザクション上の一貫性が保たれるようにするには、次のいずれかの条件に当てはまることを確認します。
    • エクスポート中に、書き込み操作は行われません。
    • ご利用の SQL データベースのトランザクション上一貫性のあるコピーからエクスポートします。
  • Azure Blob ストレージにエクスポートする場合、BACPAC ファイルのサイズは最大 200 GB に制限されています。 これより大きな BACPAC ファイルについては、ローカル ストレージにエクスポートします。
  • SQL Database からのエクスポート操作にかかる時間が 20 時間を超える場合、操作はキャンセルされる可能性があります。 パフォーマンスを向上する方法のヒントについては、次の記事を確認してください。

注意

エクスポート中にサーバーの DNS 名が変更されるため、接続文字列はエクスポート操作の後に変更されます。

詳細情報:

注意

Azure を操作するには、Azure Az PowerShell モジュールを使用することをお勧めします。 作業を開始するには、Azure PowerShell のインストールに関する記事を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。

アクティブ geo レプリケーションを使用して SQL Database を移行する

データベースが BACPAC ファイルには大きすぎる場合、または最小限のダウンタイムでオンラインを維持しながらクラウド間で移行する場合は、Azure Germany からグローバル Azure へのアクティブ geo レプリケーションを構成できます。

重要

データベースをグローバル Azure に移行するためのアクティブ geo レプリケーションの構成は、Transact-SQL (T-SQL) を使用する場合にのみサポートされており、移行する前に、サブスクリプションによるグローバル Azure への移行のサポートの有効化を要求する必要があります。 要求を送信するには、このサポート リクエスト リンクを使用する必要があります。

注意

Azure Germany クラウドでアクティブ geo レプリケーションがサポートされている Azure グローバル クラウド リージョンは、ドイツ中西部とドイツ北部です。 最終的なデータベースの移行先として別のグローバル Azure リージョンが必要な場合は、グローバル Azure への移行が完了した後で、ドイツ中西部またはドイツ北部から必要な Azure グローバル クラウド リージョンへの追加の geo レプリケーション リンクを構成することをお勧めします。

アクティブ geo レプリケーションのコストの詳細については、「Azure SQL Database の価格」でアクティブ geo レプリケーションに関するセクションを参照してください。

アクティブ geo レプリケーションを使用してデータベースを移行するには、グローバル Azure に Azure SQL の論理サーバーが必要です。 サーバーはポータル、Azure PowerShell、Azure CLI などを使用して作成できますが、Azure Germany からグローバル Azure に移行するためのアクティブ geo レプリケーションの構成は、Transact-SQL (T-SQL) を使用する場合にのみサポートされます。

重要

クラウド間で移行する場合は、プライマリ (Azure Germany) とセカンダリ (グローバル Azure) のサーバー名プレフィックスが異なる必要があります。 サーバー名が同じ場合、ALTER DATABASE ステートメントの実行は成功しますが、移行は失敗します。 たとえば、プライマリ サーバー名のプレフィックスが (myserver.database.cloudapi.de) の場合、myserverグローバル Azure のセカンダリ サーバー名のプレフィックスを にmyserverすることはできません。

ALTER DATABASE ステートメントを使用すると、ターゲット側で完全修飾 DNS サーバー名を使用することにより、グローバル Azure のターゲット サーバーを指定できます。

ALTER DATABASE [sourcedb] add secondary on server [public-server.database.windows.net]
  • sourcedbは、Azure Germany のAzure SQL サーバー内のデータベース名を表します。
  • public-server.database.windows.net は、データベースを移行する必要があるグローバル Azure に存在する Azure SQL サーバー名を表します。 名前空間 "database.windows.net" が必要です。public-server は、グローバル Azure での論理 SQL サーバーの名前に置き換える必要があります。 グローバル Azure のサーバーには、Azure Germany のプライマリ サーバーとは異なる名前が必要です。

コマンドは、移行されるローカル データベースがホストされている Azure Germany サーバーの master データベースで実行されます。

  • パブリック クラウド サーバー内のログイン ユーザーの認証は、T-SQL start-copy API により、そのサーバーの master データベースで同じ SQL ログインとユーザー名を持つユーザーを検索されることによって行われます。 この方法はクラウドに依存しないため、クラウド間コピーを開始するには T-SQL API が使用されます。 このトピックのアクセス許可と詳細については、「アクティブ geo レプリケーションの作成と使用」および「ALTER DATABASE (Transact-SQL)」を参照してください。

  • グローバル Azure で Azure SQL 論理サーバーを示す最初の T-SQL コマンド拡張機能を除き、アクティブ geo レプリケーション プロセスの残りの部分は、ローカル クラウドでの既存の実行と同じです。 アクティブ geo レプリケーションを作成する詳細な手順については、「アクティブ geo レプリケーションの作成と使用」を参照してください。ただし、セカンダリ データベースがグローバル Azure に作成されるセカンダリ論理サーバーに作成される点は異なります。

  • セカンダリ データベースがグローバル Azure に (Azure Germany データベースのオンライン コピーとして) 存在するようになったら、ALTER DATABASE T-SQL コマンド (下の表を参照) を使用して、Azure Germany からグローバル Azure へのこのデータベースのフェールオーバーを開始できます。

  • フェールオーバー後、セカンダリがグローバル Azure のプライマリ データベースになると、アクティブ geo レプリケーションを停止し、Azure Germany 側のセカンダリ データベースをいつでも削除できます (次の表と図の手順を参照してください)。

  • Azure Germany のセカンダリ データベースには、フェールオーバーの後も削除するまで引き続きコストが発生します。

  • Azure Germany データベースをグローバル Azure に移行するためのアクティブ geo レプリケーションを設定するには、ALTER DATABASE コマンドを使用するのが唯一の方法です。

  • Azure portal、Azure Resource Manager、PowerShell、または CLI を使用して、この移行用にアクティブ geo レプリケーションを構成することはできません。

データベースを Azure Germany からグローバル Azure に移行するには:

  1. Azure Germany でユーザー データベースを選択します (例: azuregermanydb)

  2. グローバル Azure (パブリック クラウド) に論理サーバーを作成します (例: globalazureserver)。 その完全修飾ドメイン名 (FQDN) は globalazureserver.database.windows.net です。

  3. Azure Germany のサーバーでこの T-SQL コマンドを実行して、Azure Germany からグローバル Azure へのアクティブ geo レプリケーションを開始します。 完全修飾 DNS 名がパブリック サーバー globalazureserver.database.windows.net に使用されていることに注意してください。 これは、ターゲット サーバーが Azure Germany ではなくグローバル Azure 内であることを示すためです。

    ALTER DATABASE [azuregermanydb] ADD SECONDARY ON SERVER [globalazureserver.database.windows.net];
    
  4. レプリケーションで読み書きワークロードをグローバル Azure サーバーに移動する準備ができたら、グローバル Azure サーバーでこの T-SQL コマンドを実行して、グローバル Azure への計画フェールオーバーを開始します。

    ALTER DATABASE [azuregermanydb] FAILOVER;
    
  5. アクティブ geo レプリケーション リンクは、フェールオーバー プロセスの前でも後でも終了できます。 計画フェールオーバーの後で次の T-SQL コマンドを実行すると、グローバル Azure 内のデータベースとの読み書きコピーである geo レプリケーション リンクが削除されます。 これは、現在の geo プライマリ データベースの論理サーバー上 (つまり、グローバル Azure サーバー上) で実行する必要があります。 これによって移行プロセスが完了します。

    ALTER DATABASE [azuregermanydb] REMOVE SECONDARY ON SERVER [azuregermanyserver];
    

    計画フェールオーバーの前に次の T-SQL コマンドを実行しても移行プロセスは停止しますが、この状況では、Azure Germany のデータベースは読み書きコピーのまま残ります。 この T-SQL コマンドも、現在の geo プライマリ データベースの論理サーバー上 (この場合は Azure Germany サーバー上) で実行する必要があります。

    ALTER DATABASE [azuregermanydb] REMOVE SECONDARY ON SERVER [globalazureserver];
    

Azure SQL データベースを Azure Germany からグローバル Azure に移行するこれらの手順は、アクティブ geo レプリケーションを使用して行うこともできます。

次の表では、フェールオーバーを管理するための T-SQL コマンドの詳細を示します。 次のコマンドは、Azure Germany とグローバル Azure の間のクラウド間のアクティブ geo レプリケーションについてサポートされます。

command 説明
ALTER DATABASE ADD SECONDARY ON SERVER 引数を使用して、既存のデータベースのセカンダリ データベースを作成し、データ レプリケーションを開始します。
ALTER DATABASE FAILOVER または FORCE_FAILOVER_ALLOW_DATA_LOSS を使用して、セカンダリ データベースをプライマリに切り替え、フェールオーバーを開始します
ALTER DATABASE REMOVE SECONDARY ON SERVER を使用して、SQL Database と指定されたセカンダリ データベース間でのデータ レプリケーションを終了します。

アクティブ geo レプリケーションの監視システム ビュー

command 説明
sys.geo_replication_links Azure SQL Database サーバー上の各データベースの、既存のレプリケーション リンクの情報をすべて返します。
sys.dm_geo_replication_link_status 最新のレプリケーション時刻、最後のレプリケーションの遅延、および指定された SQL データベースのレプリケーション リンクに関する他の情報を取得します。
sys.dm_operation_status レプリケーション リンクの状態を含むすべてのデータベース操作の状態が表示されます。
sp_wait_for_database_copy_sync コミットされたすべてのトランザクションがレプリケートされ、アクティブ セカンダリ データベースによって認識されるまで、アプリケーションが待機状態になります。

SQL Database の長期保有バックアップを移行する

geo レプリケーションまたは BACPAC ファイルを使用してデータベースを移行しても、Azure Germany のデータベースにある可能性がある長期保有バックアップはコピーされません。 既存の長期保有バックアップをターゲットのグローバル Azure リージョンに移行するには、COPY 長期保有バックアップ手順を使用できます。

注意

ここで説明する LTR バックアップ コピー方法で Azure Germany からグローバル Azure にコピーできるのは、LTR バックアップのみです。 これらの方法を使用した PITR バックアップのコピーはサポートされていません。

前提条件

  1. LTR バックアップをコピーするグローバル Azure の ターゲット データベースは、バックアップのコピーを開始する前に存在している必要があります。 最初にアクティブ geo レプリケーションを使用してソース データベースを移行した後で、LTR バックアップのコピーを始めることをお勧めします。 これにより、データベース バックアップが正しいコピー先データベースに確実にコピーされます。 削除されたデータベースの LTR バックアップをコピーする場合、このステップは必要ありません。 削除されたデータベースの LTR バックアップをコピーすると、ターゲット リージョンにダミーの DatabaseID が作成されます。
  2. この PowerShell Az モジュールをインストールします
  3. 始める前に、必要な Azure RBAC ロールサブスクリプションまたはリソース グループのスコープで付与されていることを確認します。 注: 削除されたサーバーに属する LTR バックアップにアクセスするには、そのサーバーのサブスクリプション スコープでアクセス許可を付与する必要があります。 .

制限事項

  • フェールオーバー グループはサポートされません。 つまり、Azure Germany のデータベースを移行するお客様は、フェールオーバーの間に接続文字列を自分で管理する必要があります。
  • Azure portal、Azure Resource Manager API、PowerShell、または CLI はサポートされていません。 つまり、Azure Germany の各移行では、T-SQL を使用してアクティブ geo レプリケーションのセットアップとフェールオーバーを管理する必要があります。
  • お客様は、Azure Germany のデータベース用にグローバル Azure に複数の geo セカンダリを作成することはできません。
  • geo セカンダリの作成は、Azure Germany リージョンから開始する必要があります。
  • お客様は、グローバル Azure に対してだけ、Azure Germany のデータベースを移行できます。 現在、他のクラウド間移行はサポートされていません。
  • Azure Germany ユーザー データベースの Azure AD ユーザーは移行されますが、移行されたデータベースが存在する新しい Azure AD テナントでは使用できません。 これらのユーザーを有効にするには、ユーザーを手動で削除し、新しく移行されたデータベースが存在する新しい Azure AD テナントで使用できる現在の Azure AD ユーザーを使用して作成し直す必要があります。

PowerShell を使用して長期保有バックアップをコピーする

新しく導入された PowerShell コマンド Copy-AzSqlDatabaseLongTermRetentionBackup を使用すると、Azure Germany から Azure グローバル リージョンに長期保有バックアップをコピーできます。

  1. バックアップの名前を使用して LTR バックアップをコピーする 次の例では、バックアップ名を使用して Azure Germany から Azure グローバル リージョンに LTR バックアップをコピーする方法を示します。
# Source database and target database info
$location = "<location>"
$sourceRGName = "<source resourcegroup name>"
$sourceServerName = "<source server name>"
$sourceDatabaseName = "<source database name>"
$backupName = "<backup name>"
$targetDatabaseName = "<target database name>"
$targetSubscriptionId = "<target subscriptionID>"
$targetRGName = "<target resource group name>"
$targetServerFQDN = "<targetservername.database.windows.net>"

Copy-AzSqlDatabaseLongTermRetentionBackup 
    -Location $location 
    -ResourceGroupName $sourceRGName 
    -ServerName $sourceServerName 
    -DatabaseName $sourceDatabaseName
    -BackupName $backupName
    -TargetDatabaseName $targetDatabaseName 
    -TargetSubscriptionId $targetSubscriptionId
    -TargetResourceGroupName $targetRGName
    -TargetServerFullyQualifiedDomainName $targetServerFQDN 
  1. バックアップの resourceID を使用して LTR バックアップをコピーする 次の例では、バックアップの resourceID を使用して Azure Germany から Azure グローバル リージョンに LTR バックアップをコピーする方法を示します。 この例は、削除されたデータベースのバックアップのコピーにも使用できます。
$location = "<location>"
# list LTR backups for All databases (you have option to choose All/Live/Deleted)
$ltrBackups = Get-AzSqlDatabaseLongTermRetentionBackup -Location $location -DatabaseState All

# select the LTR backup you want to copy
$ltrBackup = $ltrBackups[0]
$resourceID = $ltrBackup.ResourceId

# Source Database and target database info
$targetDatabaseName = "<target database name>"
$targetSubscriptionId = "<target subscriptionID>"
$targetRGName = "<target resource group name>"
$targetServerFQDN = "<targetservername.database.windows.net>"

Copy-AzSqlDatabaseLongTermRetentionBackup 
    -ResourceId $resourceID 
    -TargetDatabaseName $targetDatabaseName 
    -TargetSubscriptionId $targetSubscriptionId
    -TargetResourceGroupName $targetRGName
    -TargetServerFullyQualifiedDomainName $targetServerFQDN

制限事項

  • ポイントインタイム リストア (PITR) バックアップは、プライマリ データベースでのみ作成されます。これは設計によるものです。 Geo-DR を使用して Azure Germany からデータベースを移行すると、フェールオーバー後に新しいプライマリで PITR バックアップが開始されます。 ただし、既存の PITR バックアップ (Azure Germany での前のプライマリ上) は移行されません。 PITR バックアップでポイントインタイム リストアのシナリオをサポートする必要がある場合は、Azure Germany で PITR バックアップからデータベースを復元した後、回復されたデータベースをグローバル Azure に移行する必要があります。
  • 長期保有ポリシーは、データベースと一緒に移行されません。 Azure Germany のデータベースに長期保有 (LTR) ポリシーがある場合は、LTR ポリシーを手動でコピーし、移行後に新しいデータベースで作成し直す必要があります。

アクセス権の要求

geo レプリケーションを使用して Azure Germany からグローバル Azure にデータベースを移行するには、クラウド間の移行を正常に構成するために Azure Germany のサブスクリプションを有効にする必要があります。

Azure Germany のサブスクリプションを有効にするには、次のリンクを使用して移行サポート リクエストを作成する必要があります。

  1. 次の移行サポート リクエストを参照してください。

  2. [基本] タブで、 [概要] に「Geo-DR migration」と入力してから、 [次へ: 解決策] を選択します

    新しいサポート リクエスト フォーム

  3. [推奨される手順] を確認してから、 [次: 詳細] を選択します。

    必要なサポート リクエスト情報

  4. 詳細ページで、以下を設定します。

    1. [説明] ボックスに、移行先のグローバル Azure サブスクリプション ID を入力します。 データベースを複数のサブスクリプションに移行するには、データベースを移行する先のグローバル Azure ID のリストを追加します。
    2. 連絡先情報 (名前、会社名、メール、電話番号) を指定します。
    3. フォームを完成してから、 [次: 確認および作成] を選択します。

    サポート リクエストの詳細

  5. サポート リクエストを確認して、 [作成] を選択します。

要求が処理されると、連絡を受け取ります。

Azure Cosmos DB

Azure Cosmos DB データ移行ツールを使用して Azure Cosmos DB にデータを移行することができます。 Azure Cosmos DB データ移行ツールは、JSON ファイル、MongoDB、SQL Server、CSV ファイル、Azure Table Storage、Amazon DynamoDB、HBase、Azure Cosmos コンテナーなど、さまざまなソースから Azure Cosmos DB にデータをインポートするオープンソース ソリューションです。

Azure Cosmos DB データ移行ツールは、グラフィカル インターフェイス ツールまたはコマンド ライン ツールとして使用できます。 ソース コードは、Azure Cosmos DB データ移行ツール GitHub リポジトリで入手できます。 ツールのコンパイル済みバージョンは、Microsoft ダウンロード センターで入手できます。

Azure Cosmos DB リソースを移行するには、次の手順を完了することをお勧めします。

  1. アプリケーションのアップタイム要件およびアカウント構成を確認して、最適なアクション プランを決定します。
  2. データ移行ツールを実行して、Azure Germany から新しいリージョンにアカウント構成を複製します。
  3. メンテナンス ウィンドウを使用できる場合は、データ移行ツールを実行することによって、ソースから宛先にデータをコピーします。
  4. メンテナンス ウィンドウを使用できない場合は、ツールを実行してソースから宛先にデータをコピーしてから、次の手順を完了します。
    1. 構成主導のアプローチを使用して、アプリケーションでの読み取り/書き込みに変更を加えます。
    2. 初回の同期を完了します。
    3. 増分同期を設定し、変更フィードを反映します。
    4. 新しいアカウントの読み取りを指示し、アプリケーションを確認します。
    5. 古いアカウントへの書き込みを停止し、変更フィードが反映されていることを確認してから、新しいアカウントに対する書き込みを指示します。
    6. このツールを停止し、古いアカウントを削除します。
  5. 新旧のアカウント間でデータが一貫性のあることを検証するツールを実行します。

詳細情報:

Azure Cache for Redis

Azure Cache for Redis インスタンスを Azure Germany からグローバル Azure に移行する場合には、いくつかのオプションがあります。 選択するオプションは、要件によって異なります。

オプション 1: データ損失を受け入れ、新しいインスタンスを作成する

次の両方の条件が該当する場合、このアプローチは最も道理にかなっています。

  • 一時的なデータ キャッシュとして Azure Cache for Redis を使用している。
  • アプリケーションが新しいリージョンにキャッシュ データを自動的に再取り込みする。

データ損失とともに移行し、新しいインスタンスを作成するには、次のようにします。

  1. 新しいターゲット リージョンに新しい Azure Cache for Redis インスタンスを作成します。
  2. 新しいリージョンの新しいインスタンスを使用するようにアプリケーションを更新します。
  3. ソース リージョンで古い Azure Cache for Redis インスタンスを削除します。

オプション 2: ソース インスタンスからターゲット インスタンスにデータをコピーする

Azure Cache for Redis チームのメンバーは、Azure Cache for Redis のあるインスタンスから別のインスタンスにインポートまたはエクスポート機能を必要とせずデータをコピーする、オープン ソース ツールを作成しました。 そのツールについては、以下の手順の手順 4 を参照してください。

対象インスタンスにソース インスタンスからデータをコピーするには、次のようにします。

  1. ソース リージョンに VM を作成します。 Azure Cache for Redis のデータセットが大きい場合は、コピー時間を最小限にするために、必ず比較的強力な VM サイズを選択するようにします。
  2. ターゲット リージョンに新しい Azure Cache for Redis インスタンスを作成します。
  3. ターゲット インスタンスからデータをフラッシュします。 (ソース インスタンスからフラッシュしないようにしてください。コピー ツールがターゲットの場所にある既存のキーを上書きしないため、フラッシュが必要です)。
  4. ソースの Azure Cache for Redis インスタンスからターゲットの Azure Cache for Redis インスタンスにデータを自動的にコピーするには、次のツールを使用します: ツール ソースツール ダウンロード

注意

このプロセスは、データセットのサイズに応じて長時間かかる場合があります。

オプション 3: ソース インスタンスからエクスポートして、ターゲット インスタンスにインポートする

このアプローチでは、Premium レベルでのみ利用できる機能を利用します。

ソース インスタンスからエクスポートし、宛先インスタンスにインポートするには、次のようにします。

  1. ターゲット リージョンに、新しい Premium レベルの Azure Cache for Redis を作成します。 ソースの Azure Cache for Redis インスタンスと同じサイズを使用します。

  2. ソースのキャッシュからデータをエクスポートするか、または Export-AzRedisCache PowerShell コマンドレットを使用します。

    注意

    エクスポート Azure Storage アカウントは、キャッシュ インスタンスと同じリージョンに存在する必要があります。

  3. エクスポートされた BLOB を宛先リージョンのストレージ アカウントに (たとえば AzCopy を使用して) コピーします。

  4. 宛先キャッシュにデータをインポートするか、または Import-AzRedisCAche PowerShell コマンドレットを使用します。

  5. ターゲットの Azure Cache for Redis を使用するように、アプリケーションを再構成します。

オプション 4: データを 2 つの Azure Cache for Redis インスタンスに書き込み、1 つのインスタンスから読み取る

このアプローチの場合、アプリケーションを変更する必要があります。 アプリケーションは、いずれかのキャッシュ インスタンスからの読み取り中に、複数のキャッシュ インスタンスにデータを書き込む必要があります。 このアプローチは、Azure Cache for Redis に格納されたデータが次の条件を満たしている場合に有効です。

  • データは定期的に更新されます。
  • すべてのデータがターゲットの Azure Cache for Redis に書き込まれる。
  • すべてのデータを更新するのに十分な時間がある。

詳細情報:

PostgreSQL と MySQL

詳細については、PostgreSQL および MySQL のデータのバックアップと移行に関するセクションの記事を参照してください。

PostgreSQL と MySQL

次のステップ

次のサービス カテゴリのリソースを移行するためのツール、テクニック、および推奨事項について学習します。