Azure VM SKU でオンプレミス データベースに適切な Azure SQL Database、Azure SQL Managed Instance、または SQL Server を識別する

クラウドへのデータベースの移行は複雑になる可能性があります。 Azure VM ターゲットと SKU でお使いのデータベースに最適な Azure SQL Database、SQL Managed Instance、または SQL Server を選ぼうとするときは特にそうです。 Database Migration Assistant (DMA) は、このような質問に対処し、これらの SKU の推奨をわかりやすい出力で提供することにより、データベースの移行エクスペリエンスを容易にするのに役立ちます。 パフォーマンス データ DMA を使うと、適切なターゲット Azure SQL SKU を推奨し、推奨の説明を提供できるようになりました。

SKU 推奨機能を使うと、データベースをホストしているソース SQL Server インスタンスからパフォーマンス データを収集し、収集されたデータに基づいて Azure VM SKU での最小の Azure SQL Database、Azure SQL Managed Instance、または SQL Server を推奨できます。 この機能では、価格レベル、コンピューティング レベル、データ サイズに関連する推奨が提供されます。 この機能は、現在、コマンド ライン インターフェイス (CLI) でのみ使用できます。

DMA を使って、SKU の推奨を決定し、対応するデータベースを Azure でプロビジョニングする手順を次に示します。

Note

VMware 上の SQL Server データ資産全体を大規模に評価している場合は、Azure Migrate を使用して、Azure SQL デプロイに関する推奨事項、ターゲットのサイズ設定、月単位の見積もりを取得します。

前提条件

  • 最新バージョンの DMA をダウンロードしてインストールします。 以前のバージョンのツールを既に使っている場合は、それを開くと、DMA のアップグレードを求められます。
  • SKU 推奨コンソール アプリケーションが実行されているツール マシンに、最小バージョンの .NET Core 6.0 をインストールします。
  • SQL Server のオンプレミス ソースへの接続に使われるアカウントに、sysadmin アクセス許可があることを確認します。

Note

潜在的なオーバーヘッドを最小限に抑えるため、SQL Server 自体をホストするマシンからではなく、ターゲット SQL インスタンスに接続できる別のツール (クライアント) マシンから、このツールを使うことをお勧めします。 SKU 推奨のためのパフォーマンス データを収集するときは、既定のオプション値で数時間ツールを実行し、オフピークとオンピーク両方のワークロードをカバーして、インデックスの再構築やデータベースのバックアップなどのメンテナンス タスクを除外することをお勧めします。 メンテナンス タスクは、CPU、メモリ、IO の消費に影響を与え、後で推奨される SKU レベルが高くなる可能性があります。

パフォーマンス データを収集する

収集されるデータには、サーバーのハードウェア構成に関する限られた情報と、CPU、メモリ、ストレージ使用量、IO スループット、IO 待機時間など、システムの動的管理ビュー (DMV) から集計される SQL 固有のパフォーマンス データが含まれます。 収集されたデータは、さらに集計と分析を行うため、ローカル環境のコンピューターに格納されます。 ワークロードに最適でありながらコスト効率もよい Azure SQL オファリング (Azure VM 上の SQL Database、SQL Managed Instance、SQL など) の SKU を推奨できるよう、ソース インスタンスのパフォーマンス特性が分析されます。

DMA のインストール パスで、SQLAssessmentConsole フォルダーと SqlAssessment.exe アプリケーションを見つけます。

Screenshot of SKUConsoleApplication.exe file shown in DMA installation folder location.

