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 エディション:SQL Server 2012、2014、2016、2019、または 2022
Standard エディション:SQL Server 2016、2019、または 2022
複数のタスクに分割するタイミング
ソースインスタンスに以下のいずれかの条件が該当する場合は、移行を複数のタスクに分割してください。
ソースインスタンスに 10 データベース以上含まれている
単一のデータベースが 1 時間未満の間隔でログバックアップを実行している
単一のデータベースが 1 時間に 100 件以上の DDL ステートメントを実行している
単一のデータベースでログが 20 MB/s の速度で書き込まれている
1,000 テーブル以上に対して Change Data Capture (CDC) を有効にする必要がある
課金
| 移行タイプ | タスク構成料金 | インターネットトラフィック料金 |
|---|---|---|
| スキーマ移行および完全なデータ移行 | 無料 | 無料 |
| 増分データ移行 | 課金対象です。「課金概要」をご参照ください。 | — |
移行タイプの選択
DTS は以下の 3 種類の移行タイプをサポートしています。要件に応じて組み合わせて使用してください。
| 移行タイプ | 機能 | 使用タイミング |
|---|---|---|
| スキーマ移行 | 選択したオブジェクトのスキーマをソースから送信先に移行します。 | 常に最初のステップとして選択してください。 |
| 完全なデータ移行 | ソースから送信先に既存のすべてのデータを移行します。 | 初期移行に必須です。 |
| 増分データ移行 | 完全移行完了後、継続的にデータ変更を移行します。 | ダウンタイムを最小限に抑え、移行中にサービスを継続したい場合に選択してください。 |
スキーマ移行の完全なサポート対象については、「サポート対象および非サポート対象のオブジェクト」をご参照ください。
制限事項
タスクを構成する前に、以下の制限事項を確認してください。
ソースデータベースの要件
ソースデータベースがデプロイされているサーバーには十分なアウトバウンド帯域幅が必要です。そうでない場合、データ移行速度が低下します。
移行対象のテーブルには
PRIMARY KEYまたはUNIQUE制約が設定されており、すべてのフィールドが一意である必要があります。そうしないと、送信先データベースに重複レコードが含まれる可能性があります。移行中にテーブル名または列名を変更する場合、単一の移行タスクで最大 1,000 テーブルまで移行できます。1,000 テーブルを超える場合は、複数のタスクを構成するか、テーブルレベルではなくデータベースレベルで移行してください。
単一の移行タスクで最大 10 データベースまで移行できます。10 データベースを超える場合は、複数のタスクを構成してください。
増分データ移行を行う場合、さらに以下の点を確認してください。
データロギング機能が有効になっていること。バックアップモードは フル に設定されており、かつフル物理バックアップが実行済みであること。
ログ保持期間:ログ保持期間が不十分な場合、タスクが失敗したり、データの不整合やデータ損失が発生したりする可能性があります。これらの要件を満たさない場合、DTS のサービスレベル契約 (SLA) が無効になります。
増分移行のみの場合:ログを 24 時間以上保持すること
完全移行 + 増分移行の場合:ログを少なくとも 7 日間保持すること。完全移行完了後は、保持期間を 24 時間以上に設定できます。
CDC が有効なテーブルについては、以下の条件を満たす必要があります(満たさない場合、事前チェックに失敗します)。
sys.sysserversビューのsrvnameフィールドが、SERVERPROPERTY関数の戻り値と一致することデータベースオーナーが
sa(自己管理 SQL Server)またはsqlsa(ApsaraDB RDS for SQL Server)であることEnterprise エディション:SQL Server 2008 以降
Standard エディション:SQL Server 2016 SP1 以降
SQL Server 2017 を実行している Standard または Enterprise エディション:より新しいバージョンにスペックアップすること
その他のソースデータベースに関する制限事項:
スキーマ移行および完全なデータ移行中は、データベースまたはテーブルスキーマを変更する 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 エディションの ApsaraDB RDS for SQL Server インスタンスの場合、SQL Server 増分同期モード を ソースデータベースのログに基づく増分同期(ヒープテーブルは非サポート) に設定してください。
その他の制限事項
DTS は以下のデータの型を移行しません:
TEXT、CURSOR、ROWVERSION、SQL_VARIANT、HIERACHYID、GEOMETRY。「[ソースデータベースのログに基づく増分同期]」モード(非ハイブリッド)を使用する場合、テーブルにはプライマリキー列を含むクラスター化インデックスが必要です。ヒープテーブル、プライマリキーがないテーブル、圧縮テーブル、および計算列を含むテーブルはサポートされていません。ヒープテーブル、プライマリキーがないテーブル、圧縮テーブル、または計算列を含むテーブルについて確認するには、「よくある質問」をご参照ください。
互換性のあるデータベースバージョン間でのみデータ移行を実行してください。
単一の移行タスクで 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 関数、プランガイド、ユーザー定義型、ルール、デフォルト、およびシーケンス。
スキーマ移行:非サポート対象のオブジェクト
アセンブリ、サービスブローカー、フルテキストインデックス、フルテキストカタログ、分散スキーマ、分散関数、共通言語ランタイム (CLR) ストアドプロシージャ、CLR スカラー値関数、CLR テーブル値関数、内部テーブル、システムオブジェクト、および集計関数。
増分データ移行でサポートされる SQL 操作
| 操作タイプ | サポートされる SQL ステートメント |
|---|---|
| DML | INSERT、UPDATE、DELETE。説明 大きなフィールドのみを変更する |
| DDL | ALTER TABLE(列の追加、列の削除、列名の変更のみ)、CREATE TABLE、CREATE INDEX(パーティションテーブルおよび関数を持つテーブルは移行されません)、DROP TABLE、RENAME TABLE、TRUNCATE TABLE |
必要な権限
| データベース | スキーマ移行 | 完全なデータ移行 | 増分データ移行 |
|---|---|---|---|
| ソースインスタンス | 移行対象オブジェクトの読み取り権限 | owner 権限(ソースデータベース) | 「アカウントの作成」および「アカウント権限の変更」をご参照ください。 |
| 送信先インスタンス | 送信先データベースの読み取りおよび書き込み権限(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 を有効にします。SELECT INTO および TRUNCATE は CDC が有効なテーブルで実行できません。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 操作の再試行時間です。有効値:1~1,440 分。デフォルト:10。10 分を超える値を設定することを推奨します。接続失敗時の再試行時間 より短くする必要があります。 |
| 完全なデータ移行のスロットリングを有効化 | はい を選択すると、完全移行中の読み取り/書き込み負荷を制限できます。ソースデータベースへの 1 秒あたりのクエリ数 (QPS)、完全なデータ移行の RPS、および 完全なデータ移行の BPS を必要に応じて構成してください。完全なデータ移行 を選択した場合にのみ利用可能です。 |
| 増分データ移行のスロットリングを有効化 | はい を選択すると、増分移行中の負荷を制限できます。増分データ移行の RPS および 増分データ移行の BPS を必要に応じて構成してください。増分データ移行 を選択した場合にのみ利用可能です。 |
| 環境タグ | 環境に応じて、インスタンスを 通常 または 本番環境 としてタグ付けします。 |
| ETL の構成 | [はい] を選択すると、ETL (抽出・変換・書き出し) 機能が有効になり、データ処理文を入力できます。「ETL の設定」および「ETL とは |
ステップ 7:事前チェックの実行
次へ:タスク設定の保存と事前チェック をクリックします。
DTS は移行開始前に事前チェックを実行します。事前チェックに合格した後でのみ、タスクを続行できます。
確認項目が失敗した場合は、詳細を表示 をクリックして問題を解決し、その後 再度事前チェック をクリックします。
確認項目に警告が表示された場合:
警告を無視できない場合は、詳細を表示 をクリックして問題を修正し、再度事前チェックを実行します。
警告を安全に無視できる場合は、警告の詳細を確認 > 無視 > OK > 再度事前チェック の順にクリックします。警告を無視すると、データの不整合が発生する可能性があります。
ステップ 8:インスタンスの購入
成功率 が 100% に達するまで待ち、次へ:インスタンスの購入 をクリックします。
インスタンスの購入 ページで、以下の内容を構成します。
| セクション | パラメーター | 説明 |
|---|---|---|
| New Instance Class | Resource Group Settings | 移行インスタンスのリソースグループです。デフォルト:default resource group。詳細については、「What is Resource Management? |
| Instance Class | インスタンスクラスは移行速度を決定します。ご利用のデータ量とタイムラインに基づいて選択してください。詳細については、「Specifications of data migration instances」をご参照ください。 |
ステップ 9:移行の開始
Data Transmission Service (従量課金) サービス利用規約 チェックボックスをオンにします。
購入して開始 をクリックし、ダイアログボックスで OK をクリックします。
タスクがタスクリストに表示されます。そこから進行状況を監視できます。
次のステップ
移行タスクが完了し、増分移行のレイテンシがほぼゼロに低下した後:
ソースデータベースへの書き込みを停止します。
増分移行の遅延が 0 秒になるのを待ちます。
アプリケーションの接続文字列を送信先の ApsaraDB RDS for SQL Server インスタンスに切り替えます。
ソースと送信先のデータ整合性を検証します。
DTS 移行タスクを停止またはリリースします。