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

Azure Data Studio の Azure SQL 移行拡張機能を使うと、評価を行い、Azure の推奨事項を取得し、SQL Server データベースを Azure に移行できます。 Azure PowerShell または Azure CLI で自動化を使うと、Azure Database Migration Service の拡張機能の機能を利用して、1 つまたは複数のデータベースを大規模に移行できます (複数の SQL Server インスタンスにまたがるデータベースを含む)。

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

[スクリプト言語] 移行シナリオ Azure サンプルのリンク
PowerShell SQL Server の評価 Azure-Samples/data-migration-sql/PowerShell/sql-server-assessment
PowerShell SQL Server に関する Azure の推奨事項 (SKU) Azure-Samples/data-migration-sql/PowerShell/sql-server-sku-recommendation
PowerShell SQL Server から Azure SQL Managed Instance へ (ファイル共有を使用) Azure-Samples/data-migration-sql/PowerShell/sql-server-to-sql-mi-fileshare
PowerShell SQL Server から Azure SQL Managed Instance へ (Azure Storage を使用) Azure-Samples/data-migration-sql/PowerShell/sql-server-to-sql-mi-blob
PowerShell SQL Server から Azure Virtual Machines 上の SQL Server へ (ファイル共有を使用) Azure-Samples/data-migration-sql/PowerShell/sql-server-to-sql-vm-fileshare
PowerShell SQL Server から Azure Virtual Machines 上の SQL Server へ (Azure Storage を使用) Azure-Samples/data-migration-sql/PowerShell/sql-server-to-sql-vm-blob
PowerShell SQL Server から Azure SQL Database Azure-Samples/data-migration-sql/PowerShell/sql-server-to-sql-db
PowerShell サンプル: エンドツーエンドの移行の自動化 Azure-Samples/data-migration-sql/PowerShell/scripts/
PowerShell サンプル: 複数のデータベースでのエンドツーエンドの移行の自動化 Azure-Samples/data-migration-sql/PowerShell/scripts/multiple%20databases/
CLI SQL Server の評価 Azure-Samples/data-migration-sql/CLI/sql-server-assessment
CLI SQL Server に関する Azure の推奨事項 (SKU) Azure-Samples/data-migration-sql/CLI/sql-server-sku-recommendation
CLI SQL Server から Azure SQL Managed Instance へ (ファイル共有を使用) Azure-Samples/data-migration-sql/CLI/sql-server-to-sql-mi-fileshare
CLI SQL Server から Azure SQL Managed Instance へ (Azure Storage を使用) Azure-Samples/data-migration-sql/CLI/sql-server-to-sql-mi-blob
CLI SQL Server から Azure Virtual Machines 上の SQL Server へ (ファイル共有を使用) Azure-Samples/data-migration-sql/CLI/sql-server-to-sql-vm-fileshare
CLI SQL Server から Azure Virtual Machines 上の SQL Server へ (Azure Storage を使用) Azure-Samples/data-migration-sql/CLI/sql-server-to-sql-vm-blob
CLI SQL Server から Azure SQL Database Azure-Samples/data-migration-sql/CLI/sql-server-to-sql-db
CLI サンプル: エンドツーエンドの移行の自動化 Azure-Samples/data-migration-sql/CLI/scripts/
CLI サンプル: 複数のデータベースでのエンドツーエンドの移行の自動化 Azure-Samples/data-migration-sql/CLI/scripts/multiple%20databases/

前提条件

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

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

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

    重要

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

  • ターゲットの Azure SQL Managed InstanceAzure Virtual Machines 上の SQL Server、または Azure SQL Database を作成します

    重要

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

  • ソース SQL Server の接続に使用するログイン情報が、sysadmin サーバー ロールのメンバーであるか、 アクセス許可が付与されていることを確認します。

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

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

    重要

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

  • Transparent Data Encryption (TDE) で保護されているデータベースのソース SQL Server インスタンス証明書は、データを移行する前に、ターゲットの Azure SQL Managed Instance または Azure 仮想マシン上の SQL Server に移行する必要があります。 詳細については、「TDE で保護されたデータベースの証明書を Azure SQL Managed Instance に移行する」および「別の SQL Server への TDE で保護されたデータベースの移動」を参照してください。

    ヒント

    データベースに 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 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 をご覧ください