Data Transmission Service (DTS) を使用して、ApsaraDB RDS for PostgreSQL インスタンスから ApsaraDB RDS for MySQL インスタンスへデータを移行します。DTS は完全データ移行と増分データ移行の両方をサポートしており、ゼロダウンタイムでのデータベース移行が可能です。
ソースデータベースとターゲットデータベース
DTS は、以下のシナリオで PostgreSQL から MySQL への移行をサポートしています。このトピックでは、ApsaraDB RDS for PostgreSQL インスタンスから ApsaraDB RDS for MySQL インスタンスへの移行を例として説明します。
ApsaraDB RDS for PostgreSQL インスタンスから ApsaraDB RDS for MySQL インスタンスへのデータ移行
セルフマネージド PostgreSQL データベースからセルフマネージド MySQL データベースへのデータ移行
前提条件
ソースの ApsaraDB RDS for PostgreSQL インスタンスと、ターゲットの ApsaraDB RDS for MySQL インスタンスを作成します。詳細については、「ApsaraDB RDS for PostgreSQL インスタンスの作成」および「ApsaraDB RDS for MySQL インスタンスのクイック作成」をご参照ください。
説明ソースおよびターゲットのデータベースでサポートされているバージョンについては、「移行シナリオの概要」をご参照ください。
ターゲットの ApsaraDB RDS for MySQL インスタンスには、ソースの ApsaraDB RDS for PostgreSQL インスタンスの使用容量よりも大きいストレージ容量が必要です。
制限事項
スキーマ移行中、DTS はソースデータベースから移行先データベースに外部キーを移行します。
全量データ移行および増分データ移行中、DTS はセッションレベルで制約チェックと外部キーのカスケード操作を一時的に無効にします。 タスクの実行中にソースデータベースでカスケード更新または削除操作が発生した場合、データ不整合が発生する可能性があります。
タイプ | 説明 |
ソースデータベースの制限事項 |
|
その他の制限事項 |
|
料金
移行タイプ | リンク構成料金 | パブリックネットワークトラフィック料金 |
構造移行および全量データ移行 | 料金は発生しません。 | パブリックネットワーク経由で Alibaba Cloud から移行されるデータには料金がかかります。詳細については、「課金概要」をご参照ください。 |
増分データ移行 | 料金がかかります。詳細については、「課金概要」をご参照ください。 |
移行タイプ
スキーマ移行
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 |
データベースアカウントの権限要件
データベース | 完全データ移行 | 増分データ移行 | アクション |
ApsaraDB RDS for PostgreSQL インスタンス | 移行対象オブジェクトの SELECT 権限。 | 選択したデータベースを所有する特権アカウント。 説明 ApsaraDB RDS for PostgreSQL 9.4 ソースインスタンスからの増分 DML 移行では、REPLICATION 権限のみが必要です。 | |
ApsaraDB RDS for MySQL インスタンス | 読み取りおよび書き込み権限 | アカウントを作成し、アカウント権限を変更します。 | |
手順
次のいずれかの方法で、ターゲットリージョンの移行タスク一覧ページに移動します。
DTS コンソールから
左側メニューで、 データの移行 をクリックします。
ページの左上隅で、移行インスタンスがあるリージョンを選択します。
DMS コンソールから
説明実際の操作は、DMS コンソールのモードとレイアウトによって異なる場合があります。 詳細については、「シンプルモードコンソール」および「DMSコンソールのレイアウトとスタイルをカスタマイズする」をご参照ください。
Data Management (DMS) コンソールにログインします。
上部メニューで、 の順に選択します。
データ移行タスク の右側で、移行インスタンスがあるリージョンを選択します。
タスクの作成 をクリックし、タスク設定ページに移動します。
オプション:ページの右上隅にある 新バージョンの設定ページを試してみる をクリックします。
説明すでに新しい設定ページが表示されている場合 (右上隅のボタンが 旧バージョンの設定ページに戻る の場合)、この手順はスキップできます。
新旧の設定ページではパラメーターが異なります。新しい設定ページを使用することを推奨します。
ソースデータベースとターゲットデータベースを設定します。
警告ソースインスタンスとターゲットインスタンスを選択したら、ページ上部の 制限事項 を読み、移行タスクが問題なく作成および実行できることを確認してください。
カテゴリ
パラメーター
説明
N/A
[タスク名]
DTS はタスク名を自動的に生成します。識別しやすいように、わかりやすい名前を指定することを推奨します。名前は一意である必要はありません。
[ソースデータベース]
[データベースタイプ]
PostgreSQL を選択します。
[接続タイプ]
Alibaba Cloud インスタンス を選択します。
[インスタンスリージョン]
ソースの ApsaraDB RDS for PostgreSQL インスタンスのリージョンを選択します。
[インスタンス ID]
ソースの ApsaraDB RDS for PostgreSQL インスタンスのインスタンス ID を選択します。
[データベース名]
移行対象のオブジェクトが含まれる、ソースの ApsaraDB RDS for PostgreSQL インスタンスのデータベース名を入力します。
[データベースアカウント]
ソースの ApsaraDB RDS for PostgreSQL インスタンスのデータベースアカウントを入力します。必要な権限については、「データベースアカウントの権限要件」をご参照ください。
[データベースパスワード]
データベースアカウントのパスワードを入力します。
[暗号化]
接続方法を選択します。この例では、 非暗号化 が選択されています。
SSL 暗号化を使用してデータベースに接続する必要がある場合は、 SSL 暗号化 を選択し、必要に応じて CA 証明書、クライアント証明書、クライアント証明書の秘密鍵 をアップロードします。次に、クライアント証明書の秘密鍵のパスワード を入力します。
説明自己管理 PostgreSQL データベースで SSL 暗号化 を選択した場合は、 CA 証明書 をアップロードする必要があります。
クライアント証明書を使用する必要がある場合は、 クライアント証明書 と クライアント証明書の秘密鍵 の両方をアップロードし、 クライアント証明書の秘密鍵のパスワード を入力する必要があります。
RDS for PostgreSQL インスタンスの SSL 暗号化機能については、「SSL接続の暗号化」をご参照ください。
[ターゲットデータベース]
[データベースタイプ]
MySQL を選択します。
[接続タイプ]
Alibaba Cloud インスタンス を選択します。
[インスタンスリージョン]
ターゲットの ApsaraDB RDS for MySQL インスタンスのリージョンを選択します。
[RDS インスタンス ID]
ターゲットの ApsaraDB RDS for MySQL インスタンスのインスタンス ID を選択します。
[データベースアカウント]
ターゲットの ApsaraDB RDS for MySQL インスタンスのデータベースアカウントを入力します。必要な権限については、「データベースアカウントの権限要件」をご参照ください。
[データベースパスワード]
データベースアカウントのパスワードを入力します。
[接続方法]
データベースの要件に基づいて、 非暗号化 または SSL 暗号化 を選択します。このパラメーターを SSL 暗号化 に設定する場合は、事前に RDS for MySQL インスタンスで SSL 暗号化を有効にする必要があります。詳細については、「クラウド証明書を使用してSSL暗号化を迅速に有効にする」をご参照ください。
設定が完了したら、ページの下部にある 接続をテストして続行 をクリックします。
説明DTS サーバーの IP アドレス CIDR ブロックをソースデータベースとターゲットデータベースのセキュリティ設定に追加し、DTS サーバーからのアクセスが許可されていることを確認してください。これは自動または手動で行うことができます。詳細については、「DTSサーバーのIPアドレスCIDRブロックをホワイトリストに追加する」をご参照ください。
ソースまたはターゲットデータベースが自己管理データベースの場合 (アクセス方法 が Alibaba Cloud インスタンス ではない場合)、接続テスト ダイアログボックスで DTS サーバーの CIDR ブロック をクリックする必要もあります。
タスクオブジェクトを設定します。
オブジェクト設定 ページで、移行するオブジェクトを設定します。
パラメーター
説明
完全データ移行のみを実行する必要がある場合は、 スキーマ移行 と 完全データ移行 の両方を選択します。
ダウンタイムなしで移行を実行するには、 スキーマ移行、完全データ移行、増分データ移行 を選択します。
説明スキーマ移行 を選択しない場合は、ターゲットデータベースにデータを受け取るためのデータベースとテーブルが存在することを確認する必要があります。選択中のオブジェクト ボックスでオブジェクト名マッピング機能を使用することもできます。
増分データ移行 を選択しない場合は、データ移行中にソースインスタンスに新しいデータを書き込まないでください。
[競合するテーブルの処理モード]
エラーの事前チェックと報告:ターゲットデータベースに同じ名前のテーブルが存在するかどうかを確認します。同じ名前のテーブルが存在しない場合、事前チェックは合格します。同じ名前のテーブルが存在する場合、事前チェック中にエラーが報告され、データ移行タスクは開始されません。
説明ターゲットデータベースのテーブルの名前が同じで、簡単に削除または名前変更できない場合は、ターゲットデータベースのテーブルの名前を変更できます。詳細については、「オブジェクト名マッピング」をご参照ください。
エラーを無視して続行:同じ名前のテーブルのチェックをスキップします。
警告エラーを無視して続行 を選択すると、データの不整合やビジネスリスクが発生する可能性があります。例:
テーブルスキーマが一貫しており、ターゲットデータベースのレコードの主キー値がソースデータベースのレコードと同じ場合:
完全データ移行中、DTS はターゲットデータベースのレコードを保持します。ソースデータベースのレコードは移行されません。
増分データ移行中、DTS はターゲットデータベースのレコードを保持しません。ソースデータベースのレコードがターゲットデータベースのレコードを上書きします。
テーブルスキーマに一貫性がない場合、一部のデータ列のみが移行されたり、移行が失敗したりすることがあります。注意して進めてください。
[ソースオブジェクト]
ソースオブジェクト ペインで、移行するオブジェクトを選択し、
をクリックして 選択中のオブジェクト ペインに移動します。説明移行オブジェクトを選択する粒度は、スキーマ、テーブル、列です。移行オブジェクトとしてテーブルまたは列のみを選択した場合、ビュー、トリガー、ストアドプロシージャなどの他のオブジェクトはターゲットデータベースに移行されません。
[選択中のオブジェクト]
ターゲットインスタンス内の単一の移行オブジェクトの名前を変更するには、選択中のオブジェクト ボックスでオブジェクトを右クリックします。詳細については、「個々のスキーマ、テーブル、列の名前をマッピングする」をご参照ください。
ターゲットインスタンス内の複数の移行オブジェクトの名前を変更するには、選択中のオブジェクト を 一括編集 ボックスの右上隅でクリックします。詳細については、「複数のスキーマ、テーブル、列の名前をマッピングする」をご参照ください。
説明オブジェクト名のマッピングにより、依存オブジェクトの移行が失敗する可能性があります。
WHERE 句でデータをフィルタリングするには、選択中のオブジェクト セクションでテーブルを右クリックし、フィルタリング条件を指定します。「フィルタリング条件の設定」をご参照ください。
データベースまたはテーブルレベルで移行する SQL 操作を選択するには、選択中のオブジェクト セクションで移行オブジェクトを右クリックし、操作を選択します。
詳細設定へ をクリックして、詳細パラメーターを設定します。
パラメーター
説明
[タスクのスケジュールに使用する専用クラスターの選択]
デフォルトでは、DTS は共有クラスターでタスクをスケジュールします。選択する必要はありません。タスクの安定性を高めたい場合は、専用クラスターを購入して DTS 移行タスクを実行できます。
[失敗した接続の再試行時間]
移行タスクの開始後、ソースまたはターゲットデータベースへの接続が失敗した場合、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 を設定して、ターゲットデータベースの負荷を軽減できます。
説明この設定項目は、増分データ移行 で 移行タイプ を選択した場合にのみ設定できます。
移行インスタンスの実行後に、増分データ移行速度を調整することもできます。
[環境タグ]
オプション。インスタンスを識別するために環境タグを選択します。
[ETL 機能の設定]
ビジネスニーズに基づいて、ETL 機能を設定してデータを処理するかどうかを選択します。
○:ETL 機能を設定します。テキストボックスにデータ処理ステートメントを入力する必要もあります。
×:ETL 機能を設定しません。
[監視アラート]
ビジネスニーズに基づいて、アラートを設定してアラート通知を受信するかどうかを選択します。
×:アラートを設定しません。
○:アラートしきい値とアラート通知を設定してアラートを設定します。移行が失敗した場合やレイテンシがしきい値を超えた場合に、システムはアラート通知を送信します。
[次へ:データ検証] をクリックして、データ検証タスクを設定します。
データ検証機能を使用する場合、設定方法については「データ検証の設定」をご参照ください。
タスクを保存し、事前チェックを実行します。
API 操作を呼び出してこのインスタンスを設定する際のパラメーターを表示するには、次:タスク設定の保存と事前チェック ボタンの上にポインターを移動し、表示されるバブルで OpenAPI パラメーターのプレビュー をクリックします。
API パラメーターを表示する必要がない場合、または確認済みの場合は、ページの下部にある 次:タスク設定の保存と事前チェック をクリックします。
説明移行タスクが開始される前に、DTS は事前チェックを実行します。事前チェックに合格した場合にのみ、タスクは開始されます。
事前チェックが失敗した場合は、失敗したチェック項目の横にある 詳細を表示 をクリックし、プロンプトに基づいて問題を修正してから、事前チェックを再度実行します。
事前チェック中に警告が報告された場合:
無視できないチェック項目の場合は、失敗した項目の横にある 詳細を表示 をクリックし、プロンプトに基づいて問題を修正してから、事前チェックを再度実行します。
無視できるチェック項目の場合は、アラートの詳細を確認、無視、OK、再度事前チェックを実行 の順にクリックしてアラート項目をスキップし、事前チェックを再実行できます。警告を無視すると、データの不整合などの問題が発生し、ビジネスにリスクをもたらす可能性があります。
インスタンスを購入します。
成功率 が 100% になったら、次:インスタンスの購入 をクリックします。
購入 ページで、データ移行インスタンスのリンク仕様を選択します。詳細については、次の表をご参照ください。
カテゴリ
パラメーター
説明
[新しいインスタンスクラス]
[リソースグループの設定]
インスタンスが属するリソースグループを選択します。デフォルト値はデフォルトリソースグループです。詳細については、「リソース管理とは」をご参照ください。
[インスタンスクラス]
DTS は、異なるパフォーマンスレベルの移行仕様を提供します。リンク仕様は移行速度に影響します。ビジネスシナリオに基づいて仕様を選択できます。詳細については、「データ移行リンクの仕様」をご参照ください。
設定が完了したら、Data Transmission Service (従量課金) 利用規約 を読み、チェックボックスを選択します。
購入して起動 をクリックします。表示される OK ダイアログボックスで、[OK] をクリックします。
データ移行タスク 一覧ページで移行タスクの進行状況を確認できます。
説明移行タスクに増分データ移行が含まれていない場合、完全データ移行が完了すると自動的に停止します。タスクが停止すると、ステータス が 完了 に変わります。
移行タスクに増分データ移行が含まれている場合、自動的に停止しません。増分データ移行タスクは実行を続けます。増分データ移行タスクの実行中、タスクの ステータス は 実行中 です。