このトピックでは、data Transmission Service (DTS) を使用して、ApsaraDB RDS for PPASインスタンスからPolarDB for Oracleクラスターにデータを移行する方法について説明します。 DTS はフルデータ移行と増分データ移行に対応しています。 データ移行タスクを設定するときに、サポートされているすべての移行タイプを選択して、サービスの継続性を確保できます。
前提条件
- PolarDB for Oracleクラスターが作成されました。 詳細については、「PolarDB For PostgreSQL(Compatible with Oracle) クラスターの作成」をご参照ください。
- PolarDB for Oracleクラスターの使用可能なストレージ容量が、ApsaraDB RDS for PPASインスタンスのデータの合計サイズよりも大きいこと。
- ApsaraDB RDS for PPASインスタンスのソースデータベース、テーブル、およびフィールドの名前に1つ以上の大文字が存在する場合、クラスターでオブジェクトを作成するときに、PolarDB for Oracleクラスターのソースデータベース、テーブル、およびフィールドの名前を二重引用符 (") で囲む必要があります。
- ApsaraDB RDS for PPASインスタンスから増分データを移行するには、スーパーユーザーロールの権限をデータベースアカウントに付与する必要があります。
制限事項
- DTSは、完全データ移行中にソースデータベースとターゲットデータベースの読み取りおよび書き込みリソースを使用します。 これは、データベースサーバの負荷を増加させる可能性がある。 データベースのパフォーマンスが悪い場合、仕様が低い場合、またはデータ量が多い場合、データベースサービスが利用できなくなる可能性があります。 たとえば、ソースデータベースで多数の低速SQLクエリが実行されている場合、テーブルにプライマリキーがない場合、またはターゲットデータベースでデッドロックが発生する場合、DTSは大量の読み取りおよび書き込みリソースを占有します。 データを移行する前に、移行元データベースと移行先データベースのパフォーマンスに対するデータ移行の影響を評価します。 オフピーク時にデータを移行することを推奨します。 たとえば、ソースデータベースとターゲットデータベースのCPU使用率が30% 未満の場合にデータを移行できます。
- 移行元データベースで移行するテーブルには、PRIMARY KEYまたはUNIQUE制約が必要であり、すべてのフィールドが一意である必要があります。 そうでない場合、宛先データベースは重複するデータレコードを含み得る。
- 単一のデータ移行タスクでは、1つのデータベースからのみデータを移行できます。 複数のデータベースからデータを移行するには、データベースごとにデータ移行タスクを作成する必要があります。
- データ移行タスクが失敗した場合、DTSは自動的にタスクを再開します。 ワークロードを移行先クラスターに切り替える前に、データ移行タスクを停止またはリリースしてください。 それ以外の場合、タスクの再開後、ソースデータベースのデータがターゲットクラスターのデータを上書きします。
- ワークロードがターゲットデータベースに切り替えられた後、新しく書き込まれたシーケンスは、ソースデータベースのシーケンスの最大値から増加しません。 したがって、ワークロードをターゲットデータベースに切り替える前に、ソースデータベース内のシーケンスの最大値を照会する必要があります。 次に、クエリされた最大値をターゲットデータベースのシーケンスの初期値として指定する必要があります。 次のコマンドを実行して、ソースデータベース内のシーケンスの最大値を照会できます。
do language plpgsql $$ 宣言 nsp名; rel名; val int8; 始める select nspname、pg_class t2、pg_namespace t3のrelnameで、t2.relnamespace=t3.oidおよびt2.relkind='S' ループ 実行形式 ($_$ select last_valueから % I.% I $_$, nsp, rel) をvalにします。 通知 '%' を上げ、 形式 ($_$ select setval('% I.% I'::regclass, % s);$_$, nsp, rel, val + 1); 終わりのループ; 終了; $$; - ApsaraDB RDS for PPASインスタンスからPolarDB for Oracleクラスターにデータを移行する場合は、次の項目に注意してください。
- PolarDB for Oracleクラスターの仕様がApsaraDB RDS for PPASインスタンスの仕様以上であることを確認します。 そうしないと、データをPolarDB for Oracleクラスターに移行した後にCPUまたはメモリリソースが不足するため、低速SQLクエリまたはメモリ不足 (OOM) エラーが発生する可能性があります。 PolarDB For Oracleクラスターの推奨仕様の詳細については、「ApsaraDB RDS for PPASインスタンスの仕様とPolarDB for Oracleクラスターの推奨仕様間のマッピング」をご参照ください。
- 移行後の接続数とIOPSのビジネス要件がある場合は、ビジネス要件に基づいて適切な仕様を選択します。 詳細については、「計算ノードの仕様」をご参照ください。
- クラスターエンドポイントを使用してアプリケーションをPolarDB for Oracleクラスターに接続する場合、読み書き分離が有効になります。 次に、システムは読み取り要求を読み取り専用PolarDB for Oracleノードに転送します。 これにより、PolarDB for Oracleクラスターの負荷が軽減されます。 クラスターエンドポイントを取得する方法の詳細については、「エンドポイントの表示または申請」をご参照ください。
ApsaraDB RDS for PPASインスタンスの仕様とPolarDB for Oracleクラスターの推奨仕様とのマッピング
PolarDB for Oracleクラスターの仕様が、お使いのApsaraDB RDS for PPASインスタンスの仕様以上であることを確認してください。 そうしないと、データをPolarDB for Oracleクラスターに移行した後にCPUまたはメモリリソースが不足するため、低速のSQLクエリまたはOOMエラーが発生する可能性があります。 次の表に、PolarDB for Oracleクラスターの推奨仕様を示します。
| ApsaraDB RDS for PPASインスタンスの仕様 | PolarDB for Oracleクラスターの推奨仕様 | ||
| インスタンスタイプ | CPUとメモリ | インスタンスタイプ | CPUとメモリ |
| rds.ppas.t1.small | 1 コア 1 GB | polar.o.x4.medium | 2 コア 8 GB |
| ppas.x4.small.2 | 1 コア 4 GB | polar.o.x4.medium | 2 コア 8 GB |
| ppas.x4.medium.2 | 2 コア 8 GB | polar.o.x4.medium | 2 コア 8 GB |
| ppas.x8.medium.2 | 2 コア 16 GB | polar.o.x4.large | 4 コア 16 GB |
| ppas.x4.large.2 | 4 コア 16 GB | polar.o.x4.large | 4 コア 16 GB |
| ppas.x8.large.2 | 4コア 32 GB | polar.o.x4.xlarge | 8 コア 32 GB |
| ppas.x4.xlarge.2 | 8 コア 32 GB | polar.o.x4.xlarge | 8 コア 32 GB |
| ppas.x8.xlarge.2 | 8 コア 64 GB | polar.o.x8.xlarge | 8 コア 64 GB |
| ppas.x4.2xlarge.2 | 16 コア 64 GB | polar.o.x8.2xlarge | 16 コア 128 GB |
| ppas.x8.2xlarge.2 | 16 コア 128 GB | polar.o.x8.2xlarge | 16 コア 128 GB |
| ppas.x4.4xlarge.2 | 32 コア 128 GB | polar.o.x8.4xlarge | 32 コア 256 GB |
| ppas.x8.4xlarge.2 | 32 コア 256 GB | polar.o.x8.4xlarge | 32 コア 256 GB |
| rds.ppas.st.h43 | 60 コア 470 GB | polar.o.x8.8xlarge | 64コア、512 GBメモリ |
移行タイプ
| 移行タイプ | 説明 |
| スキーマの移行 | DTSは、必要なオブジェクトのスキーマをソースデータベースからターゲットPolarDBクラスターに移行します。 DTSは、テーブル、ビュー、シノニム、トリガー、ストアドプロシージャ、ストアド関数、パッケージ、ユーザー定義型のオブジェクトのスキーマ移行をサポートしています。 重要 DTSは、この移行タイプのトリガーをサポートしていません。 オブジェクトにトリガーが含まれている場合、ソースデータベースとターゲットデータベース間でデータの不一致が発生する可能性があります。 |
| フルデータ移行 | DTSは、必要なオブジェクトの履歴データをソースデータベースからターゲットPolarDBクラスターに移行します。 重要 スキーマ移行中およびフルデータ移行中は、移行するオブジェクトに対してDDL操作を実行しないでください。 そうしないと、オブジェクトの移行に失敗する可能性があります。 |
| 増分データ移行 | DTSは、ソースデータベースからredoログファイルを取得します。 次に、DTSは増分データをソースデータベースからターゲットPolarDBクラスターに移行します。 DTSは、INSERT、UPDATE、DELETEなどのDML操作を同期できます。 DTSはDDL操作を同期できません。 増分データ移行を使用すると、データ移行の実行時にサービスの継続性を確保できます。 |
課金ルール
移行タイプ | タスク設定料金 | インターネットトラフィック料金 |
スキーマ移行とフルデータ移行 | 無料です。 | インターネット経由でAlibaba Cloudからデータが移行された場合にのみ課金されます。 詳細については、「課金の概要」をご参照ください。 |
増分データ移行 | 有料。 詳細については、「課金の概要」をご参照ください。 |
データベースアカウントに必要な権限
ソースOracleデータベースにログインし、データ収集用のアカウントを作成し、そのアカウントに権限を付与します。
| データベース | スキーマ移行 | 完全なデータ移行 | 増分データ移行 |
| ApsaraDB RDS for PPASインスタンス | 読み取り権限 | 読み取り権限 | スーパーユーザーロールの権限 |
| PolarDB for Oracleクラスター | スキーマ所有者の権限 | スキーマ所有者の権限 | スキーマ所有者の権限 |
データベースアカウントを作成し、データベースアカウントに権限を付与するには、次の操作を実行します。
PolarDB for Oracleクラスターにデータベースアカウントを作成するには、「データベースアカウントの作成」の手順に従います。
手順
- にログインします。 DTSコンソール。 説明 Data Management (DMS) コンソールにリダイレクトされている場合は、右下隅にある

- 左側のナビゲーションウィンドウで、[データ移行] をクリックします。
- [移行タスク] ページの上部で、移行先クラスターが存在するリージョンを選択します。
- ページの右上隅にある [移行タスクの作成] をクリックします。
- ソースデータベースとターゲットデータベースを設定します。
- ページの右下隅にある [ホワイトリストと次への設定] をクリックします。 警告 DTSサーバーのCIDRブロックがデータベースまたはインスタンスのホワイトリスト、またはECSセキュリティグループルールに自動的または手動で追加されると、セキュリティリスクが発生する可能性があります。 したがって、DTSを使用してデータを移行する前に、潜在的なリスクを理解して認識し、次の対策を含む予防策を講じる必要があります。VPNゲートウェイ、またはSmart Access Gateway。
- 移行タイプと移行するオブジェクトを選択します。

設定 説明 移行タイプの選択 - フルデータ移行のみを実行するには、[スキーマ移行] と [フルデータ移行] を選択します。
- データ移行中のサービスの継続性を確保するには、[スキーマ移行] 、[フルデータ移行] 、および [増分データ移行] を選択します。
重要- 増分データ移行が選択されていない場合、完全データ移行中にソースデータベースにデータを書き込まないことを推奨します。 これにより、ソースデータベースとターゲットデータベース間のデータの整合性が確保されます。
- スキーマ移行中およびフルデータ移行中は、移行するオブジェクトに対してDDL操作を実行しないでください。 そうしないと、オブジェクトの移行に失敗する可能性があります。
移行するオブジェクトを選択します。 [ソースオブジェクト] セクションから1つ以上のオブジェクトを選択し、
アイコンをクリックして [選択済みオブジェクト] セクションにオブジェクトを追加します。 説明- 移行するオブジェクトとして、列、テーブル、またはデータベースを選択できます。
- 既定では、オブジェクトがターゲットデータベースに移行された後、オブジェクトの名前は変更されません。 オブジェクト名マッピング機能を使用して、移行先データベースに移行するオブジェクトの名前を変更できます。 詳細は、オブジェクト名のマッピングをご参照ください。
- オブジェクト名マッピング機能を使用してオブジェクトの名前を変更すると、そのオブジェクトに依存する他のオブジェクトの移行に失敗する可能性があります。
オブジェクトの名前を変更するかどうかを指定する オブジェクト名マッピング機能を使用して、移行先クラスターに移行するオブジェクトの名前を変更できます。 詳細は、オブジェクト名のマッピングをご参照ください。 自己管理型OracleデータベースまたはApsaraDB RDS for PPASインスタンスへの接続失敗のリトライ時間範囲を指定する デフォルトでは、DTSがソースデータベースとターゲットデータベースへの接続に失敗した場合、DTSは次の12時間以内に再試行します。 業務要件に基づいて再試行時間範囲を指定できます。 指定された時間範囲内にDTSがソースデータベースとターゲットデータベースに再接続された場合、DTSはデータ移行タスクを再開します。 それ以外の場合、データ移行タスクは失敗します。 説明 DTSがソースデータベースとターゲットデータベースへの再接続を試みる時間範囲内で、DTSインスタンスに対して課金されます。 業務要件に基づいて再試行時間範囲を指定することを推奨します。 ソースデータベースとターゲットデータベースがリリースされた後、できるだけ早くDTSインスタンスをリリースすることもできます。 - ページの右下隅にある [事前チェック] をクリックします。 説明
- データ移行タスクを開始する前に、DTSは事前チェックを実行します。 データ移行タスクは、タスクが事前チェックに合格した後にのみ開始できます。
- タスクが事前チェックに合格しなかった場合は、失敗した各項目の横にある
アイコンをクリックして詳細を表示できます。 - 原因に基づいて問題をトラブルシューティングし、事前チェックを再度実行できます。
- 問題をトラブルシューティングする必要がない場合は、失敗した項目を無視して、再度事前チェックを実行できます。
- タスクが事前チェックに合格したら、[次へ] をクリックします。
- [設定の確認] ダイアログボックスで、[チャネル仕様] パラメーターを指定し、[データ送信サービス (従量課金) サービス規約] を選択します。
- [購入と開始] をクリックして、データ移行タスクを開始します。
- スキーマ移行とフルデータ移行
フルデータ移行中は、手動でタスクを停止しないことをお勧めします。 そうしないと、ターゲットデータベースに移行されたデータが不完全になる可能性があります。 データ移行タスクが自動的に停止するまで待つことができます。
- スキーマ移行、完全データ移行、および増分データ移行
増分データ移行タスクは自動的に停止しません。 タスクを手動で停止する必要があります。
重要 データ移行タスクを手動で停止する適切な時期を選択することを推奨します。 たとえば、オフピーク時やワークロードを移行先クラスターに切り替える前にタスクを停止できます。- 増分データ移行と移行タスクが遅延しませんが移行タスクのプログレスバーに表示されるまで待ちます。 その後、ソースデータベースへのデータの書き込みを数分間停止します。 増分データ移行のレイテンシは、プログレスバーに表示され得る。
- 増分データ移行のステータスが [移行タスクは遅延なし] に変わるまで待ちます。 次に、移行タスクを手動で停止します。

- スキーマ移行とフルデータ移行