Data Transmission Service (DTS) は、ダウンタイムなしで、オンプレミス、ECS インスタンス上、またはサードパーティのクラウドプラットフォーム上の MySQL データベースから ApsaraDB RDS for MySQL インスタンスへデータを移行します。DTS はスキーマ移行、完全なデータ移行、および増分データ移行をサポートしています。これらのタイプを組み合わせることで、アプリケーションのダウンタイムなしに移行を完了できます。
前提条件
-
ご利用の自己管理 MySQL データベースが Alibaba Cloud に接続されており、DTS サーバーの CIDR ブロックがデータベースのセキュリティ設定(セキュリティグループ、ファイアウォール、ホワイトリスト)に追加されています。事前準備。
説明サポートされているバージョンについては、「移行ソリューション」をご参照ください。
-
増分データ移行が必要な場合、ご利用の自己管理 MySQL データベースでバイナリロギングが有効になっている必要があります。自己管理 MySQL データベース用アカウントの作成とバイナリログの設定。
-
ターゲットの ApsaraDB RDS for MySQL インスタンスが作成済みで、ソースデータベースが使用しているストレージ容量よりも多くのストレージを確保している必要があります。ApsaraDB RDS for MySQL インスタンスの作成。
注意事項
-
DTS はスキーマ移行中に外部キーを移行します。
-
完全および増分データ移行中、DTS はセッションレベルで一時的に制約チェックおよび外部キーのカスケードを無効にします。移行タスク実行中にソースデータベースでカスケード更新または削除操作を実行すると、データの不整合が発生する可能性があります。
|
タイプ |
説明 |
|
ソースデータベースの制限事項 |
|
|
その他の制限事項 |
|
|
特殊なケース |
|
課金
|
移行タイプ |
インスタンス構成料金 |
インターネットトラフィック料金 |
|
スキーマ移行および完全なデータ移行 |
無料です。 |
アクセス方法 パラメーターが パブリック IP アドレス に設定されている場合、インターネットトラフィック料金が発生します。詳細については、「課金概要」をご参照ください。 |
|
増分データ移行 |
課金対象です。詳細については、「課金概要」をご参照ください。 |
移行タイプ
-
スキーマ移行
Data Transmission Service (DTS) は、移行オブジェクトのスキーマ定義をソースデータベースからターゲットデータベースに移行します。
-
DTS は、テーブル、ビュー、トリガー、ストアドプロシージャ、および関数のスキーマ移行をサポートしています。
説明ストアドプロシージャの
routine_body、関数のroutine_body、およびビューのselect_statementは変更されません。 -
スキーマ移行中、DTS は移行対象のビュー、ストアドプロシージャ、および関数の `DEFINER` を `INVOKER` に変更します。これにより、`SQL SECURITY` の値が `INVOKER` に変更されます。また、DTS は `DEFINER` を移行タスクに使用するターゲットデータベースアカウントに設定します。
説明ソースデータベースのセキュリティ認証方法および definer は変更されません。
-
DTS はユーザー情報を移行しないため、ターゲットデータベースでビュー、ストアドプロシージャ、および関数を呼び出すには、呼び出し側に読み取りおよび書き込み権限を付与する必要があります。
-
-
完全移行
DTS は、指定された移行オブジェクトの既存データをすべてソースデータベースからターゲットデータベースに移行します。
-
増分移行
完全移行が完了した後、DTS はソースデータベースからターゲットデータベースへ増分データの更新を移行します。増分移行により、セルフマネージドアプリケーションを中断せずにスムーズにデータを移行できます。
増分移行の SQL 操作
|
操作タイプ |
SQL ステートメント |
|
DML |
INSERT、UPDATE、DELETE |
|
DDL |
|
データベースアカウントに必要な権限
|
データベース |
スキーマ移行 |
完全移行 |
増分移行 |
|
自己管理 MySQL データベース |
SELECT 権限 |
SELECT 権限 |
|
|
ApsaraDB RDS for MySQL インスタンス |
読み取りおよび書き込み権限 |
||
データベースアカウントを作成および承認するには:
アカウント情報を移行するには、移行タスクアカウントに追加の権限が必要です。「データベースアカウントの移行」をご参照ください。
-
自己管理 MySQL データベース:「自己管理 MySQL データベース用アカウントの作成と binlog の設定」。
-
ApsaraDB RDS for MySQL インスタンス:「アカウントの作成」および「アカウント権限の変更」。
操作手順
-
次のいずれかの方法で、ターゲットリージョンの移行タスクリストページに移動します。
DTS コンソールから
-
左側のナビゲーションウィンドウで、データの移行 をクリックします。
-
ページ左上隅で、移行インスタンスが配置されているリージョンを選択します。
DMS コンソールから
説明実際の操作は DMS コンソールのモードおよびレイアウトによって異なる場合があります。詳細については、「シンプルモードコンソール」および「DMS コンソールのレイアウトおよびスタイルのカスタマイズ」をご参照ください。
-
Data Management (DMS) コンソールにログインします。
-
上部のメニューバーで、 を選択します。
-
データ移行タスク の右側で、移行インスタンスが配置されているリージョンを選択します。
-
タスクの作成 をクリックして、タスク設定ページに移動します。
-
ソースおよびターゲットデータベースを設定します。
警告ソースおよびターゲットインスタンスを選択した後、ページ上部に表示される制限事項を慎重にご確認ください。そうでない場合、タスクが失敗したりデータの不整合が発生したりする可能性があります。
セクション
パラメーター
説明
該当なし
タスク名
DTS は自動的にタスク名を生成します。識別しやすいように、わかりやすい名前を指定することを推奨します。名前は一意である必要はありません。
ソースデータベース
既存の接続情報の選択
既存の接続は不要です。以下にデータベース情報を設定してください。
データベースタイプ
MySQL を選択します。
アクセス方法
ソースデータベースのアクセス方法を選択します。この例では パブリック IP アドレス を使用します。
説明ソースデータベースが自己管理の場合、必要な事前準備も完了する必要があります。
インスタンスのリージョン
ソース MySQL データベースのリージョンを選択します。
ドメイン名または IP アドレス
ソース MySQL データベースのエンドポイントを入力します。この例ではパブリックエンドポイントを使用します。
ポート番号
ソース MySQL データベースのサービスポートを入力します。ポートはインターネット経由でアクセス可能である必要があります。デフォルト:3306。
データベースアカウント
ソース MySQL データベースのアカウントを入力します。必要な権限:「データベースアカウントに必要な権限」。
データベースのパスワード
データベースアカウントのパスワードを入力します。
暗号化
必要に応じて 非暗号化 または SSL 暗号化 を選択します。
自己管理 MySQL データベースで SSL 暗号化が有効になっていない場合、非暗号化 を選択します。
自己管理 MySQL データベースで SSL 暗号化が有効になっている場合、SSL 暗号化 を選択します。また、CA 証明書 をアップロードし、CA 証明書パスワード を入力する必要があります。
宛先データベース
既存の接続情報の選択
既存の接続は不要です。以下にデータベース情報を設定してください。
データベースタイプ
MySQL を選択します。
アクセス方法
Alibaba Cloud インスタンス を選択します。
インスタンスのリージョン
ターゲットの ApsaraDB RDS for MySQL インスタンスのリージョンを選択します。
Alibaba Cloud アカウント間でデータを複製
この例では同じ Alibaba Cloud アカウントを使用します。× を選択します。
RDS インスタンス ID
ターゲットの ApsaraDB RDS for MySQL インスタンス ID を選択します。
データベースアカウント
ターゲットの ApsaraDB RDS for MySQL インスタンスのデータベースアカウントを入力します。必要な権限:「データベースアカウントに必要な権限」。
データベースのパスワード
データベースアカウントのパスワードを入力します。
暗号化
データベース要件に基づいて 非暗号化 または SSL 暗号化 を選択します。SSL 暗号化 に設定する場合、事前に RDS for MySQL インスタンスで SSL 暗号化を有効にしておく必要があります。詳細については、「クラウド証明書を使用した SSL 暗号化の迅速な有効化」をご参照ください。
-
設定を完了したら、ページ下部の 接続をテストして続行 をクリックします。表示される DTS サーバーの CIDR ブロック ダイアログボックスで、接続テスト をクリックします。
説明DTS サーバーからのアクセスを許可するために、ソースおよびターゲットデータベースのセキュリティ設定に DTS サービスの IP アドレスセグメントが自動または手動で追加されていることを確認してください。詳細については、「DTS サーバーの IP アドレスをホワイトリストに追加する」をご参照ください。
-
タスクオブジェクトを設定します。
-
オブジェクト設定 ページで、移行対象のオブジェクトを設定します。
パラメーター
説明
移行タイプ
-
完全移行のみを実行する必要がある場合、スキーマ移行 および 完全データ移行 の両方を選択します。
-
ダウンタイムなしで移行を実行する場合、スキーマ移行、完全データ移行、および 増分データ移行 を選択します。
説明-
スキーマ移行 を選択しない場合、ターゲットデータベースにデータを受信するためのデータベースおよびテーブルが存在することを確認する必要があります。選択中のオブジェクト ボックスでオブジェクト名マッピング機能を使用することもできます。
-
増分データ移行 を選択しない場合、データ移行中にソースインスタンスに新しいデータを書き込まないでください。これによりデータ整合性を確保できます。
移行元データベースのトリガーを移行する方法
トリガー移行方法を選択します。トリガーが関与しない場合はスキップしてください。「トリガーの同期または移行方法の設定」。
説明このパラメーターは、スキーマ移行 に対して 移行タイプ および 増分データ移行 の両方を選択した場合にのみ使用できます。
移行評価の有効化
ソースおよびターゲットのスキーマ(インデックス長、ストアドプロシージャ、依存テーブル)が要件を満たしているかどうかを評価します。ニーズに応じて ○ または × を選択します。
説明-
移行タイプ で スキーマ移行 を選択している場合にのみ、このパラメーターを設定できます。
-
○ を選択すると、事前チェックに時間がかかる場合があります。事前チェック中に 評価結果 を確認できます。評価結果は事前チェック結果に影響しません。
競合するテーブルの処理モード
-
エラーの事前チェックと報告:ターゲットデータベースに同じ名前のテーブルが存在するかどうかをチェックします。同じ名前のテーブルが存在しない場合、事前チェックは合格します。同じ名前のテーブルが存在する場合、事前チェック中にエラーが報告され、データ移行タスクは開始されません。
説明ターゲットデータベースのテーブルが同じ名前を持ち、簡単に削除または名前変更できない場合、ターゲットデータベースのテーブル名を変更できます。詳細については、「オブジェクト名マッピング」をご参照ください。
-
エラーを無視して続行:同じ名前のテーブルのチェックをスキップします。
警告エラーを無視して続行 を選択すると、データの不整合およびビジネスリスクが発生する可能性があります。例えば:
-
テーブルスキーマが一致しており、ターゲットデータベースのレコードがソースデータベースのレコードと同じプライマリキー値を持つ場合:
-
完全移行中、DTS はターゲットデータベースのレコードを保持します。ソースデータベースのレコードは移行されません。
-
増分移行中、DTS はターゲットデータベースのレコードを保持しません。ソースデータベースのレコードがターゲットデータベースのレコードを上書きします。
-
-
テーブルスキーマが不一致の場合、一部のカラムのデータのみが移行されるか、移行が失敗する可能性があります。慎重に進めてください。
-
イベントを移行するかどうか
ソースデータベースのイベントを移行するかどうかを選択します。○ を選択する場合、追加の手順が必要です。「イベントの同期または移行」。
移行先インスタンスでのオブジェクト名の大文字化
ターゲットインスタンスでの移行オブジェクト(データベース、テーブル、カラムなど)の名前の大文字小文字の扱いポリシーを設定できます。デフォルトでは DTS のデフォルトポリシー が選択されています。ソースまたはターゲットデータベースのデフォルトポリシーに合わせることもできます。詳細については、「ターゲットデータベースでのオブジェクト名の大文字小文字の扱い」をご参照ください。
ソースオブジェクト
ソースオブジェクト セクションから 1 つ以上のオブジェクトを選択します。
アイコンをクリックして、オブジェクトを 選択済みオブジェクト セクションに追加します。説明移行オブジェクトの選択粒度は、データベース、テーブル、カラムです。テーブルまたはカラムのみを移行オブジェクトとして選択した場合、ビュー、トリガー、ストアドプロシージャなどの他のオブジェクトはターゲットデータベースに移行されません。
選択中のオブジェクト
-
ターゲットインスタンスで単一の移行オブジェクトの名前を変更するには、選択中のオブジェクト ボックス内のオブジェクトを右クリックします。詳細については、「個別のスキーマ、テーブル、カラム名のマッピング」をご参照ください。
-
ターゲットインスタンスで複数の移行オブジェクトの名前を変更するには、一括編集 ボックス右上隅の 選択中のオブジェクト をクリックします。詳細については、「複数のスキーマ、テーブル、カラム名のマッピング」をご参照ください。
説明-
オブジェクト名マッピングにより、依存オブジェクトの移行が失敗する可能性があります。
-
WHERE 条件で移行データをフィルターするには、選択中のオブジェクト セクション内のテーブルを右クリックして条件を設定します。「移行するデータのフィルター」。
-
データベースまたはテーブルレベルで移行する SQL 操作を選択するには、選択中のオブジェクト セクション内のオブジェクトを右クリックし、ダイアログボックスで操作を選択します。
-
-
詳細設定へ をクリックして、高度なパラメーターを設定します。
パラメーター
説明
タスクのスケジュールに使用する専用クラスターの選択
デフォルトでは、DTS は共有クラスター上でタスクをスケジューリングします。選択する必要はありません。より安定したタスクを希望する場合は、DTS 移行タスクを実行するための専用クラスターを購入できます。
移行元テーブルで生成された Online DDL ツールの一時テーブルを移行先データベースにコピーします。
ソースデータベースで Data Management (DMS) または gh-ost を使用してオンライン DDL 変更を実行する場合、オンライン DDL 変更で生成された一時テーブルのデータを移行するかどうかを選択できます。
重要-
DTS タスクは pt-online-schema-change などのツールを使用したオンライン DDL 変更をサポートしていません。そうでない場合、DTS タスクは失敗します。
-
各フェーズの処理方法は次のとおりです。スキーマ移行 および 完全データ移行 フェーズでは、データベースまたはテーブル構造を変更する DDL 操作が許可されていないため、オンライン DDL ポリシーの制御を受けません。
-
スキーマ移行:オンライン DDL ポリシーの制御を受けません。関連する一時テーブルが作成されます。
-
完全データ移行:オンライン DDL ポリシーの制御を受けません。完全移行オブジェクトには一時テーブルの移行が含まれません。正規表現 (
^_(.+)_(?:gho|new)$または^_(.+)_(?:ghc|del|old)$) に一致するすべてのテーブルがフィルターされます。 -
増分データ移行:オンライン DDL ポリシーの制御を受けます。
-
○:オンライン DDL 操作で生成された一時テーブル(例:
_table_name_gho)からのデータ変更を移行します。 -
いいえ、DMS オンライン DDL に適応 および いいえ、gh-ost に適応:gh-ost などのツールで生成された一時テーブル(例:
_table_name_gho)からのデータ変更を正規表現ルールに基づいてフィルターします。
-
-
-
○:オンライン DDL 変更で生成された一時テーブルのデータを移行します。
説明オンライン DDL 変更で一時テーブルに大量のデータが生成された場合、タスク遅延が発生する可能性があります。
-
いいえ、DMS オンライン DDL に適応:オンライン DDL 変更で生成された一時テーブルのデータを移行しません。Data Management (DMS) を使用して実行された元の DDL ステートメントのみを移行します。
説明このオプションにより、ターゲットデータベースのテーブルがロックされます。
-
いいえ、gh-ost に適応:オンライン DDL 変更で生成された一時テーブルのデータを移行しません。カスタムフィルタールールをサポートしています。DTS は、gh-ost などのツールで生成された一時テーブル(例:
_table_name_gho)からのデータ変更を正規表現ルールに基づいてフィルターします。シャドウテーブルおよび不要なテーブルに一致させるためのデフォルトの正規表現を必要に応じて変更できます:-
シャドウテーブル:
^_(.+)_(?:gho|new)$ -
不要なテーブル:
^_(.+)_(?:ghc|del|old)$
説明このオプションにより、ターゲットデータベースのテーブルがロックされます。
-
アカウントを移行
ソースデータベースアカウントを移行するかどうかを選択します。○ を選択する場合、移行するアカウントを選択し、その権限を確認してください。
失敗した接続の再試行時間
移行タスク開始後、ソースまたはターゲットデータベースへの接続が失敗した場合、DTS はエラーを報告し、直ちに接続の再試行を開始します。デフォルトの再試行時間は 720 分です。10 ~ 1440 分の範囲で再試行時間をカスタマイズできます。30 分以上に設定することを推奨します。指定された時間内に DTS がソースおよびターゲットデータベースに再接続できた場合、移行タスクは自動的に再開されます。そうでない場合、タスクは失敗します。
説明-
同じソースまたはターゲットを共有する複数の DTS インスタンスの場合、ネットワーク再試行時間は最後に作成されたタスクの設定によって決定されます。
-
接続再試行期間中もタスクに対して課金されるため、ビジネスニーズに基づいて再試行時間をカスタマイズするか、ソースおよびターゲットデータベースインスタンスをリリースした後はできるだけ早く DTS インスタンスを解放することを推奨します。
移行元データベースと移行先データベースで他の問題が発生した場合の、再試行までの待機時間です。
移行タスク開始後、ソースまたはターゲットデータベースで接続以外の問題(DDL または DML 実行例外など)が発生した場合、DTS はエラーを報告し、直ちに操作の再試行を開始します。デフォルトの再試行時間は 10 分です。1 ~ 1440 分の範囲で再試行時間をカスタマイズできます。10 分以上に設定することを推奨します。指定された再試行時間内に関連操作が成功した場合、移行タスクは自動的に再開されます。そうでない場合、タスクは失敗します。
重要移行元データベースと移行先データベースで他の問題が発生した場合の、再試行までの待機時間です。 の値は、失敗した接続の再試行時間 の値より小さくする必要があります。
完全移行率を制限するかどうか
完全移行中、DTS はソースおよびターゲットデータベースの読み取りおよび書き込みリソースを消費し、データベース負荷が増加する可能性があります。必要に応じて、完全移行タスクの速度制限を有効化できます。1 秒あたりのソースデータベースのクエリ率 QPS、1 秒あたりの完全移行の行数 RPS、および 1 秒あたりの完全移行データ量 (MB) BPS を設定して、ターゲットデータベースの負荷を軽減できます。
説明-
この設定項目は、移行タイプ で 完全データ移行 を選択している場合にのみ利用可能です。
-
移行インスタンス実行後も、完全移行速度を調整 できます。
増分移行率を制限するかどうか
必要に応じて、増分移行タスクの速度制限を設定することもできます。1 秒あたりの増分移行の行数 RPS および 1 秒あたりの増分移行データ量 (MB) BPS を設定して、ターゲットデータベースの負荷を軽減できます。
説明-
この設定項目は、移行タイプ で 増分データ移行 を選択している場合にのみ利用可能です。
-
移行インスタンス実行後も、増分移行速度を調整 できます。
環境タグ
インスタンスを識別するためのオプションの環境タグです。この例では不要です。
順方向および逆方向タスクのハートビートテーブル SQL を削除
DTS インスタンス実行中にソースデータベースにハートビート SQL 情報を書き込むかどうかを選択します。
-
○:ハートビート SQL 情報はソースデータベースに書き込まれません。これにより、DTS インスタンスが遅延を報告する可能性があります。
-
×:ハートビート SQL 情報をソースデータベースに書き込みます。これにより、ソースデータベースの物理バックアップやクローンなどの機能に干渉する可能性があります。
ETL 機能の設定
ビジネスニーズに基づいて、データを処理するためにETL 機能を設定するかどうかを選択します。
-
○:ETL 機能を設定します。また、テキストボックスにデータ処理ステートメントを入力する必要があります。
-
×:ETL 機能を設定しません。
監視アラート
ビジネスニーズに基づいて、アラートを設定し、アラート通知を受信するかどうかを選択します。
-
×:アラートを設定しません。
-
○:アラートのしきい値 および アラート通知 を設定してアラートを構成します。移行が失敗した場合や遅延がしきい値を超えた場合、システムがアラート通知を送信します。
-
-
次へ:データ検証 をクリックして、データ検証タスクを設定します。
データ検証機能の詳細については、「データ検証の設定」をご参照ください。
-
-
タスクを保存し、事前チェックを実行します。
-
API オペレーションを呼び出す際にこのインスタンスを構成するためのパラメーターを表示するには、次:タスク設定の保存と事前チェック ボタンにポインターを合わせ、表示される吹き出しで OpenAPI パラメーターのプレビュー をクリックします。
-
API パラメーターを表示する必要がない場合、または表示が完了した場合は、ページ下部の 次:タスク設定の保存と事前チェック をクリックします。
説明-
移行タスク開始前に、DTS は事前チェックを実行します。事前チェックに合格した後でのみタスクが開始されます。
-
事前チェックに失敗した場合、失敗したチェック項目の横にある 詳細を表示 をクリックし、プロンプトに基づいて問題を修正してから、再度事前チェックを実行してください。
-
事前チェック中に警告が報告された場合:
-
無視できないチェック項目の場合、失敗した項目の横にある 詳細を表示 をクリックし、プロンプトに基づいて問題を修正してから、再度事前チェックを実行してください。
-
無視可能なチェック項目の場合、アラートの詳細を確認、無視、OK、および 再度事前チェックを実行 をクリックして、警告項目をスキップし、再度事前チェックを実行できます。警告を無視することを選択した場合、データの不整合などの問題が発生し、ビジネスにリスクをもたらす可能性があります。
-
-
-
インスタンスを購入します。
-
成功率 が 100 % になったら、次:インスタンスの購入 をクリックします。
-
購入 ページで、データ移行インスタンスのリンク仕様を選択します。詳細は次の表をご参照ください。
カテゴリ
パラメーター
説明
新しいインスタンスクラス
リソースグループの設定
インスタンスが属するリソースグループを選択します。デフォルト値はデフォルトリソースグループです。詳細については、「Resource Management とは」をご参照ください。
インスタンスクラス
DTS は異なるパフォーマンスレベルを持つ移行仕様を提供しています。リンク仕様は移行速度に影響します。ビジネスシナリオに基づいて仕様を選択できます。詳細については、「データ移行リンク仕様」をご参照ください。
-
設定が完了したら、Data Transmission Service (従量課金) 利用規約 を読み、同意してください。
-
購入して起動 をクリックし、表示される OK ダイアログボックスで OK をクリックします。
移行タスクページでタスクの進行状況を確認します。
説明-
移行タスクに増分移行が含まれていない場合、完全移行が完了した後に自動的に停止します。タスクが停止した後、ステータス は 完了 に変化します。
-
移行タスクに増分移行が含まれている場合、自動的に停止しません。増分移行タスクは継続して実行されます。増分移行タスク実行中、タスクの ステータス は 実行中 です。
-
ワークロードを切り替える場合は、移行遅延が低いかゼロのビジネストラフィックの少ない時間帯に行ってください。「ワークロードの切り替え」。
-
-
よくある質問
Q:インスタンスの実行開始後、順方向および逆方向タスクのハートビートテーブル SQL を削除 を変更できますか?
A:いいえ。