移行ガイド: SQL Server から Azure SQL Database
適用対象: SQL Server
Azure SQL データベース
このガイドでは、SQL Server インスタンスを Azure SQL Database に移行する方法について説明します。
先に進む前に、移行前の手順を完了してください。
移行
移行前ステージの関連タスクを完了したら、スキーマとデータの移行を実行する準備は完了です。
選択した移行方法を使用してデータを移行します。
Azure Data Studio 用 Azure SQL Migration 拡張機能を使用して移行する
Azure Data Studio を使用してオフラインで移行を実行するには、次の大まかな手順に従います。 詳細なステップバイステップ チュートリアルについては、「チュートリアル: Azure Data Studio で SQL Server を Azure SQL データベース に移行する (オフライン)」を参照してください。
- Azure Data Studio と Azure SQL Migration 拡張機能をダウンロードしてインストールします。
- Azure Data Studio の拡張機能で Azure SQL Migration への移行ウィザードを起動します。
- 評価用のデータベースを選択し、移行の準備状況または問題 (存在する場合) を表示します。 さらに、パフォーマンス データを収集し、適切なサイズの Azure レコメンデーションを取得します。
- サブスクリプションから Azure アカウントと移行先の Azure SQL Database を選択します。
- 移行するテーブルのリストを選択します。
- Azure Data Studio のウィザードを使用して、新しい Azure Database Migration Service を作成します。 Azure Data Studio を使用して以前に Azure Database Migration Service を作成したことがある場合は、必要に応じてそれを再利用できます。
- 省略可能: バックアップがオンプレミスのネットワーク共有上にある場合は、ソース SQL Server に接続できるマシンと、バックアップ ファイルを含む場所にセルフホステッド統合ランタイムをダウンロードしてインストールします。
- データベースの移行を開始し、Azure Data Studio での進行状況を監視します。 Azure portal の Azure Database Migration Service リソースで進行状況を監視することもできます。
データの同期と切り替え
データの変更をソースからターゲットに継続的にレプリケートおよび同期する移行オプションを使用している場合、ソースのデータとスキーマが変更され、ターゲットと食い違う可能性があります。 データの同期中にソースのすべての変更がキャプチャされ、移行プロセス中にターゲットに適用されるようにしてください。
ソースとターゲットの両方でデータが同じであることを確認した後、ソース環境からターゲット環境に切り替えることができます。 切り替え中の最小限の中断によってもビジネス継続性に影響が出ないようにするために、ビジネス チームやアプリケーション チームと共に切り替えプロセスを計画することが重要です。
重要
DMS を使用した移行の一環としてのカットオーバーの実行に関連する具体的な手順の詳細については、「Tutorial: DMS (クラシック) を使用して SQL Server を Azure SQL データベース に移行する(オフライン)」を参照してください。
Transactional Replication を使用して移行する
移行中、SQL Server データベースを運用から外す余裕がない場合、移行ソリューションとして SQL Server トランザクション レプリケーションを使用できます。 この方法を使用するには、ソース データベースがトランザクション レプリケーションの要件を満たしているほか、Azure SQL Database に対する互換性を持っている必要があります。 可用性グループを使った SQL レプリケーションの詳細については、Always On 可用性グループのレプリケーションの構成 に関する記事をご覧ください。
このソリューションを使用するには、Azure SQL Database のデータベースを、移行対象の SQL Server インスタンスへのサブスクライバーとして構成します。 トランザクション レプリケーション ディストリビューターは、新しいトランザクションが続く間、同期対象のデータベース (パブリッシャー) からデータを同期します。
トランザクション レプリケーションでは、データやスキーマのすべての変更が Azure SQL Database のデータベースに表示されます。 同期が完了し、移行の準備ができたら、アプリケーションの接続文字列を変更し、データベースをポイントするようにします。 トランザクション レプリケーションがソース データベースに残っているすべての変更を抜き取り、すべてのアプリケーションが Azure SQL Database をポイントしたら、トランザクション レプリケーションをアンインストールできます。 これで、Azure SQL Database のデータベースが実稼働システムになります。
ヒント
トランザクション レプリケーションを使用して、ソース データベースの一部を移行することもできます。 Azure SQL Database に複製するパブリケーションは、複製されるデータベースのテーブルの一部に制限できます。 複製されるテーブルごとに、行の一部または列の一部にデータを制限できます。
トランザクション レプリケーションのワークフロー
重要
最新バージョンの SQL Server Management Studio を使用して、Azure と SQL Database の更新プログラムとの同期を維持します。 以前のバージョンの SQL Server Management Studio では、サブスクライバーとして SQL Database を設定できません。 最新バージョンの SQL Server Management Studio を入手します。
手順 | Method |
---|---|
ディストリビューションを設定する | SQL Server Management Studio | Transact-SQL |
パブリケーションを作成する | SQL Server Management Studio | Transact-SQL |
サブスクリプションの作成 | SQL Server Management Studio | Transact-SQL |
SQL Database への移行に関するヒントと相違点
- ローカル ディストリビューターを使用します。
- これにより、サーバーのパフォーマンスに影響が生じます。
- パフォーマンスへの影響を許容できない場合は、別のサーバーを使用できますが、管理がさらに複雑になります。
- スナップショット フォルダーを選択する際は、選択したフォルダーが、レプリケートするすべてのテーブルの BCP を保持するのに十分な大きさであることを確認してください。
- スナップショットの作成では、その処理が完了するまで関連付けられたテーブルがロックされるため、スナップショットは適宜スケジュールしてください。
- Azure SQL Database でサポートされているのは、プッシュ サブスクリプションのみです。 サブスクライバーを追加できるのは、ソース データベースからのみです。
移行の推奨事項
Azure SQL Database への移行を高速化するには、次の推奨事項を考慮する必要があります。
リソースの競合 | 推奨 | |
---|---|---|
ソース (通常はオンプレミス) | ソースからの移行時の主なボトルネックはデータ ファイルの I/O と待ち時間であり、慎重に監視する必要があります。 | データ ファイルの I/O と待ち時間に基づき、仮想マシンと物理サーバーのどちらであるかに応じて、ストレージ管理者と連携してボトルネックを軽減するためのオプションを検討することが必要なことがあります。 |
ターゲット (Azure SQL Database) | 最大の制限要因は、データベース ログ ファイルでのログの生成速度と待ち時間です。 Azure SQL Database では、最大 96 MB/秒のログ生成速度を実現できます。 | 移行を高速化するには、ターゲットの Azure SQL データベースを Business Critical Gen5 8 仮想コアにスケールアップして、ログの最大生成速度である 96 MB/秒を実現します。それにより、ログ ファイルの待ち時間も短縮されます。 Hyperscale サービス レベルでは、選択したサービス レベルに関係なく、100 MB/秒のログ速度が提供されます。 |
Network | 必要なネットワーク帯域幅は、最大ログ インジェスト速度の 96 MB/秒 (768 Mb/秒) と同じです | オンプレミスのデータ センターから Azure へのネットワーク接続に応じて、ネットワーク帯域幅 (通常は Azure ExpressRoute) を確認し、ログの最大取り込み速度に対応します。 |
移行プロセスの間のパフォーマンスを最適にするため、これらの推奨事項を検討することもできます。
- 転送のパフォーマンスを最大限に高めるために、予算が許す限り最も高いサービス レベルとコンピューティング サイズを選択する。 移行の完了後にスケールダウンすることでコストを削減できます。
- BACPAC ファイルを使っている場合、BACPAC ファイルと移行先のデータ センターの間の距離を最短にする。
- 移行の間は統計の自動更新と自動作成を無効にする。
- パーティション テーブルとインデックス。
- インデックス付きビューを削除し、完了したら作成し直す。
- ほとんど照会されない履歴データを別のデータベースに移動し、この履歴データを Azure SQL Database の別のデータベースに移行する。 その後、この履歴データは、エラスティック クエリを使用して照会できます。
移行後
移行ステージが正常に完了した後、以下の移行後タスクを実行し、すべてが円滑かつ効率的に機能することを確認します。
移行後フェーズは、データの精度の問題を調整するため、完全性を確認するため、およびワークロードのパフォーマンスの問題に対処するために非常に重要です。
統計を更新します。
移行が完了した後に、フル スキャンを実施して統計を更新します。
アプリケーションを修復する
データがターゲット環境に移行された後、以前にソースを使用していたすべてのアプリケーションは、ターゲットの使用を開始する必要があります。 これを実現するために、場合によってはアプリケーションの変更が必要です。
テストを実行する
データベース移行のテストア プローチは、次のアクティビティで構成されています。
- 検証テストを作成する: データベースの移行をテストするには、SQL クエリを使用する必要があります。 ソース データベースとターゲット データベースの両方に対して実行する検証クエリを作成する必要があります。 検証クエリには、定義したスコープが含まれている必要があります。
- テスト環境を設定する: テスト環境には、ソース データベースとターゲット データベースのコピーが含まれている必要があります。 必ずテスト環境を分離してください。
- 検証テストを実行する: ソースとターゲットに対して検証テストを実行してから、結果を分析します。
- パフォーマンス テストを実行する: ソースとターゲットに対してパフォーマンス テストを実行し、結果を分析して比較します。
高度な機能を使用する
組み込みの高可用性、脅威検出、ワークロードの監視と調整など、SQL Database によって提供されるクラウドベースの高度な機能を利用してください。
SQL Server の一部の機能は、データベース互換レベルを最新の互換性レベルに変更した場合にのみ使用できます。
詳細については、移行後の Azure SQL Database の管理に関するページを参照してください。
データベース移行の互換性に関する問題を解決する
ソース データベースの SQL Server のバージョンと移行するデータベースの複雑さに応じて、さまざまな互換性の問題が発生することがあります。 SQL Server のバージョンが古いほど、互換性の問題が多く発生します。 任意の検索エンジンを使用する対象のインターネット検索に加え、以下のリソースを使用します。
重要
Azure SQL Managed Instance を使用すると、互換性の問題をゼロまたは最小限に抑えながら、既存の SQL Server インスタンスとそのデータベースを移行できます。 「Azure SQL Managed Instance とは」をご覧ください
関連するコンテンツ
- データ移行のシナリオで利用できるサービスとツール
- Azure Data Studio 用 Azure SQL 移行拡張機能を使用してデータベースを移行する
- チュートリアル: SQL Server を Azure SQL データベース に移行する (オフライン)
- Azure Migrate について
- Azure SQL Database とは何ですか?
- Azure 総保有コスト計算ツール
- Azure 向けのクラウド導入フレームワーク
- Azure に移行するワークロードの料金計算とサイズ設定のベスト プラクティス
- クラウド移行リソース
- Data Access Migration Toolkit (プレビュー中)
- Database Experimentation Assistant の概要