自動化を使用してデータベースを大規模に移行する (プレビュー)

Azure Data Studio の Azure SQL 移行拡張機能 では、簡略化された評価、レコメンデーション、移行エクスペリエンスが 1 つになっており、次の機能を利用できます。

  • 強化された評価メカニズムにより、SQL Server のインスタンスが評価されて、異なる Azure SQL ターゲットに移行する準備ができているデータベースが特定されます。
  • オンプレミスのソース SQL Server インスタンスからパフォーマンス データを収集し、Azure SQL ターゲットに基づいて適切なサイズの SKU の推奨を生成する SKU レコメンデーション エンジン (プレビュー)。
  • データ移動アクティビティを調整し、シームレスな移行エクスペリエンスを提供する、Azure Database Migration Service を利用する信頼性の高い Azure サービス。
  • ビジネスの要件に合わせて、オンライン (最小限のダウンタイムが求められる移行) またはオフライン (移行の期間全体を通してダウンタイムが継続する移行) いずれかの移行モードを実行する機能。
  • オンプレミス環境のソース SQL Server とバックアップにアクセスするための独自のコンピューティングを提供する、セルフホステッド統合ランタイムを作成して構成できる柔軟性。

PowerShell - Azure DataMigration Service モジュールAzure CLIなどの自動化ツールを使用すると、Azure Database Migration Service と共に Azure SQL Migration 拡張機能の機能を適用して、大規模な 1 つ以上のデータベース (複数の SQL Server インスタンス間のデータベースを含む) を移行できます。

次のサンプル スクリプトを参照し、Azure PowerShell または Azure CLI を使う実際の移行シナリオに合わせることができます。

移行シナリオ [スクリプト言語]
SQL Server の評価 PowerShell / Azure CLI
SQL Server から Azure SQL Managed Instance へ (ファイル共有を使用) PowerShell / Azure CLI
SQL Server から Azure SQL Managed Instance へ (Azure Storage を使用) PowerShell / Azure CLI
SQL Server から Azure Virtual Machines 上の SQL Server へ (ファイル共有を使用) PowerShell / Azure CLI
SQL Server から Azure Virtual Machines 上の SQL Server へ (Azure Storage を使用) PowerShell / Azure CLI
SQL Server から Azure SQL Database へ PowerShell / Azure CLI
SKU の推奨事項 (プレビュー) PowerShell / Azure CLI
エンドツーエンドの移行の自動化 PowerShell / Azure CLI
複数のデータベースでのエンドツーエンドの移行の自動化 PowerShell / Azure CLI

前提条件

