Data Transmission Service (DTS) では、コンソールのステップバイステップのワークフローを通じて、インスタンス間でデータベースを移行できます。このチュートリアルでは、ApsaraDB RDS for MySQL から MySQL への移行を例に、データベースの接続、移行オブジェクトの選択、事前チェックの実行、移行インスタンスの購入、タスクの開始までの一連のプロセスを説明します。
このチュートリアルの手順とパラメーターは、ApsaraDB RDS for MySQL インスタンス間での MySQL から MySQL への移行に基づいています。実際の設定は、ご利用のソースデータベースとターゲットデータベースの種類によって異なります。サポートされているシナリオについては、「データ移行シナリオの概要」をご参照ください。
前提条件
開始する前に、以下の準備が整っていることを確認してください。
ソースデータベースとターゲットデータベースが作成され、サポートされているバージョンで実行されていること。サポートされている種類とバージョンについては、「データ移行シナリオの概要」をご参照ください。
(自己管理データベースの場合) 必要な環境が準備されていること。詳細については、「準備の概要」をご参照ください。
移行対象のオブジェクトに対する SELECT、REPLICATION CLIENT、および REPLICATION SLAVE 権限を持つソースインスタンス上のデータベースアカウント。
ターゲットデータベースに対する読み取りおよび書き込み権限を持つターゲットインスタンス上のデータベースアカウント。
ステップ 1: データ移行ページを開く
DTS コンソールまたは DMS コンソールのいずれかを使用して、[データ移行] ページに移動します。
DTS コンソール
DTS コンソールにログインします。
左側のナビゲーションウィンドウで、[データ移行] をクリックします。
左上隅で、移行インスタンスが存在するリージョンを選択します。
DMS コンソール
具体的な手順は、お使いのDMSコンソールのモードおよびレイアウトによって異なる場合があります。詳細については、「シンプルモード」および「DMSコンソールのレイアウトとスタイルをカスタマイズする」をご参照ください。
DMS コンソールにログインします。
上部のナビゲーションバーで、[Data + AI] > [DTS (DTS)] > [データ移行] にポインターを合わせます。
[データ移行タスク] の右側にあるドロップダウンリストから、移行インスタンスが存在するリージョンを選択します。
ステップ 2: タスクの作成
[タスクの作成] をクリックして、タスク設定ページを開きます。
ページの右上隅に [新しい設定ページ] ボタンが表示されている場合は、それをクリックして新しいバージョンに切り替えます。代わりに [以前のバージョンに戻る] が表示されている場合は、このステップをスキップしてください。すでに新しいバージョンを使用しています。
新旧の設定ページではパラメーターが異なります。新しいバージョンを使用してください。
ステップ 3: ソースデータベースとターゲットデータベースの設定
ソースデータベースとターゲットデータベースの詳細を入力した後、次に進む前にページ上部に表示される [使用制限] セクションをお読みください。このステップをスキップすると、タスクの失敗やデータ不整合の原因となる可能性があります。
以下の表は、ソースデータベースとターゲットデータベースのパラメーターを説明しています。この例では、両方とも同じ Alibaba Cloud アカウント内の ApsaraDB RDS for MySQL インスタンスです。
ソースデータベース
| パラメーター | 説明 |
|---|---|
| タスク名 | DTS タスクの名前。DTS によって自動的に生成されます。タスクを識別しやすくするために、わかりやすい名前を指定してください。名前は一意である必要はありません。 |
| DMS データベースインスタンスの選択 | この例では選択しません。代わりに以下のデータベースパラメーターを設定します。 |
| データベースタイプ | ソースデータベースのタイプ。 [MySQL] を選択します。 |
| アクセス方法 | ソースデータベースのアクセス方法。 [Alibaba Cloud インスタンス] を選択します。 |
| インスタンスリージョン | ソース ApsaraDB RDS for MySQL インスタンスのリージョン。 |
| Alibaba Cloud アカウント間でのデータ複製 | ソースデータベースが別の Alibaba Cloud アカウントに属しているかどうか。この例では [いいえ] を選択します。 |
| RDS インスタンス ID | ソース ApsaraDB RDS for MySQL インスタンスの ID。 |
| データベースアカウント | 移行対象のオブジェクトに対する SELECT、REPLICATION CLIENT、および REPLICATION SLAVE 権限を持つデータベースアカウント。 |
| データベースパスワード | データベースアカウントのパスワード。 |
| 暗号化 | この例ではデフォルト設定を使用します。 |
ターゲットデータベース
| パラメーター | 説明 |
|---|---|
| DMS データベースインスタンスの選択 | この例では選択しません。代わりに以下のデータベースパラメーターを設定します。 |
| データベースタイプ | ターゲットデータベースのタイプ。 [MySQL] を選択します。 |
| アクセス方法 | ターゲットデータベースのアクセス方法。 [Alibaba Cloud インスタンス] を選択します。 |
| インスタンスリージョン | ターゲット ApsaraDB RDS for MySQL インスタンスのリージョン。 |
| Alibaba Cloud アカウント間でのデータ複製 | ターゲットデータベースが別の Alibaba Cloud アカウントに属しているかどうか。この例では [いいえ] を選択します。 |
| RDS インスタンス ID | ターゲット ApsaraDB RDS for MySQL インスタンスの ID。 |
| データベースアカウント | ターゲットデータベースに対する読み取りおよび書き込み権限を持つデータベースアカウント。 |
| データベースパスワード | データベースアカウントのパスワード。 |
| 暗号化 | この例ではデフォルト設定を使用します。 |
ステップ 4: 接続テスト
ページ下部の [接続をテストして続行] をクリックします。
DTS は、データベースがホストされている場所に基づいてファイアウォール設定を自動的に更新します。
Alibaba Cloud データベースインスタンス (ApsaraDB RDS for MySQL や ApsaraDB for MongoDB など):DTS は、そのサーバーの CIDR ブロックをインスタンスの IP アドレスホワイトリストに追加します。
単一の Elastic Compute Service (ECS) インスタンス上の自己管理データベース:DTS は、そのサーバーの CIDR ブロックを ECS のセキュリティグループルールに追加します。ECS インスタンスがデータベースに到達できることを確認してください。
複数の ECS インスタンス上の自己管理データベース:各 ECS インスタンスのセキュリティグループルールに DTS サーバーの CIDR ブロックを手動で追加します。
オンプレミスまたはサードパーティのクラウドデータベース: DTS サーバーの CIDR ブロックをデータベースの IP アドレスホワイトリストに手動で追加します。詳細については、「DTS サーバーの CIDR ブロックを追加する」をご参照ください。
DTS の CIDR ブロックをホワイトリストやセキュリティグループルールに追加すると、セキュリティリスクが生じます。データ移行を行う前に、認証情報の強化、公開ポートの制限、API 呼び出しの認証、ホワイトリストルールの定期的な監査、Express Connect、VPN Gateway、または Smart Access Gateway を使用したデータベースと DTS の接続など、予防措置を講じてください。
ステップ 5: 移行オブジェクトの設定
移行対象の選択
[オブジェクトの設定] ページで、オブジェクトと移行タイプを選択します。
この例では、[移行タイプ] で [スキーマ移行]、[完全データ移行]、[増分データ移行] を選択し、移行するオブジェクトを [ソースオブジェクト] から [選択済みオブジェクト] に移動します。
以下の表は、主要なパラメーターを説明しています。
| パラメーター | 説明 |
|---|---|
| 移行タイプ | 目的に応じて選択します:• スキーマ移行 + 完全データ移行 — 既存のデータを一度だけコピーし、継続的な同期は行いません。データ不整合を防ぐため、移行中はソースデータベースへの書き込みを避けてください。• スキーマ移行 + 完全データ移行 + 増分データ移行 — 移行中もターゲットデータベースを同期し続けることで、サービスの継続性を維持します。移行中にアプリケーションをオンラインに保つ必要がある場合は、このオプションを使用してください。 説明 [スキーマ移行] をスキップする場合、データを受け取るためにターゲットデータベースにデータベースとテーブルが作成されていることを確認し、[選択済みオブジェクト] でオブジェクト名マッピングを有効にしてください。 |
| ソースデータベースのトリガーの移行方法 | ソースデータベースからのトリガーの処理方法。移行するトリガーがある場合のみ設定します。詳細については、「ソースデータベースからのトリガーの同期または移行」をご参照ください。[スキーマ移行] と [増分データ移行] の両方が選択されている場合のみ利用可能です。 |
| 移行評価の有効化 | 移行前にスキーマの互換性 (インデックス長、ストアドプロシージャ、依存テーブル) を評価するかどうか。[はい] を選択すると、事前チェックの時間が増加します。結果は [評価結果] に表示され、事前チェックの合否には影響しません。[スキーマ移行] が選択されている場合のみ利用可能です。 |
| 競合するテーブルの処理モード | ターゲットデータベース内でソーステーブルと名前が同じテーブルの処理方法:• 事前チェックとエラー報告 — 同じテーブル名が見つかった場合、事前チェックは失敗します。競合を回避するには、オブジェクト名マッピングを使用してターゲット側でテーブル名を変更します。• エラーを無視して続行 — 名前競合チェックをスキップします。 警告 これによりデータ不整合が発生する可能性があります。完全移行中は既存のレコードが保持されます。増分移行中は既存のレコードが上書きされます。スキーマが異なる場合、一部の列のみが移行されるか、タスクが完全に失敗する可能性があります。 |
| ターゲットインスタンスのオブジェクト名の大文字/小文字 | ターゲットデータベース、テーブル、および列名の大文字/小文字のポリシー。デフォルトは [DTS デフォルトポリシー]宛先インスタンスにおけるオブジェクト名の大文字小文字の指定 です。詳細については、「」をご参照ください。 |
| ソースオブジェクト | 移行する列、テーブル、またはデータベースを選択し、 |
| 選択済みオブジェクト | 移行対象としてステージングされたオブジェクトを管理する:<br>• 単一のオブジェクトの名前を変更する:右クリックします。詳細については、「単一のオブジェクトの名前をマップする」をご参照ください。<br>• 複数のオブジェクトの名前を変更する:右上隅の [一括編集] をクリックします。詳細については、「複数のオブジェクト名を一度にマップする」をご参照ください。<br>• SQL 条件で行をフィルターする:テーブルを右クリックし、WHERE 条件を指定します。詳細については、「フィルター条件を設定する」をご参照ください。<br>• 移行する DML または DDL 操作を選択する:オブジェクトを右クリックし、操作を選択します。 |
詳細設定の構成
[次へ:詳細設定] をクリックします。ほとんどのシナリオではデフォルト値で問題ありません。必要に応じて以下のパラメーターを調整してください。
| パラメーター | 説明 |
|---|---|
| タスクスケジューリング専用クラスター | DTS 専用クラスターの基本概念デフォルトでは DTS が共有クラスターを使用します。より高いタスク安定性を確保するには、専用クラスターをご購入ください。詳細については、「」をご参照ください。 |
| ソーステーブルで生成されたオンライン DDL ツールの一時テーブルをターゲットデータベースにコピーする | ソースで DMS または gh-ost を使用してオンライン DDL 操作を行う場合に適用されます。 重要 pt-online-schema-change はサポートされていません。使用すると DTS タスクが失敗します。• はい — オンライン DDL 操作から一時テーブルのデータを移行します。遅延が発生する可能性があります。• いいえ、DMS オンライン DDL に適合 — DMS によるオリジナルの DDL のみを移行し、一時テーブルのデータは移行しません。ターゲットテーブルがロックされる可能性があります。• いいえ、gh-ost に適合 — gh-ost によるオリジナルの DDL のみを移行し、一時テーブルのデータは移行しません。gh-ost のシャドウテーブルをフィルター処理できます。ターゲットテーブルがロックされる可能性があります。 |
| アカウントの移行有無 | ソースデータベースのアカウント情報を移行するかどうかを指定します。はい を選択した場合、移行対象のアカウントを選択し、本タスクで使用するアカウントの権限を確認してください。詳細については、「データベースアカウントの移行」をご参照ください。 |
| 接続失敗時のリトライ時間 | DTS がソースまたはターゲットデータベースへの接続を失った場合のリトライ継続時間です。有効値範囲:10~1,440 分。デフォルト値:720 分。30 分を超える値を設定することを推奨します。この時間内に再接続されればタスクは再開されますが、これを超えるとタスクは失敗します。 説明 複数のタスクが同一のソースまたはターゲットデータベースを共有する場合、最も最近設定されたリトライ時間ウィンドウが有効になります。リトライ中も DTS の課金が発生します。 |
| その他のエラー発生時のリトライ時間 | DDL 操作または DML 操作が失敗した場合のリトライ継続時間です。有効値範囲:1~1,440 分。デフォルト値:10 分。10 分を超える値を設定することを推奨します。この値は「接続失敗時のリトライ時間」より小さくする必要があります。 |
| 完全なデータ移行時の速度制限の有効化 | 完全なデータ移行中の移行速度を制限するかどうかを指定します。完全なデータ移行中、DTS はソースおよびターゲットデータベースの読み取り・書き込みリソースを使用します。ビジネス要件に応じて、速度制限を有効化できます。「ソースデータベースへのクエリ数 (QPS)」「完全なデータ移行の RPS」「完全移行におけるデータ移行速度 (MB/s)」を設定することで、ターゲットデータベースサーバーの負荷を軽減できます。「完全なデータ移行」が選択されている場合のみ利用可能です。 |
| 増分データ移行時の速度制限の有効化 | 増分データ移行中の移行速度を制限するかどうかを指定します。「増分データ移行の RPS」「増分移行におけるデータ移行速度 (MB/s)」を設定できます。「増分データ移行」が選択されている場合のみ利用可能です。 |
| 環境タグ | DTS インスタンスの環境を識別するためのタグです。ご利用の環境(例:本番環境またはステージング環境)に応じて選択してください。 |
| ETL の設定 | 移行データに対して抽出・変換・書き出し (ETL) 処理を有効化するかどうかを指定します。はいデータ移行タスクまたはデータ同期タスクでの ETL の設定 を選択すると、コードエディタでデータ処理文を入力できます。詳細については、「」をご参照ください。 |
| 順方向および逆方向タスクのハートビートテーブルに対する SQL 操作の削除有無 | インスタンス実行中に DTS がハートビートテーブルへ SQL 操作を書き込むかどうかを指定します。• はい — ハートビート SQL を書き込みません。モニタリング上の遅延が過大に表示される可能性があります。• いいえ — ハートビート SQL を書き込みます。ソースデータベースの物理バックアップおよびクローン作成に影響を及ぼす可能性があります。 |
| モニタリングとアラート機能 | タスク失敗または遅延がしきい値を超えた場合のアラート設定を行うかどうかを指定します。はいDTS タスク作成時のモニタリングとアラートの設定 を選択すると、しきい値および通知先連絡先を設定できます。詳細については、「」をご参照ください。 |
データ検証の設定
「[データ検証へ進む]」をクリックして、オプションでデータ検証タスクを設定します。詳細については、「データ検証タスクの設定」をご参照ください。
ステップ 6: 事前チェックの実行
ページ下部の [次へ:タスク設定を保存して事前チェック] をクリックします。
保存する前にこのタスク設定の OpenAPI パラメーターを表示するには、[次へ:タスク設定を保存して事前チェック] にポインターを合わせ、[OpenAPI パラメーターのプレビュー] をクリックします。
DTS は移行を開始する前に事前チェックを実行します。タスクは事前チェックに合格した後にのみ開始できます。
失敗した項目:失敗した項目の横にある [詳細の表示] をクリックし、問題を診断して修正した後、[再度事前チェック] をクリックします。
無視できないアラート項目:[詳細の表示] をクリックし、問題を修正した後、[再度事前チェック] をクリックします。
無視できるアラート項目:[アラート詳細の確認] > [無視] > [OK] をクリックし、その後 [再度事前チェック] をクリックします。アラートを無視すると、データ不整合が発生する可能性があります。
ステップ 7: 移行インスタンスの購入
[成功率] が 100% に達するまで待ち、[次へ:インスタンスの購入] をクリックします。
[インスタンスの購入] ページで、インスタンスを設定します。
| パラメーター | 説明 |
|---|---|
| [リソースグループ] | 移行インスタンスのリソースグループです。デフォルト: デフォルトのリソースグループ。詳細については、「Resource Management とは? |
| [インスタンスクラス] | インスタンスクラスは移行速度を決定します。データ量と時間要件に基づいて選択してください。詳細については、「データ移行インスタンスの仕様」をご参照ください。 |
[Data Transmission Service (従量課金) 利用規約] チェックボックスを選択し、[購入して開始] をクリックします。確認ダイアログで [OK] をクリックします。
タスクが実行を開始します。[データ移行] ページで進捗を追跡します。
次のステップ
データ移行シナリオの概要 — サポートされている他のソースデータベースとターゲットデータベースの組み合わせを調べます。
データ検証タスクの設定 — 移行が完了した後にデータ整合性を確認します。
オブジェクト名のマッピング — 送信先のデータベース、テーブル、または列の名前を変更します。