Data Transmission Service (DTS) を使用すると、最小限のダウンタイムで ApsaraDB MyBase for SQL Server インスタンスから ApsaraDB RDS for SQL Server インスタンスにデータを移行できます。このガイドでは、スキーマ移行、完全データ移行、増分データ移行を組み合わせた移行タスクの設定手順について説明します。
適用範囲
開始する前に、次の点を確認してください。
-
移行先の ApsaraDB RDS for SQL Server インスタンスが作成済みであること。サポートされているエンジンバージョンについては、「データ移行シナリオの概要」をご参照ください。インスタンスを作成するには、「ApsaraDB RDS for SQL Server インスタンスの作成」をご参照ください。
-
移行先インスタンスの利用可能なストレージ容量が、ソースインスタンスの総データサイズよりも大きいこと。
[SQL Server 増分同期モード] を [非ヒープテーブルはログベースの解析、ヒープテーブルは CDC ベースの増分同期] に設定した場合、ハイブリッドログベース解析モードが使用されます。以下のソースデータベースバージョンがサポートされています。
-
Enterprise または Enterprise Evaluation Edition: SQL Server 2012、2014、2016、2019、2022、または 2025
-
Standard Edition: SQL Server 2016、2019、2022、または 2025
複数のタスクに分割する場合
ソースインスタンスに次のいずれかの条件が当てはまる場合は、移行を複数のタスクに分割してください。
-
ソースインスタンスに 10 を超えるデータベースが含まれている
-
単一のデータベースが 1 時間未満の間隔でログをバックアップしている
-
単一のデータベースが 1 時間あたり 100 を超える DDL 文を実行している
-
単一のデータベースでログが 20 MB/s のレートで書き込まれている
-
1,000 を超えるテーブルで変更データキャプチャ (CDC) を有効にする必要がある
課金
| 移行タイプ | タスク設定料金 | インターネットトラフィック料金 |
|---|---|---|
| スキーマ移行と完全データ移行 | 無料 | 無料 |
| 増分データ移行 | 有料です。「課金概要」をご参照ください。 | — |
移行タイプの選択
DTS は 3 種類の移行タイプをサポートしています。要件に応じてこれらを組み合わせてください。
| 移行タイプ | 機能 | 使用場面 |
|---|---|---|
| スキーマ移行 | 選択したオブジェクトのスキーマをソースからターゲットに移行します | 最初のステップとして常に選択します |
| 完全データ移行 | 既存のすべてのデータをソースからターゲットに移行します | 初期移行に必要です |
| 増分データ移行 | 完全移行の完了後、データの変更を継続的に移行します | ダウンタイムを最小限に抑え、移行中もサービスを継続して実行する場合に選択します |
スキーマ移行でサポートされる詳細については、「サポート対象および対象外のオブジェクト」をご参照ください。
制限事項
タスクを設定する前に、これらの制限事項を確認してください。
ソースデータベースの要件
-
ソースデータベースがデプロイされているサーバーには、十分なアウトバウンド帯域幅が必要です。帯域幅が不足している場合、データ移行の速度が低下します。
-
移行対象のテーブルには、
PRIMARY KEYまたはUNIQUE制約が必要であり、すべてのフィールドが一意である必要があります。そうでない場合、ターゲットデータベースに重複したレコードが含まれる可能性があります。 -
移行中にテーブル名または列名を変更する場合、1 つの移行タスクで移行できるテーブルは最大 1,000 個です。1,000 個を超えるテーブルを移行する場合は、複数のタスクを設定するか、テーブルレベルではなくデータベースレベルで移行してください。
-
1 つの移行タスクで移行できるデータベースは最大 10 個です。10 個を超えるデータベースを移行する場合は、複数のタスクを設定してください。
増分データ移行の場合は、さらに次の点も確認してください。
-
データログ機能が有効になっていること。バックアップモードは [完全] に設定し、フル物理バックアップが実行済みである必要があります。
-
ログ保持期間:ログの保持期間が不十分な場合、タスクが失敗したり、データの不整合やデータ損失が発生したりする可能性があります。これらの要件を満たさない場合、DTS のサービスレベルアグリーメント (SLA) も無効になります。
-
増分移行のみ:ログを 24 時間以上保持する
-
完全移行 + 増分移行:ログを最低 7 日間保持する。完全移行が完了した後、保持期間を 24 時間以上に設定できます
-
CDC が有効なテーブルでは、次の条件を満たす必要があります (満たさない場合、事前チェックは失敗します):
-
sys.sysserversビューのsrvnameフィールドがSERVERPROPERTY関数の戻り値と一致すること -
データベースオーナーが
sa(自己管理 SQL Server) またはsqlsa(ApsaraDB RDS for SQL Server) であること -
Enterprise Edition: SQL Server 2008 以降
-
Standard Edition: SQL Server 2016 SP1 以降
-
SQL Server 2017 を実行している Standard または Enterprise Edition:より新しいバージョンにアップグレードすること
追加のソースデータベースの制限:
-
スキーマ移行および完全データ移行中に、データベースまたはテーブルスキーマを変更する DDL 文を実行しないでください。これにより、移行タスクが失敗します。
-
完全データ移行のみを実行する場合 (増分なし)、移行中にソースデータベースに書き込みを行わないでください。データの不整合を避けるために、スキーマ移行、完全データ移行、増分データ移行の 3 つの移行タイプをすべて選択してください。
-
タスクが完了する前にソースデータベースのログをクリアしないでください。DTS は
fn_log関数を使用してログを取得しますが、これにはパフォーマンスのボトルネックがあります。ログを早期にクリアすると、タスクが失敗する可能性があります。 -
読み取り専用のソースインスタンスは、DDL 操作の移行をサポートしていません。
-
ハイブリッドログベース解析モードでは、同じテーブルに対して 10 分以内に複数の列追加または列削除操作を実行しないでください。例えば、次のシーケンスを 10 分以内に実行するとエラーが発生します。
ALTER TABLE test_table DROP COLUMN Flag; ALTER TABLE test_table ADD Remark nvarchar(50) not null default(''); -
ソースが Web Edition を実行している ApsaraDB RDS for SQL Server インスタンスの場合、[SQL Server 増分同期モード] を [ソースデータベースのログに基づく増分同期 (ヒープテーブルはサポートされていません)] に設定します。
その他の制限事項
-
DTS は次のデータ型を移行しません:
TEXT、CURSOR、ROWVERSION、SQL_VARIANT、HIERACHYID、GEOMETRY。 -
[ソースデータベースのログに基づく増分同期] モード (非ハイブリッド) を使用する場合、テーブルにはプライマリキー列を含むクラスター化インデックスが必要です。ヒープテーブル、プライマリキーのないテーブル、圧縮テーブル、および計算列のあるテーブルはサポートされていません。ヒープテーブル、プライマリキーのないテーブル、圧縮テーブル、または計算列のあるテーブルについては、FAQ をご参照ください。
-
互換性のあるデータベースバージョン間でのみデータを移行してください。
-
単一の移行タスクで CDC が有効なテーブルが 1,000 を超えると、事前チェックは失敗します。
-
ソースデータベースで CDC が有効になっているテーブルについては、1 秒あたりの最大レコード数を 1,000 に設定することを推奨します。
-
増分データ移行では、ターゲットデータベースのトリガーと外部キーを無効にする必要があります。
-
移行はオフピーク時に実行してください。完全データ移行はソースとターゲットの両方で読み取りおよび書き込みリソースを使用するため、データベースサーバーの負荷が増加します。また、完全移行中の同時 INSERT 操作は、ターゲットデータベースでテーブルの断片化を引き起こし、ターゲットの表領域がソースよりも大きくなる原因となります。
-
DTS は、
FLOATおよびDOUBLE型の列から値を取得するためにROUND(COLUMN,PRECISION)を使用します。デフォルトの精度は、FLOATで 38 桁、DOUBLEで 308 桁です。移行を開始する前に、これらの精度設定が要件を満たしていることを確認してください。 -
DTS は、失敗した移行タスクを最大 7 日間自動的に再試行します。ワークロードをターゲットデータベースに切り替える前に、失敗したタスクを停止またはリリースするか、ターゲット上の DTS アカウントから書き込み権限を取り消してください。そうしないと、再開されたタスクがターゲットのデータをソースデータで上書きする可能性があります。
-
増分データ移行中にインデックスの再作成操作を実行しないでください。タスクが失敗し、データ損失につながる可能性があります。また、DTS は CDC が有効なテーブルのプライマリキーに対する DDL 操作を移行できません。
サポート対象および対象外のオブジェクト
スキーマ移行:サポート対象オブジェクト
テーブル、ビュー、トリガー、シノニム、SQL ストアドプロシージャ、SQL 関数、プランガイド、ユーザー定義型、ルール、デフォルト、シーケンス。
スキーマ移行:サポート対象外オブジェクト
アセンブリ、サービスブローカー、フルテキストインデックス、フルテキストカタログ、分散スキーマ、分散関数、Common Language Runtime (CLR) ストアドプロシージャ、CLR スカラー値関数、CLR テーブル値関数、内部テーブル、システムオブジェクト、集計関数。
増分データ移行でサポートされる SQL 操作
| 操作タイプ | サポートされる SQL 文 |
|---|---|
| DML | INSERT、UPDATE、DELETE。説明
大きなフィールドのみを変更する |
| DDL | ALTER TABLE (ADD COLUMN、DROP COLUMN、RENAME COLUMN のみ)、CREATE TABLE、CREATE INDEX (パーティションテーブルと関数を持つテーブルは移行されません)、DROP TABLE、RENAME TABLE、TRUNCATE TABLE |
必要な権限
| データベース | スキーマ移行 | 完全データ移行 | 増分データ移行 |
|---|---|---|---|
| ソースインスタンス | 移行対象オブジェクトに対する読み取り権限 | 所有者の権限 |
「アカウントの作成」および「アカウント権限の変更」をご参照ください。 |
| 宛先インスタンス | ターゲットデータベースに対する読み取りおよび書き込み権限 (owner 権限を推奨) |
||
移行タスクの設定
ステップ1:データ移行タスクページへの移動
-
Data Management (DMS) コンソールにログインします。
-
トップナビゲーションバーで、DTS にポインターを合わせ、[DTS (DTS)] > [データ移行] を選択します。
ステップ2:リージョンの選択
[データ移行タスク] の右側にあるドロップダウンリストから、移行インスタンスが存在するリージョンを選択します。
ステップ3:ソースデータベースとターゲットデータベースの設定
[タスクの作成] をクリックし、次のパラメーターを設定します。
ソースデータベースとターゲットデータベースを設定した後、ページの上部に表示される [制限事項] をお読みください。このステップをスキップすると、タスクが失敗したり、データの不整合が発生したりする可能性があります。
ソースデータベース
| パラメーター | 説明 |
|---|---|
| タスク名 | タスクを説明する名前。DTS は自動的に名前を生成しますが、意味のある名前を指定するとタスクを識別しやすくなります。一意である必要はありません。 |
| 既存の DMS データベースインスタンスを選択 (オプション) | すでに DMS データベースインスタンスを登録している場合は、ここで選択します。DTS は以下のパラメーターを自動的に入力します。そうでない場合は、手動でパラメーターを設定します。 |
| データベースタイプ | [SQL Server] を選択します。 |
| アクセス方法 | [Alibaba Cloud インスタンス] を選択します。ApsaraDB MyBase for SQL Server インスタンスは、このアクセス方法を使用して DTS に接続します。 |
| インスタンスリージョン | ソースの ApsaraDB MyBase for SQL Server インスタンスが存在するリージョン。 |
| Alibaba Cloud アカウント間でのデータ複製 | 同一アカウント内の移行の場合は [いいえ] を選択します。 |
| RDS インスタンス ID | ソースの ApsaraDB MyBase for SQL Server インスタンスの ID。 |
| データベースアカウント | ソースインスタンスのデータベースアカウント。「必要な権限」をご参照ください。 |
| データベースパスワード | データベースアカウントのパスワード。 |
ターゲットデータベース
| パラメーター | 説明 |
|---|---|
| 既存の DMS データベースインスタンスを選択 (オプション) | すでに DMS データベースインスタンスを登録している場合は、ここで選択します。DTS は以下のパラメーターを自動的に入力します。そうでない場合は、手動でパラメーターを設定します。 |
| データベースタイプ | [SQL Server] を選択します。 |
| アクセス方法 | [Alibaba Cloud インスタンス] を選択します。 |
| インスタンスリージョン | 移行先の ApsaraDB RDS for SQL Server インスタンスが存在するリージョン。 |
| インスタンス ID | 移行先の ApsaraDB RDS for SQL Server インスタンスのインスタンス ID。 |
| データベースアカウント | 移行先インスタンスのデータベースアカウント。「必要な権限」をご参照ください。 |
| データベースパスワード | データベースアカウントのパスワード。 |
ステップ4:接続テスト
[接続をテストして続行] をクリックします。
DTS は、DTS サーバーの CIDR ブロックを Alibaba Cloud データベースインスタンスの IP アドレスホワイトリストに自動的に追加します。Elastic Compute Service (ECS) インスタンス上の自己管理データベースの場合、DTS は CIDR ブロックを ECS セキュリティグループルールに追加しますが、ECS インスタンスがデータベースに到達できることを確認する必要があります。データベースが複数の ECS インスタンスにまたがって実行されている場合、DTS の CIDR ブロックを各 ECS インスタンスのセキュリティグループに手動で追加してください。データセンターまたはサードパーティのクラウド環境にある自己管理データベースの場合、DTS の CIDR ブロックをデータベースの IP アドレスホワイトリストに手動で追加してください。CIDR ブロックの完全なリストについては、「DTS サーバーの CIDR ブロックを追加する」をご参照ください。
DTS の CIDR ブロックをホワイトリストやセキュリティグループに追加すると、セキュリティリスクが生じます。続行する前に、ユーザー名とパスワードのセキュリティを強化し、公開ポートを制限し、API 呼び出しを認証し、ホワイトリストとセキュリティグループのルールを定期的に監査して不正な CIDR ブロックを削除するなど、予防措置を講じてください。また、Express Connect、VPN Gateway、または Smart Access Gateway を介してデータベースを DTS に接続することもできます。
ステップ5:オブジェクトの選択と同期モードの設定
| パラメーター | 説明 |
|---|---|
| 移行タイプ | シナリオに応じた移行タイプを選択します。ダウンタイムなしの完全移行の場合は、[スキーマ移行]、[完全データ移行]、[増分データ移行] を選択します。メンテナンスウィンドウを設けた移行の場合は、[スキーマ移行] と [完全データ移行] のみを選択しますが、移行中はソースデータベースに書き込みを行わないでください。 |
| 競合テーブルの処理モード | [事前チェックしてエラーを報告]オブジェクト名マッピング:ターゲットにソーステーブルと同じ名前のテーブルが存在する場合、事前チェックは失敗します。を使用して、競合するテーブルの名前を変更します。[エラーを無視して続行]:同じテーブル名に対する事前チェックをスキップします。完全移行中、ターゲット内の競合するレコードは保持されます (上書きされません)。増分移行中、競合するレコードは上書きされます。注意して使用してください。 |
| SQL Server 増分同期モード | 以下の「同期モードの選択」をご参照ください。 |
| ソースオブジェクト | [ソースオブジェクト] セクションからオブジェクトを選択し、右矢印アイコンをクリックして [選択済みオブジェクト] に移動します。列、テーブル、またはスキーマを選択できます。テーブルまたは列を選択すると、ビュー、トリガー、ストアドプロシージャは除外されます。 |
| 選択済みオブジェクト | 単一のオブジェクトの名前を変更するには、オブジェクトを右クリックして、「単一オブジェクトの名前をマッピングする」をご参照ください。複数のオブジェクトの名前を一度に変更するには、[一括編集] をクリックします。「複数のオブジェクト名を一度にマッピングする」をご参照ください。SQL 条件で行をフィルターするには、オブジェクトを右クリックして条件を指定します。「SQL 条件を使用してデータをフィルターする」をご参照ください。特定のオブジェクトに対して複製する SQL 操作を選択するには、オブジェクトを右クリックし、操作を選択します。 |
同期モードの選択
ソースデータベースとテーブルの種類に基づいて [SQL Server 増分同期モード] を選択します。
| モード | 利点 | 欠点 |
|---|---|---|
| 非ヒープテーブルはログベースの解析、ヒープテーブルは CDC ベースの増分同期 (ハイブリッドログベース解析) | ヒープテーブル、プライマリキーのないテーブル、圧縮テーブル、計算列を持つテーブルをサポートします。より高い安定性と完全な DDL サポートを提供します。 | DTS はソースデータベースに dts_cdc_sync_ddl (トリガー)、dts_sync_progress (ハートビートテーブル)、dts_cdc_ddl_history (DDL 履歴テーブル) を作成し、CDC を有効にします。CDC が有効なテーブルでは SELECT INTO と TRUNCATE は実行できません。DTS が作成したトリガーは手動で削除できません。 |
| ソースデータベースのログに基づく増分同期 (ヒープテーブルはサポートされていません) | ソースデータベースの設定を変更しません。 | ヒープテーブル、プライマリキーのないテーブル、圧縮テーブル、計算列を持つテーブルをサポートしていません。テーブルにはプライマリキー列を含むクラスター化インデックスが必要です。 |
| CDC インスタンスのポーリングとクエリによる増分同期 | Amazon RDS SQL Server、Azure SQL Database、Google Cloud SQL for SQL Server からの移行をサポートします。ネイティブの CDC コンポーネントを使用するため、少ないネットワーク帯域幅で安定した動作を実現します。 | DTS アカウントには CDC を有効にする権限が必要です。増分移行の開始には約 10 秒かかります。複数のデータベースにまたがる多数のテーブルを移行する場合、安定性やパフォーマンスの問題が発生する可能性があります。 |
ステップ6:詳細設定
[次へ:詳細設定] をクリックし、次のパラメーターを設定します。
データ検証設定
移行後のデータ検証の有効化については、「データ検証を有効にする」をご参照ください。
詳細設定
| パラメーター | 説明 |
|---|---|
| タスクスケジューリング用の専用クラスター | デフォルトでは、DTS はタスクを共有クラスターにスケジュールします。専用クラスターを使用するには、まず購入する必要があります。詳細については、「DTS 専用クラスターとは |
| アラートの設定 | タスクが失敗した場合、または移行遅延がしきい値を超えた場合に通知を受信するには、[はい] を選択し、アラートのしきい値と通知設定を構成します。 詳細については、「モニタリングとアラートを設定する」をご参照ください。 |
| 接続失敗時の再試行時間 | タスク開始後に接続が失敗した場合に DTS が再試行する時間。有効な値:10~1,440 分。デフォルト:720。このパラメーターには 30 より大きい値を設定することを推奨します。この期間内に DTS が再接続できれば、タスクは再開されます。そうでない場合、タスクは失敗します。複数のタスクが同じソースまたはターゲットデータベースを共有する場合、最も短い再試行時間が優先されます。再試行中も DTS インスタンスの料金が発生します。 |
| その他の問題での再試行時間 | 失敗した DDL または DML 操作を DTS が再試行する時間。有効な値:1~1,440 分。デフォルト:10。このパラメーターには 10 より大きい値を設定することを推奨します。[接続失敗時の再試行時間] よりも短くする必要があります。 |
| 完全データ移行のスロットリングを有効にする | [はい] を選択すると、完全移行中の読み取り/書き込み負荷を制限できます。必要に応じて [ソースデータベースへの 1 秒あたりのクエリ数 (QPS)]、[完全データ移行の RPS]、[完全データ移行の BPS] を設定します。[完全データ移行] が選択されている場合にのみ利用可能です。 |
| 増分データ移行のスロットリングを有効にする | [はい] を選択すると、増分移行中の負荷を制限できます。必要に応じて [増分データ移行の RPS] と [増分データ移行の BPS] を設定します。[増分データ移行] が選択されている場合にのみ利用可能です。 |
| 環境タグ | ご利用の環境に応じて、インスタンスを [通常] または [本番環境] としてタグ付けします。 |
| ETL の設定 | [はい] を選択すると、ETL (抽出・変換・書き出し) 機能を有効にして、データ処理文を入力できます。ETL の設定 および ETL とは |
ステップ7:事前チェックの実行
[次へ:タスク設定を保存して事前チェックを実行] をクリックします。
DTS は移行開始前に事前チェックを実行します。タスクは事前チェックに合格した後にのみ続行できます。
-
チェック項目が失敗した場合、[詳細の表示] をクリックして問題を解決し、[再度事前チェック] をクリックします。
-
チェック項目にアラートが表示された場合:
-
アラートを無視できない場合は、[詳細の表示] をクリックして問題を修正し、再度事前チェックを実行します。
-
アラートを安全に無視できる場合は、[アラート詳細の確認] > [無視] > [OK] > [再度事前チェック] をクリックします。アラートを無視すると、データの不整合が発生する可能性があります。
-
ステップ8:インスタンスの購入
成功率が 100% に達するまで待ってから、[次へ: インスタンスの購入] をクリックしてください。
[インスタンスの購入] ページで、以下を設定します。
| 項目 | パラメーター | 説明 |
|---|---|---|
| 新規インスタンスクラス | リソースグループの設定項目 | 移行インスタンスのリソースグループ。デフォルトは デフォルトのリソースグループ です。詳細については、「Resource Management とは |
| インスタンスクラス | インスタンスクラスによって移行速度が決まります。データ量とタイムラインに基づいて選択してください。詳細については、「データ移行インスタンスの仕様」をご参照ください。 |
ステップ9:移行の開始
-
[Data Transmission Service (従量課金) 利用規約] チェックボックスを読み、選択します。
-
[購入して開始] をクリックし、ダイアログボックスで [OK] をクリックします。
タスクがタスクリストに表示されます。そこから進捗状況を監視します。
次のステップ
移行タスクが完了し、増分移行の遅延がほぼゼロになった後:
-
ソースデータベースへの書き込みを停止します。
-
増分移行の遅延が 0 秒になるのを待ちます。
-
アプリケーションの接続文字列を移行先の ApsaraDB RDS for SQL Server インスタンスに切り替えます。
-
ソースとターゲット間のデータ整合性を検証します。
-
DTS 移行タスクを停止またはリリースします。