Azure PowerShell または Azure CLI を使用する、サポートされているすべての移行シナリオに共通する前提条件は次のとおりです。

  • 次に示す組み込みロールのいずれかに割り当てられている Azure アカウントを用意します。

    • ターゲット Azure SQL Managed Instanceの共同作成者。Azure Virtual Machines または Azure SQL Database でSQL Serverし、ストレージ アカウントを使用して SMB ネットワーク共有からデータベース バックアップ ファイルをアップロードします (Azure SQL Database には適用されません)。
    • ターゲットの Azure SQL Managed Instance、Azure Virtual Machines 上の SQL Server、または Azure SQL Database を含む Azure リソース グループに対する閲覧者ロール。
    • Azure サブスクリプションの所有者または共同作成者ロール。

    重要

    Azure アカウントは、移行手順の実行時にのみ必要であり、評価または Azure の推奨手順のプロセスでは必要ありません。

  • ターゲット Azure SQL Managed Instanceの作成、Azure 仮想マシンでのSQL Server、またはデータベースのAzure SQL

    重要

    ターゲットがデータベースAzure SQL場合は、dacpac 拡張機能を使用してソースからターゲットSQL Server移行するか、Azure Data Studio 用の Projects 拡張機能SQL Database移行する必要があります。

    既存の Azure Virtual Machine がある場合、フル管理モードで SQL IaaS Agent 拡張機能に登録する必要があります。

  • ターゲットが Azure SQL Managed Instance またはAzure Virtual Machine 上の SQL Server である場合は、ソース SQL Server への接続に使用されるログインが sysadmin サーバー ロールのメンバーであるか、 CONTROL SERVER アクセス許可を持っていることを確認します。

  • ターゲットがデータベースAzure SQL場合は、ソース SQL Serverの接続に使用されるログインがメンバーでありdb_datareader、ターゲット SQL サーバーの および ログインが db_ownerであることを確認します。

  • データベースの完全バックアップ ファイルとトランザクション ログ バックアップ ファイルに、次のいずれかのストレージ オプションを使用します。

    • SMB ネットワーク共有
    • Azure ストレージ アカウントのファイル共有または BLOB コンテナー

    重要

    • データベース バックアップ ファイルが SMB ネットワーク共有で提供されている場合は、DMS サービスがデータベース バックアップ ファイルをアップロードできる Azure ストレージ アカウントを作成します。 Azure Storage アカウントは、Azure Database Migration Service インスタンスの作成先と同じリージョンに作成してください。
    • Azure ストレージ アカウント BLOB コンテナーが、バックアップ ファイルのみを格納するために排他的に使用されていることを確認します。 その他の種類のファイル (txt、png、jpg など) は、復元プロセスに干渉し、エラーが発生します。
    • Azure Database Migration Service によってバックアップが開始されることはなく、移行には既存のバックアップが使用されます。これは、ディザスター リカバリー計画の一部として既に作成されている場合があります。
    • 各バックアップは、独立したバックアップ ファイルまたは複数のバックアップ ファイルに書き込まれます。 ただし、1 つのバックアップ メディアに複数のバックアップ (完全バックアップとトランザクション ログなど) を追加することはサポートされていません。
    • 大きなバックアップの移行に関連する潜在的な問題が発生する可能性を低減するには、圧縮されたバックアップを使用します。
  • ソース SQL Server インスタンスを実行しているサービス アカウントに、データベース バックアップ ファイルが格納されている SMB ネットワーク共有に対する読み取りおよび書き込みアクセス許可があることを確認します。

  • Transparent Data Encryption (TDE) で保護されているデータベースのソース SQL Server インスタンス証明書は、データを移行する前に、ターゲットの Azure SQL Managed Instance または Azure Virtual Machine 上の SQL Server に移行する必要があります。 TDE 対応データベースの移行の詳細については、「チュートリアル: Azure Data Studio で TDE 対応データベース (プレビュー) を Azure SQL に移行する」を参照してください。

    ヒント

    データベースに Always Encrypted で保護されている機密データが含まれている場合、Azure Data Studio と DMS を使用した移行プロセスでは、ターゲットの Azure SQL Managed Instance または Azure 仮想マシン上の SQL Server に Always Encrypted キーが自動的に移行されます。

  • データベース バックアップがネットワーク ファイル共有にある場合は、データベース バックアップにアクセスして移行するためのセルフホステッド統合ランタイムをインストールするマシンを用意します。 Azure PowerShell または Azure CLI のモジュールは、セルフホステッド統合ランタイムを登録するための認証キーを提供します。 移行の準備として、セルフホステッド統合ランタイムをインストールする予定のマシンで、次のアウトバウンド ファイアウォール規則とドメイン名が有効になっていることを確認します。

    ドメイン名 送信ポート 説明
    パブリック クラウド: {datafactory}.{region}.datafactory.azure.net
    または *.frontend.clouddatahub.net
    Azure Government: {datafactory}.{region}.datafactory.azure.us
    中国: {datafactory}.{region}.datafactory.azure.cn
    443 セルフホステッド統合ランタイムがデータ移行サービスに接続するために必要です。
    パブリック クラウドに新しく作成されたデータ ファクトリの場合、セルフホステッド統合ランタイム キーから {datafactory}.{region}.datafactory.azure.net 形式の FQDN を見つけます。 古いデータ ファクトリで、セルフホステッド統合キーに FQDN が見つからない場合は、代わりに *.frontend.clouddatahub.net を使用してください。
    download.microsoft.com 443 セルフホステッド統合ランタイムが更新プログラムをダウンロードするために必要です。 自動更新を無効にしている場合は、このドメインの構成をスキップできます。
    *.core.windows.net 443 ネットワーク共有からデータベース バックアップをアップロードするために Azure ストレージ アカウントに接続するセルフホステッド統合ランタイムによって使用されます

    ヒント

    データベース バックアップ ファイルが Azure ストレージ アカウントで既に提供されている場合、移行プロセス中にセルフホステッド統合ランタイムは不要です。

  • セルフホステッド統合ランタイムを使用する場合は、ランタイムがインストールされているマシンが、ソース SQL Server インスタンスと、バックアップ ファイルがあるネットワーク ファイル共有に接続できることを確認します。

  • 送信ポート 445 を有効にして、ネットワーク ファイル共有にアクセスする必要があります。

  • Azure Database Migration Service を初めて使用する場合は、Microsoft.DataMigration リソース プロバイダーがサブスクリプションに登録されていることを確認します。 リソース プロバイダーを登録する手順に従ってください

    重要

    移行ターゲットがデータベースAzure SQL場合、この移行を実行するためにバックアップは必要ありません。 Azure SQL Database への移行は、データベースの事前作成とデータ移動 (DMS によって実行) を伴う論理的な移行と見なされます。