データ収集プロセスを開始するには、コンソール アプリケーションで PerfDataCollection アクションを指定し、次の引数を渡します。

  • sqlConnectionStrings: (必須) ターゲット SQL インスタンスの引用符で囲まれた正式な接続文字列。
  • perfQueryIntervalInSec (省略可能): パフォーマンス データのクエリを実行する間隔 (秒単位)。 (既定値: 30)。
  • staticQueryIntervalInSec (省略可能): 静的構成データのクエリを実行して保持する間隔 (秒単位)。 (既定値: 60)。
  • numberOfIterations (省略可能): ファイルに永続化する前に実行するパフォーマンス データ収集の反復回数。 たとえば、既定値では、パフォーマンス データは 30 秒ごとに 20 回分、つまり 10 分保持されます。 (既定値: 20)。
  • outputFolder (省略可能): パフォーマンス データ、レポート、ログの書き込み先および読み取り元のフォルダー。 (既定値: %LocalAppData%/Microsoft/SqlAssessmentConsole)。

呼び出しの例を次に示します。

.\SqlAssessment.exe PerfDataCollection
--sqlConnectionStrings "Data Source=Server1;Initial Catalog=master;Integrated Security=True;" "Data Source=Server2;Initial Catalog=master;Integrated Security=True;"
--outputFolder C:\Output

または、JSON 構成ファイルで適切な引数を指定し、次のようにアクションなしで実行可能ファイルを実行して構成ファイルをツールに渡すことで、データ収集プロセスを呼び出すこともできます。

.\SqlAssessment.exe --configFile C:\path\to\config.json

以前説明した、パフォーマンス データ収集アクションと同等の ConfigFile の例を次に示します。

  {
    "action": "PerfDataCollection",
    "sqlConnectionStrings": [
    "Data Source=Server1;Initial Catalog=master;Integrated Security=True;",
    "Data Source=Server2;Initial Catalog=master;Integrated Security=True;"
    ],
    "outputFolder": "C:\\Output"
  }

すべてのアクションの構成ファイルの例は、DMA インストール パスの下の Example フォルダーにあります (GetMetadataSampleConfigFile.json、PerfDataCollectionSampleConfigFile.json、GetSkuRecommendationSampleConfigFile.json)。

コマンドの実行後、パフォーマンスと構成のデータ ポイントは、ターゲット インスタンスごとに 3 つの *_Counters.csv ファイルのセットとして保存され、それぞれにサーバーとインスタンスの名前が含まれます。 このファイルを、プロセスの次の部分の入力として使用できます。これにより、Azure VM での Azure SQL Database、Azure SQL Managed Instance、または SQL Server に関する SKU の推奨が提供されます。

コンソール アプリケーションを使用して SKU の推奨を取得する

前のステップで収集されたデータ ポイントは、SKU 推奨プロセスの入力として使われます。

単一データベース オプションの場合は、DMA により、Azure SQL Database の単一データベース層、コンピューティング レベル、および SQL インスタンス上の各データベースに推奨されるストレージ構成に関する推奨が提供されます。

Azure VM の Azure SQL Managed Instance と SQL Server に関する推奨では、リフト アンド シフト シナリオがサポートされています。 その結果、SKU 推奨コンソール アプリは、Azure SQL Managed Instance または Azure VM レベルの SQL Server、コンピューティング レベル、および SQL インスタンス上のデータベースのセットに推奨されるストレージ構成に関する推奨を提供できます。 データベースのサブセットのみを SKU の推奨に含める、または推奨から除外するよう指定することもできます。

GetSkuRecommendation により既定で使われるベースライン戦略では、(指定されたパーセンタイル値に基づいて) ワークロードを代表する収集されたパフォーマンス データ値が、適切な Azure SQL SKU にマップされます。 また、エラスティック戦略 (統計アプローチ) も提供されており、Azure SQL に既に移行したお客様に基づいてモデルを基にワークロード パターンを分析することで、収集されたパフォーマンス データに基づいて固有の価格対パフォーマンス曲線が生成されます。

