SQL Server データベースを ApsaraDB RDS for SQL Server へ移行するための 6 つのソリューションを紹介します。それぞれ、異なる移行元環境、許容ダウンタイム、機能要件に適しています。
前提条件
開始する前に:
-
移行元データベースと同等以上の仕様とストレージを持つ ApsaraDB RDS for SQL Server の移行先インスタンスがあること。 ApsaraDB RDS for SQL Server インスタンスの作成
-
DTS を使用する場合は、移行元と移行先のデータベースのバージョンが Data Transmission Service (DTS) でサポートされていること
-
DTS を使用する場合は、DTS サーバーの CIDR ブロックが、移行元および移行先データベースの セキュリティ設定に追加されていること
-
移行ツールからのアクセスを許可するように、ファイアウォールルール、ホワイトリスト、セキュリティグループが設定されていること
準備チェックリスト
ソリューションを選択する前に:
-
バージョンの互換性の確認。 移行元と移行先の両方のインスタンスで次のクエリを実行し、移行先の 互換性レベル が移行元以上であることを確認します。
SELECT name, compatibility_level FROM sys.databases; -
ネットワークアクセスの確認。 移行元および移行先のデータベースが、DTS サーバーまたは他の移行ツールからの接続を受け付けることを確認します。
-
移行元データベースの特性の評価。 ヒープテーブル、プライマリキーのないテーブル、圧縮テーブル、計算列のあるテーブルを特定します。これらによって、利用可能な DTS のモードが決まります。 テーブルタイプの確認に関する FAQ。
-
移行元エディションとバージョンの確認。 一部の移行モードでは、特定の SQL Server エディションとバージョンが必要です (詳細は後述の機能マトリックスをご参照ください)。
移行ソリューション
物理バックアップ、DTS による論理移行、SQL Server Management Studio (SSMS) による手動移行の 3 つのカテゴリに分類される 6 つのソリューションがあります。
Object Storage Service (OSS) 経由の物理バックアップ (手動)
完全バックアップと増分バックアップを Object Storage Service (OSS) に手動でアップロードし、移行先インスタンスで復元します。
手順:
-
移行元データベースで
backup_typeパラメーターをFULLに設定します。 -
完全バックアップを作成し、OSS バケットにアップロードします。
-
スケジュールに基づいて増分ログをバックアップし、アップロードします。
-
移行元データベースへの書き込みを停止します。最後の増分ログが正常にリプレイされた後、ワークロードを移行先に切り替えます。
移行元データベースが SQL Server 2008 R2 を実行している場合は、この操作を実行する前にデータベースのバージョンをアップグレードしてください。
リファレンス: 自己管理型 SQL Server インスタンスから ApsaraDB RDS for SQL Server インスタンスへのデータ移行
データディザスタリカバリと DTS 経由の物理バックアップ
物理ゲートウェイと DTS を使用して、バックアップのアップロードと復元を自動化します。
手順:
-
物理ゲートウェイをデプロイします。
-
DTS を使用してデータを移行します。システムはバックアップデータを OSS に自動的にアップロードします。
-
移行元データベースへの書き込みを停止します。最後の増分ログが正常にリプレイされた後、ワークロードを移行先に切り替えます。
リファレンス: 物理ゲートウェイを使用した自己管理型 SQL Server データベースから ApsaraDB RDS for SQL Server インスタンスへのデータ移行
DTS 論理移行:ログ解析モード
DTS は、移行元データベースのトランザクションログを読み取り、解析して変更をキャプチャします。
手順:
-
DTS データ移行タスクを作成します。 SQL Server 増分同期モード パラメーターを [移行元データベースのログに基づく増分同期 (ヒープテーブルはサポートされていません)] に設定します。
-
移行元データベースへの書き込みを停止します。最後の増分ログが正常にリプレイされた後、ワークロードを移行先に切り替えます。
リファレンス: 自己管理型 SQL Server データベースから ApsaraDB RDS for SQL Server インスタンスへのデータ移行
DTS 論理移行:ハイブリッドログ解析モード
非ヒープテーブルに対するログベースの解析と、ヒープテーブルに対する変更データキャプチャ (CDC) を組み合わせることで、移行可能なテーブルタイプの範囲を拡大します。
手順:
-
DTS データ移行タスクを作成します。 SQL Server 増分同期モード パラメーターを [非ヒープテーブルのログベース解析とヒープテーブルの CDC ベース増分同期 (ハイブリッドログベース解析)] に設定します。
-
移行元データベースへの書き込みを停止します。最後の増分ログが正常にリプレイされた後、ワークロードを移行先に切り替えます。
DTS 論理移行:CDC インスタンスポーリングモード
トランザクションログではなく、SQL Server のネイティブな CDC コンポーネントを使用して変更テーブルから増分変更をキャプチャします。これにより、ログの切り捨ての影響を受けず、より安定した低帯域幅での移行が可能になります。
手順:
-
DTS データ移行タスクを作成します。 SQL Server 増分同期モード パラメーターを [増分同期のための CDC インスタンスのポーリングとクエリ] に設定します。
-
移行元データベースへの書き込みを停止します。最後の増分ログが正常にリプレイされた後、ワークロードを移行先に切り替えます。
SSMS 移行
SSMS を使用してデータを手動でエクスポートおよびインポートします。
手順:
-
移行元データベースへの書き込みを停止します。
-
SSMS を使用して移行元データベースからデータをエクスポートします。
-
エクスポートしたデータを移行先データベースにインポートします。
-
データ整合性を検証した後、ワークロードを移行先に切り替えます。
リファレンス: SSMS を使用したクラウドへのデータ移行
機能マトリックス
このマトリックスを使用して、移行ソリューション間の機能を比較します。
| 機能 | OSS 手動 (物理) | データディザスタリカバリ + DTS (物理) | ログ解析 (論理) | ハイブリッドログ解析 (論理) | CDC ポーリング (論理) | SSMS |
|---|---|---|---|---|---|---|
| 名前マッピング (データベース、テーブル、列) | いいえ | いいえ | はい | はい | はい | いいえ |
| サービス中断なしの増分移行 | いいえ (数分間のダウンタイム) | いいえ (数分間のダウンタイム) | はい | はい [*] | はい [*] | いいえ (完全なダウンタイム) |
| 複数データベースの移行 (単一タスク) | いいえ (一度に 1 データベース) | はい | はい (最大 10) | はい (最大 10) | はい (最大 10) | いいえ |
| クロスバージョン移行 | いいえ (移行先バージョン >= 移行元) | いいえ (移行先バージョン >= 移行元) | はい | はい | はい | はい |
| 移行速度 | 高速 | 高速 | — | — | — | — |
| サードパーティクラウドの移行元サポート | いいえ | いいえ | Amazon RDS, Azure SQL Database | Amazon RDS, Azure SQL Database | Amazon RDS, Azure SQL Database, Google Cloud SQL for SQL Server | いいえ |
| ヒープテーブルのサポート | はい | はい | いいえ | はい | はい | はい |
| 圧縮テーブルのサポート | はい | はい | いいえ | はい | はい | はい |
| プライマリキーのないテーブル | はい | はい | いいえ | いいえ | はい [†] | はい |
| 計算列のあるテーブル | はい | はい | いいえ | いいえ | はい | はい |
| データ定義言語 (DDL) 移行 | 完全 (バックアップ/復元経由) | 完全 (バックアップ/復元経由) | 部分的 | 部分的 | 限定的 | 完全 (エクスポート/インポート経由) |
| セットアップの複雑さ | 中 (手動バックアップ/アップロード) | 低 (DTS コンソール) | 低 (DTS コンソール) | 低 (DTS コンソール) | 低 (DTS コンソール) | 低 (SSMS GUI) |
[*] 増分移行中、移行元データベースは書き込みを受け付け続けます。ただし、ハイブリッドログ解析モードと CDC ポーリングモードでは、タスクの初期化時に DTS が CDC を有効にすると、短いテーブルロック (数秒) が発生する場合があります。すべてのソリューションで、最終的なカットオーバー中に書き込みを停止する必要があります。
[†] PRIMARY KEY または UNIQUE 制約のないテーブルは CDC ポーリングモードで移行できますが、重複データが含まれる可能性があります。このようなテーブルを保持する必要がある場合は、重複データが許容できるかどうかを評価してください。 CDC インスタンスポーリングモードの制限。
ソリューションごとの制限
OSS 手動 (物理バックアップ)
-
ログの手動バックアップとアップロードが必要です。
-
一度に 1 つのデータベースしか移行できません。
-
最終的なカットオーバー (書き込み停止、最後の増分ログのリプレイ待ち) 中に数分間のサービス中断が発生します。
-
移行先データベースのバージョンは、移行元データベースのバージョンより古くすることはできません。
-
データベース、テーブル、列の名前マッピングはサポートされていません。
データディザスタリカバリ + DTS (物理バックアップ)
-
バックアップログファイルの拡張子は trn である必要があります。
-
最終的なカットオーバー中に数分間のサービス中断が発生します。
-
移行元データベースサーバーに AliyunDBSAgent をインストールする必要があります。
-
移行先データベースのバージョンは、移行元データベースのバージョンより古くすることはできません。
-
データベース、テーブル、列の名前マッピングはサポートされていません。
ログ解析モード (論理)
-
一部の DDL ステートメントのみ移行できます。1 時間あたり 100 を超える DDL ステートメントは、移行速度に影響します。
-
移行元データベースのログ書き込み速度が 10 MB/s、30 GB/時間、または 500 GB/日を超えると、タスクが遅延したり失敗したりする可能性があります。
-
ログのバックアップ頻度が 1 時間に 1 回を超えると、DTS がローカルのバックアップログを取得できない場合があります。バックアップログはローカルディスクに 3 日間保持してください。
-
DTS は、DDL の変更をキャプチャするために、移行元データベースにトリガーと DDL ストレージテーブルを作成します。
-
増分データ移行中は FOREIGN KEY 制約を無効にしてください。そうしないと、タスクが失敗する可能性があります。
-
ヒープテーブル、プライマリキーのないテーブル、圧縮テーブル、計算列のあるテーブルは移行できません。 テーブルタイプの確認に関する FAQ。
-
PRIMARY KEY または UNIQUE 制約のないテーブルには、重複データが含まれる可能性があります。このようなテーブルを保持する必要がある場合は、このソリューションを使用しないでください。
-
DTS は
fn_log関数を使用してログをプルし、解析します。この関数は安定していません。予期しない操作によってタスクが失敗する可能性があります。 -
1 つのデータ移行タスクで移行できるデータベースは最大 10 個です。この制限を超えると、安定性とパフォーマンスの問題が発生する可能性があります。
ハイブリッドログ解析モード (論理)
-
移行元エディション要件: SQL Server 2008 以降 (Enterprise Edition)、または SQL Server 2016 SP1 以降 (Standard Edition)。SQL Server 2017 はサポートされていません。
-
一部の DDL ステートメントのみ移行できます。1 時間あたり 100 を超える DDL ステートメントは、移行速度に影響します。
-
移行元データベースのログ書き込み速度が 10 MB/s、30 GB/時間、または 500 GB/日を超えると、タスクが遅延したり失敗したりする可能性があります。
-
ログのバックアップ頻度が 1 時間に 1 回を超えると、DTS がローカルのバックアップログを取得できない場合があります。バックアップログはローカルディスクに 3 日間保持してください。
-
DTS はデータベースと一部のテーブルに対して CDC を有効にします。また、DTS は DDL の変更をキャプチャするために、移行元データベースにトリガーと DDL ストレージテーブルを作成します。
-
増分データ移行中は FOREIGN KEY 制約を無効にしてください。そうしないと、タスクが失敗する可能性があります。
-
計算列のあるテーブルは移行できません。 テーブルタイプの確認に関する FAQ。
-
PRIMARY KEY または UNIQUE 制約のないテーブルには、重複データが含まれる可能性があります。このようなテーブルを保持する必要がある場合は、このソリューションを使用しないでください。
-
DTS は
fn_log関数を使用してログをプルし、解析します。この関数は安定していません。予期しない操作によってタスクが失敗する可能性があります。 -
1 つのデータ移行タスクで移行できるデータベースは最大 10 個です。この制限を超えると、安定性とパフォーマンスの問題が発生する可能性があります。
CDC インスタンスポーリングモード (論理)
-
移行元が Azure VM の場合のエディション要件: SQL Server 2008 以降 (Enterprise Edition)、または SQL Server 2016 SP1 以降 (Standard Edition)。SQL Server 2017 はサポートされていません。
-
アカウント権限: DTS アクセスアカウントには、データベースレベルおよびテーブルレベルで CDC を有効にする権限が必要です。データベースレベルの CDC には
sysadminロールを持つアカウントが必要です。テーブルレベルの CDC には特権アカウントが必要です。-
Azure SQL Database: サーバー管理者アカウントは必要な権限を持っています。vCore モデルで購入したすべてのデータベースで CDC を有効にできます。DTU モデルの場合、データベースのサービス階層は S3 以上である必要があります。
-
Amazon RDS for SQL Server: 特権アカウントは必要な権限を持っています。ストアドプロシージャを使用してデータベースレベルで CDC を有効にできます。
-
クラスター化列ストアインデックスに対して CDC を有効にすることはできません。
-
DTS プレモジュールは移行元データベースで CDC を有効にします。このプロセスは、SQL Server の制限により、数秒間のテーブルロックを引き起こします。
-
-
1 つのタスクで移行できるテーブルは最大 1,000 です。この制限を超えると、遅延や不安定さが発生する可能性があります。
-
1 つのデータ移行タスクで移行できるデータベースは最大 10 個です。この制限を超えると、安定性とパフォーマンスの問題が発生する可能性があります。
-
PRIMARY KEY または UNIQUE 制約のないテーブルには、重複データが含まれる可能性があります。このようなテーブルを保持する必要がある場合、重複データが許容できるかどうかを評価する必要があります。
-
増分データ移行には約 10 秒のレイテンシーがあります。
-
1 分以内に DDL を使用して列を追加または削除する操作を 2 回以上行わないでください。そうしないと、データ移行タスクが失敗する可能性があります。
-
移行中に移行元データベースの CDC インスタンスを変更しないでください。そうしないと、タスクが失敗したり、データが失われたりする可能性があります。
-
単一のタスクで複数のデータベースにまたがる複数のテーブルを移行すると、安定性とパフォーマンスの問題が発生する可能性があります。
SSMS 移行
-
移行を開始する前に、移行元データベースへの書き込みを停止する必要があります。そうしないと、データ不整合が発生する可能性があります。
-
すべての移行手順は SSMS を通じて手動で実行する必要があります。
移行ソリューションの選択
移行元環境、増分移行のニーズ、および運用上の制約に基づいて選択します。
移行元環境が増分データ移行をサポートしていない場合は、移行を開始する前に移行元データベースへの書き込みを停止してください。
自己管理型 SQL Server
| 属性 | 詳細 |
|---|---|
| 増分サポート | はい |
| 利用可能なソリューション | OSS 手動物理バックアップ、データディザスタリカバリ + DTS 物理バックアップ、DTS 論理移行 (全 3 モード) |
| 推奨 | 物理ゲートウェイ経由のデータディザスタリカバリ + DTS |
このアプローチは、物理バックアップの速度と DTS コンソールの利便性を組み合わせ、単一タスクでの複数データベースの移行をサポートします。 物理ゲートウェイを使用した自己管理型 SQL Server データベースから ApsaraDB RDS for SQL Server インスタンスへのデータ移行。
Azure SQL Database
| 属性 | 詳細 |
|---|---|
| 増分サポート | はい |
| 利用可能なソリューション | DTS 論理移行 (増分データの場合は [SQL Server 増分同期モード] を [増分同期のための CDC インスタンスのポーリングとクエリ] に設定)、ApsaraDB RDS コンソールのエンドツーエンドの移行、SSMS 移行 |
| 推奨 | ApsaraDB RDS コンソールのエンドツーエンドの移行または CDC ポーリングモードでの DTS 論理移行 |
どちらも、手動手順を最小限に抑えたガイド付きワークフローを提供します。 Microsoft Azure 上の SQL Server データベースから ApsaraDB RDS for SQL Server へのデータ移行。
Azure SQL Managed Instance および SQL Server on Azure Virtual Machines
| 属性 | 詳細 |
|---|---|
| 増分サポート | はい |
| 利用可能なソリューション | DTS 論理移行 (増分データの場合は [SQL Server 増分同期モード] を [増分同期のための CDC インスタンスのポーリングとクエリ] に設定)、ApsaraDB RDS コンソールのエンドツーエンドの移行、SSMS 移行、OSS 手動物理バックアップ |
Amazon RDS for SQL Server
| 属性 | 詳細 |
|---|---|
| 増分サポート | はい |
| 利用可能なソリューション | DTS 論理移行 (増分データの場合は [SQL Server 増分同期モード] を [増分同期のための CDC インスタンスのポーリングとクエリ] に設定)、ApsaraDB RDS コンソールのエンドツーエンドの移行、SSMS 移行、OSS 手動物理バックアップ |
| 推奨 | ApsaraDB RDS コンソールのエンドツーエンドの移行または CDC ポーリングモードでの DTS 論理移行 |
Amazon RDS for SQL Server インスタンスから ApsaraDB RDS for SQL Server インスタンスへのデータ移行。
Huawei Cloud RDS for SQL Server
| 属性 | 詳細 |
|---|---|
| 増分サポート | いいえ |
| 利用可能なソリューション | SSMS 移行、DTS 論理移行 (完全データのみ)、OSS 手動物理バックアップ (完全データのみ) |
| 推奨 | OSS 手動完全バックアップ移行 |
移行元データベースが SQL Server 2008 R2 を実行している場合は、この操作を実行する前にデータベースのバージョンをアップグレードしてください。
バックアップデータの取得手順については、手動バックアップの作成およびバックアップファイルのダウンロードをご参照ください。
TencentDB for SQL Server
増分サポートあり:
| 属性 | 詳細 |
|---|---|
| 増分サポート | はい |
| 利用可能なソリューション | DTS 論理移行、OSS 手動物理バックアップ |
| 推奨 | DTS 論理移行 |
自己管理型 SQL Server データベースから ApsaraDB RDS for SQL Server インスタンスへのデータ移行。
増分サポートなし: SSMS 移行を使用します。
Google Cloud SQL for SQL Server
| 属性 | 詳細 |
|---|---|
| 増分サポート | はい |
| 利用可能なソリューション | SSMS 移行、DTS 論理移行 (増分データの場合は [SQL Server 増分同期モード] を [増分同期のための CDC インスタンスのポーリングとクエリ] に設定) |
| 推奨 | CDC ポーリングモードでの DTS 論理移行 |
自己管理型 SQL Server データベースから ApsaraDB RDS for SQL Server インスタンスへのデータ移行。
次のステップ
データ整合性の検証
移行後、すべてのデータが移行先インスタンスに正しく転送されたことを確認します。
コアデータの検証
日付または自動インクリメント ID でデータをソートし、移行元データベースと移行先データベースの最新レコードを比較します。たとえば、主要な業務テーブル Orders に OrderID や OrderDate などのフィールドが含まれている場合、両方のデータベースで次のクエリを実行します。
-- 移行元データベース
SELECT TOP 10 OrderID, OrderDate, CustomerID, TotalAmount
FROM Orders
ORDER BY OrderDate DESC;
-- 移行先データベース
SELECT TOP 10 OrderID, OrderDate, CustomerID, TotalAmount
FROM Orders
ORDER BY OrderDate DESC;
DTS を使用した完全なデータ検証
DTS は、ダウンタイムなしで移行元データベースと移行先データベース間の完全なデータ検証を提供します。 データ検証タスクの設定。
データベース統計の更新
データ分布の変化により、移行先インスタンスでのクエリパフォーマンスが低下する可能性があります。移行したデータベースのすべての統計を更新して、パフォーマンスを回復します。 データベース統計の更新。