オンプレの SQL Server から Azure SQL Database に移行してみる
この記事について
この記事は、Azure SQL & Synapse Analytics Advent Calendar 2020 4 日目の記事です。
この記事では、オンプレミスの SQL Server を Microsoft Azure で提供されている PaaS の Azure SQL Database へ移行する手順について解説します。
SQL Server から Azure SQL Database への移行
移行を始める前に
オンプレミス、または IaaS の VM 上に展開されている SQL Server を Azure SQL Database に移行するには、大きく分けて、以下を実施することになります。
- 移行元となる SQL Server の準備
- 移行先となる
Azure SQL Database
インスタンスの作成 - Data Migration Assistant (DMA) のダウンロードとインストール
- DMA でデータベースの移行に関する影響調査を実施
- DMA でデータベースを移行
移行元となる SQL Server の作成
移行元となる SQL Server の環境を準備します。
今回は、Windows PC 上に SQL Server 2019 Developer を作成し、移行用 DB のサンプルとして、AdventureWorks2019
のデータベースを用意しています。
移行先となる Azure SQL Database の作成
Azure SQL Database の作成ついては、本記事では詳しくは触れません。
以下のリンクの情報などを参考に、移行先となる Azure SQL Database を用意します。
必要に応じて、サーバーファイアウォールの設定
を行ってください。
az login
$resourceGroupName = "selfstudy-dataplatform-japaneast"
$location = "japaneast"
$adminlogin = "azureuser"
$password = <任意のパスワード>
$serverName = <移行先の SQL Database サーバー名>
$startip = "0.0.0.0"
$endip = "0.0.0.0"
az group create --name $resourceGroupName --location $location
az sql server create --name $serverName --resource-group $resourceGroupName --location $location --admin-user $adminlogin --admin-password $password
az sql db create --resource-group $resourceGroupName --server $serverName --name migrationSample --edition GeneralPurpose --compute-model Serverless --family Gen5 --capacity 2
az sql server firewall-rule create --resource-group $resourceGroupName --server $serverName -n AllowYourIp --start-ip-address $startip --end-ip-address $endip
Data Migration Assistant のインストール
Windows OS の環境に Data Migration Assistant
をインストールします。
ダウンロードサイトから、インストーラーをダウンロードして、インストールを行ってください。
インストールする環境は、移行元の SQL Server、および、移行先の Azure SQL Database に接続できる場所であればどこでも OK です。
Microsoft.DataMigration リソース プロバイダーの登録
Azure ポータル上で、Microsoft.DataMigration リソース プロバイダー
を登録していない場合は、登録します。
Azure ポータル画面で、すべてのサービス
を選択します。
カテゴリで全般
を選択し、サブスクリプション
を選択します。
Azure Database Migration Service のインスタンス作成に使用する Azure サブスクリプションを選択します。
リソースプロバイダー
を選択し、Microsoft.DataMigration
が Registered になっているか確認します。Registered 担っていない場合は、登録 ボタンを選択して、登録を行ってください。
Data Migration Assistant の実行
Data Migration Assistant を実行して、SQL Server と Azure SQL Database との間でデータベース機能に影響する可能性がある互換性の問題
が存在しないかどうか、事前に検出を行います。
互換性の問題の内容としては、大きく分類して以下の内容が示されます。
- 互換性に影響する変更
- 動作の変更
- 非推奨の機能
移行するにあたっての問題を解決した後、Data Migration Assistant を使用して、そのままデータ移行を行うこともできます。
互換性の問題の検出
Data Migration Assistant
を起動します。
画面左にある +
(New) を選択 します。
Project Type
で Assessment
を選択します。
Assessment Type
で Database Engine
を選択します。
Project name
には任意の名前を入力します。
Source server type
と Target server type
には、今回は SQL Server
と Azure SQL Database
をそれぞれ選択します。
設定が完了したら、Create
を選択します。
Select report type
画面で、確認する内容について選択します。
希望する確認項目にチェックを入れ、Next を選択します。
移行元のデータベースの接続情報
を入力します。
入力が完了したら、Connect
を選択します。
移行元のデータベースへの接続が完了したら、アセスメントを行う対象のデータベースのチェックボックスをチェック ON にします。
その後、Add を選択します。
確認画面が表示されるので、Start Assessment
を選択して、アセスメントを開始します。
アセスメントが完了したら、先ほど選択した確認内容に関するレポート
が出力されます。
記載の内容に従って、移行のために必要な対処を実施してください。
また、アセスメント結果はレポートとして出力
することも可能です。
データ移行
移行に必要な対処が完了したら、実際にデータを移行していきます。
Microsoft Docs などでは、Azure Database Migration Service
へのリンクなどがありますが、今回は Data Migration Assistant で行います。
先ほど同様、Data Migration Assistant
の画面左にある +
(New) を選択 します。
Project Type
で Migrate
を選択します。
Project name
には任意の名前を入力します。
Source server type
と Target server type
には、今回は SQL Server
と Azure SQL Database
をそれぞれ選択します。
今回は、テーブルとデータ両方を移行するため、Migration scope
には、Schema and data
を選択 します。
設定が完了したら、Create
を選択します。
移行元の SQL Server の接続情報を入力します。
入力後、Connect
を選択します。
移行元の SQL Server インスタンス内に存在するデータベース一覧が表示されます。
今回は AdventureWorks2019
データベースを移行するので、こちらを選択し、Next
を選択します。
次に、移行先の Azure SQL Database サーバーの接続情報を入力します。
入力後、Connect
を選択します。
Azure SQL Database サーバ上にある、Azure SQL Database データベース一覧が表示されます。
今回は、migrationSample
という名前の Single Database (単一データベース) にデータを移行するので、こちらを選択します。
移行元の SQL Server から、移行先の Azure SQL Database に移行するスキーマのオブジェクト
を選択します。
今回は、特に指定などはしないので、すべてにチェックを入れた状態にしています。
Generate SQL script
を選択します。
Data Migration Assistant がスキーマオブジェクトなどを移行するためのスクリプトを生成します。処理が完了するまで少し待ちます。
スクリプトの生成が完了したら、内容を確認の上、Deploy schema
を選択します。
スクリプトの実行が正常終了したら、Migrate data
を選択して、データの移行に入ります。
データを移行するテーブル
を選択します。
今回は、特に指定などはしないので、すべてにチェックを入れた状態にしています。
Start data migration
を選択します。
Data Migration Assistant がテーブルデータなどを移行するためのスクリプトを生成し、実行します。処理が完了するまで少し待ちます。
移行対象のテーブルすべての移行処理が正常終了したら、データの移行は完了です。
移行データの確認
Azure ポータルから、クエリエディター (プレビュー)
を使用して、Azure SQL Database にログインし、データが移行されたか確認します。
下記の画像の通り、スキーマオブジェクト、およびテーブルとその中に含まれるデータが正常に移行されたことを確認できるはずです。
さいごに
今回は、オンプレミスの SQL Server から Azure SQL Database に対して、データ移行を行う方法について紹介しました。
実は、この Data Migration Assistant
ですが、オンプレミスの SQL Server から、オンプレミスの SQL Server に対して、データを移行することも可能だったりします。
ぜひ、この機会に、Data Migration Assistant
を使い始めてみてください。
Discussion