SKU 推奨プロセスを開始するには、コンソール アプリケーションで GetSkuRecommendation アクションを指定し、次の引数を渡します。

  • perfQueryIntervalInSec(省略可能): パフォーマンス データのクエリが実行された間隔 (秒単位)。 注: 指定する値は、パフォーマンス データ収集時にもともと使われた値と一致している必要があります。 (既定値: 30)
  • targetPlatform(省略可能): SKU 推奨のターゲット プラットフォーム: AzureSqlDatabaseAzureSqlManagedInstanceAzureSqlVirtualMachine、またはAnyAny を選ぶと、3 つのターゲット プラットフォームすべてに対する SKU の推奨が評価され、最適な値が返されます。 (既定値: Any)
  • targetSqlInstance (省略可能): SKU 推奨のターゲットである SQL インスタンスの名前。 (既定値: perfDataCollection アクションによって作成されたファイルが outputFolder でスキャンされ、見つかったすべてのインスタンスに対して推奨が提供されます)
  • targetPercentile (省略可能): パフォーマンス データの集計中に使用されるデータ ポイントのパーセンタイル。 ベースライン (非エラスティック) 戦略にのみ使われます。 ベースライン (非エラスティック) 戦略にのみ使われます。 (既定値: 95)
  • scalingFactor (省略可能): SKU 推奨の間に使われるスケーリング ("快適性") 係数。 たとえば、スケーリング計数 150% で 4 仮想コア CPU の要件があると判断された場合、実際の CPU 要件は 6 仮想コアになります。 (既定値: 100)
  • startTime (省略可能): 集計時に考慮するパフォーマンス データ ポイントの UTC 開始時刻 (yyyy-MM-dd HH:mm 形式)。 ベースライン (非エラスティック) 戦略にのみ使われます。 (既定値: 収集されたすべてのデータ ポイントが考慮されます)
  • endTime (省略可能): 集計時に考慮するパフォーマンス データ ポイントの UTC 終了時刻 (yyyy-MM-dd HH:mm 形式) ベースライン (非エラスティック) 戦略にのみ使われます。 (既定値: 収集されたすべてのデータ ポイントが考慮されます)
  • elasticStrategy (省略可能): リソース使用状況プロファイルとコスト パフォーマンス分析に基づいて、SKU の推奨にエラスティック戦略を使うかどうか。 エラスティック戦略は現在、Azure SQL Database と SQL Managed Instance で使用できます。Azure VM ターゲットの SQL Server ではまだ使用できません。 (既定値: false)
  • databaseAllowList (省略可能): SKU 推奨の検討に使用できるデータベースの名前のスペース区切りリスト。他のすべては除外します。 databaseAllowList と databaseDenyList のどちらかを設定するか、またはどちらも設定しません。 (既定値: null)
  • databaseDenyList (省略可能): SKU の推奨で除外するデータベースの名前のスペース区切りリスト。 databaseAllowList と databaseDenyList のどちらかを設定するか、またはどちらも設定しません。 (既定値: null)
  • overwrite (省略可能): 既存の SKU 推奨レポートを上書きするかどうか。 (既定値: true)
  • displayResult (省略可能): SKU 推奨結果をコンソールに出力するかどうか。 (既定値: true)
  • outputFolder (省略可能): パフォーマンス データ、レポート、ログの書き込み先および読み取り元のフォルダー。 (既定値: %LocalAppData%\Microsoft\SqlAssessment)
  • suppressPreviewFeatures (省略可能): true に設定した場合、プレビュー期間中の Azure 機能は推奨に含まれません。 (既定値: false)

SKU 推奨の詳細設定は、ルート ディレクトリの Console.Settings.json ファイルにあります。 現在は、次のカスタマイズ可能なパラメーターが含まれます。

CommandTimeoutGroupSetting: SQL クエリ コマンドの実行がタイムアウトするまで待機する秒数。

  • PerfCollectionCommandTimeout: パフォーマンス データ収集に関連する、実行時間が長くなる可能性があるクエリのコマンド タイムアウト (既定値: 300)
  • DefaultCollectionCommandTimeout: 他のすべてのクエリのコマンド タイムアウト (既定値: 120)