データベースの移行を自動化する

Azure PowerShell の Az.DataMigration または Azure CLI の az datamigrationを使用すると、Azure Database Migration Service の作成を自動化し、オンライン移行用にデータベースの移行を構成し、カットオーバーを実行することで、データベースを移行できます。 さらにいくつかのコマンドと機能が、 Azure サンプルに記載されています。

Azure CLI を使用してSQL Server データベースの移行を自動化する例: 手順 1: データベースの移行アクティビティを調整する Azure Database Migration Service を作成します。

#STEP 1: Create Database Migration Service
az datamigration sql-service create --resource-group "myRG" --sql-migration-service-name "myMigrationService" --location "EastUS2"

ステップ 2: オンプレミスの SQL Server (および Azure Storage のバックアップ) から Azure SQL Managed Instance へのオンライン データベース移行を構成して開始します。

#STEP 2: Start Migration
az datamigration sql-managed-instance create `
--source-location '{\"AzureBlob\":{\"storageAccountResourceId\":\"/subscriptions/mySubscriptionID/resourceGroups/myRG/providers/Microsoft.Storage/storageAccounts/dbbackupssqlbits\",\"accountKey\":\"myAccountKey\",\"blobContainerName\":\"dbbackups\"}}' `
--migration-service "/subscriptions/mySubscriptionID/resourceGroups/myRG/providers/Microsoft.DataMigration/SqlMigrationServices/myMigrationService" `
--scope "/subscriptions/mySubscriptionID/resourceGroups/myRG/providers/Microsoft.Sql/managedInstances/mySQLMI" `
--source-database-name "AdventureWorks2008" `
--source-sql-connection authentication="SqlAuthentication" data-source="mySQLServer" password="myPassword" user-name="sqluser" `
--target-db-name "AdventureWorks2008" `
--resource-group myRG `
--managed-instance-name mySQLMI

ステップ 3: すべてのバックアップが Azure SQL Managed Instance に復元されたら、移行カットオーバーを実行します。

#STEP 3: Get migration ID and perform Cutover
$migOpId = az datamigration sql-managed-instance show --managed-instance-name "mySQLMI" --resource-group "myRG" --target-db-name "AdventureWorks2008" --expand=MigrationStatusDetails --query "properties.migrationOperationId"
az datamigration sql-managed-instance cutover --managed-instance-name "mySQLMI" --resource-group "myRG" --target-db-name "AdventureWorks2008" --migration-operation-id $migOpId

「サブスクリプションは名前空間 'Microsoft.DataMigration' を使用するように登録されていません。サブスクリプションを登録する方法については https://aka.ms/rps-not-found を参照してください」、というエラー が表示された場合は、次のコマンドを実行します。

   Register-AzResourceProvider -ProviderNamespace "Microsoft.DataMigration"

次のステップ

  • SQL Server データベース移行に関する Azure PowerShell のリファレンス ドキュメントについては、「Az.DataMigration」をご覧ください。
  • SQL Server データベース移行に関する Azure CLI のリファレンス ドキュメントについては、「az datamigration」をご覧ください。
  • Azure サンプル コード リポジトリについては、data-migration-sql をご覧ください