ThrottlingGroupSetting: コンピューターのコア数に基づいて作成する並列タスクの数

  • ServerInstancesParallelCount: 並列で評価するサーバー インスタンスの数 (既定値: 2)
  • DatabasesParallelCount: 並列で評価するデータベースの数 (既定値: 4)
  • UserDefinedObjectsParallelCountPerDb: データベースごとに並列に評価するユーザー定義オブジェクト (ストアド プロシージャ、ビュー、トリガーなど) の数 (既定値: 4)

AllowTelemetry: 匿名の機能使用状況と診断データの収集と Microsoft への送信を許可するかどうか。 (既定値: true)

または、JSON 構成ファイルで適切な引数を指定し、次のようにアクションなしで実行可能ファイルを実行して構成ファイルをツールに渡すことで、SKU 推奨プロセスを呼び出すこともできます。

.\SqlAssessment.exe --configFile C:\path\to\config.json

以前説明した SKU の推奨事項アクションと同等の ConfigFile を、次に示します。

{
    "action": "GetSkuRecommendation",
    "outputFolder": "C:\\Output",
    "targetPlatform": "AzureSqlDatabase",
    "targetSqlInstance": "Server1",
    "targetPercentile": 95,
    "scalingFactor": 100,
    "startTime": "2020-01-01 00:00",
    "endTime": "2022-01-01 00:00",
    "perfQueryIntervalInSec": 30,
    "overwrite": "true"
}

1 つを自動的に選ぶのではなく、特定の Azure SQL プラットフォームに対する SKU の推奨を取得するには、次のように --targetPlatform オプションの値を指定します。

例 1: Azure SQL Database に対する SKU の推奨の取得。

.\SqlAssessment.exe GetSkuRecommendation
--outputFolder C:\Output
--targetPlatform AzureSqlDatabase

例 2: エラスティック戦略を使用した Azure SQL Managed Instance に対する SKU の推奨の取得。

.\SqlAssessment.exe GetSkuRecommendation
--outputFolder C:\Output
--targetPlatform AzureSqlManagedInstance
--elasticStrategy true

例 3: Azure SQL 仮想マシンに対する SKU の推奨の取得。

.\SqlAssessment.exe GetSkuRecommendation
--outputFolder C:\Output
--targetPlatform AzureSqlVirtualMachine

例 4: Azure SQL 仮想マシンに対する SKU の推奨の取得とプレビュー機能の抑制。

.\SqlAssessment.exe GetSkuRecommendation
--outputFolder C:\Output
--targetPlatform AzureSqlVirtualMachine
--suppressPreviewFeatures True

次のスクリーンショットは、Azure SQL Database の推奨の出力例です。

Screenshot of Azure SQL Database SKU tier and sizing recommendations shown in SQLAssessment console.

次のスクリーンショットは、Azure SQL Managed Instance の推奨の出力例です。

Screenshot of Azure SQL Managed Instance SKU tier and size recommendations shown in console.

次のスクリーンショットは、Azure VM での SQL Server の推奨の出力例です。

Screenshot of SQL Server on Azure VM SKU tier and size recommendations output shown in console.

SKU の推奨の出力は、JSON 形式の詳細レポートと、要約された読みやすい HTML ファイルの両方として保存されます。 出力には次のセクションが含まれます。

  • インスタンス名: オンプレミスの SQL Server インスタンスの名前
  • データベース名: オンプレミスの SQL Server データベースの名前
  • SKU の推奨: ワークロードに対応できるパフォーマンスを備えたすべての SKU の中で、コスト効率の高い最小の SKU オファリング。
  • 推奨の理由: 推奨されるレベルごとに、その推奨に至った理由と収集されたデータ値を提供します。

最終的に推奨されるレベルとそのレベルの構成値には、オンプレミス データベースと同程度の成功率で Azure においてクエリを実行するために必要な最小 SKU が反映されます。

次のステップ