すべてのプロダクト
Search
ドキュメントセンター

PolarDB:PolarDB for PostgreSQL (Oracle 互換) クラスタ間でのデータ移行

最終更新日:Apr 10, 2025

Data Transmission Service (DTS) を使用して、PolarDB for PostgreSQL (Oracle 互換) クラスタ間でデータを移行できます。

概要

PolarDB for PostgreSQL (Oracle 互換) は、幅広いアプリケーションに対応し、強力なコミュニティサポートを提供するエンタープライズレベルのリレーショナルデータベース管理システムです。新しいリリースごとに、パフォーマンス、可用性、セキュリティを強化するための多くの新機能と改善が加えられています。PolarDB for PostgreSQL (Oracle 互換) 2.0 では、データベースのパフォーマンスとユーザーエクスペリエンスが大幅に向上しています。

PolarDB for PostgreSQL (Oracle 互換) 2.0 では、クエリ速度と同時処理能力を向上させるために、新しいクエリ最適化アルゴリズムとストレージエンジンが導入されています。大量のデータをより高速に処理し、データベースの応答性とパフォーマンスを向上させることができます。PolarDB for PostgreSQL (Oracle 互換) 2.0 では、多くの新機能と拡張機能を使用して、より優れたユーザーエクスペリエンスと開発ツールも提供しています。たとえば、JSON データ型のサポートが強化されたため、JSON データの処理とクエリが容易になります。豊富な監視および診断ツールは、データベースのパフォーマンスをより深く理解し、最適化するのに役立ちます。データベースのセキュリティと信頼性が強化されています。より厳格な RAM ポリシーと権限管理機能により、データが潜在的なセキュリティの脅威から保護されます。バックアップとリカバリの改善により、データの保護と復元が向上します。

PolarDB for PostgreSQL (Oracle 互換) 2.0 にアップグレードすると、PostgreSQL コミュニティからより多くのリソースとサポートを得ることができ、問題の解決やデータベースのベストプラクティスの学習に役立ちます。そのメリットを最大限に活用するために、PolarDB for PostgreSQL (Oracle 互換) 2.0 にアップグレードすることをお勧めします。

事前評価

PolarDB for PostgreSQL (Oracle 互換) 1.0 クラスタを購入済みの場合は、移行評価機能を使用して、クラスタを移行する前にクラスタの互換性を検証できます。これにより、移行の進行に影響を与える前提条件を事前に特定して処理し、処理とリソースのコストを削減できます。

サポートされているリージョン

移行評価機能は、以下のリージョンで使用できます。

中国 (杭州)、中国 (上海)、中国 (深セン)、中国 (北京)、中国 (張家口)、中国 (ウランチャブ)、中国 (成都)、中国 (香港)、日本 (東京)、シンガポール、インドネシア (ジャカルタ)、米国 (シリコンバレー)、米国 (バージニア)。

影響

移行評価はワークロードに影響を与えません。

移行評価タスクの作成

  1. PolarDB コンソール にログインします。

  2. コンソールの左上隅で、管理するクラスタがデプロイされているリージョンを選択します。

  3. 移行評価タスクを作成します。PolarDB では、評価タスクを作成するために以下の方法が提供されています。

    1. [クラスタ] ページから: 左上隅にある [移行/アップグレード評価] をクリックします。

      f741374229beacceee41de1406e3146b

    2. [移行/アップグレード] ページから: 左上隅にある [移行/アップグレード評価] をクリックします。

      bc27346fe35a0fce09344544b84d85d8

  4. [移行/アップグレード評価] ダイアログボックスで、パラメータを設定し、[次へ] をクリックします。

    パラメータ

    説明

    作成方法

    [PolarDB からのアップグレード] を選択します。

    ソース PolarDB バージョン

    [Oracle 1.0] を選択します。

    ソース PolarDB クラスタ

    ソースクラスタを選択します。

    宛先データベースエンジン

    [Oracle 2.0] を選択します。

    データベース名

    ソースデータベースを選択します。

  5. [移行/アップグレード評価] ダイアログボックスで、クラスタの互換性に関する概要と詳細を確認できます。

    1. 概要を確認します。

      3a515ca73a87b7c94447c2b31be9925d

    2. 詳細を確認します。

      dcda2a6170011b2215a7ccc37921cf6c

      説明

      互換性評価結果で互換性のないオブジェクトに焦点を当てることができます。

      • Oracle ネイティブオブジェクトは無視できます。

      • SQL 文に含まれる互換性のないオブジェクトを適合させる必要があります。ビジネス側で適合できない場合は、お問い合わせください。R&D エンジニアがお手伝いします。

移行評価タスクの管理

作成された評価タスクの詳細を表示するには、移行/評価 ページに移動します。

説明

評価タスクは 7 日間保持され、その後自動的に削除されます。評価タスクの期限が切れている場合は、新しく作成してください。

前提条件

  • ソースと宛先の PolarDB for PostgreSQL (Oracle 互換) クラスタが作成されていること。詳細については、「PolarDB for PostgreSQL (Oracle 互換) クラスタを作成する」をご参照ください。

  • ソースと宛先の PolarDB for PostgreSQL (Oracle 互換) クラスタの wal_level パラメータが logical に設定されていること。詳細については、「クラスタパラメータを設定する」をご参照ください。

  • 宛先データベースの使用可能なストレージ容量が、ソースデータベースのデータの合計サイズよりも大きいこと。

制限事項

説明
  • スキーマ同期中、DTS はソースデータベースから宛先データベースに外部キーを同期します。

  • 完全データ同期および増分データ同期中、DTS はセッションレベルで外部キーの制約チェックとカスケード操作を一時的に無効にします。データ同期中にソースデータベースでカスケード更新または削除が実行されると、データの不整合が発生する可能性があります。

項目

説明

ソースデータベース (PolarDB for PostgreSQL (Oracle 互換) 1.0) の制限

  • 帯域幅の要件: ソースデータベースが属するサーバーには、十分な送信帯域幅が必要です。そうでない場合、データ移行速度に影響します。

  • 移行するテーブルには、PRIMARY KEY または UNIQUE 制約があり、すべてのフィールドが一意である必要があります。そうでない場合、宛先データベースに重複するデータレコードが含まれる可能性があります。

  • 移行対象のオブジェクトとしてテーブルを選択し、宛先データベースでテーブルの名前変更や列の名前変更などのテーブルの変更が必要な場合は、1 つのデータ移行タスクで最大 1,000 個のテーブルを移行できます。1,000 個を超えるテーブルを移行するタスクを実行すると、リクエストエラーが発生します。この場合は、複数のタスクを設定してテーブルを移行するか、データベース全体を移行するタスクを設定することをお勧めします。

  • 増分データを移行する必要がある場合は、以下の要件が満たされていることを確認してください。

    • 先行書き込みログ (WAL) 機能が有効になっている必要があります。

    • 増分データ移行の場合、ソースデータベースの WAL ログは 24 時間以上保存する必要があります。完全データおよび増分データ移行の場合、ソースデータベースの WAL ログは少なくとも 7 日間保存する必要があります。そうでない場合、DTS は WAL ログを取得できず、タスクが失敗する可能性があります。例外的な状況では、データの不整合または損失が発生する可能性があります。完全データ移行が完了したら、保存期間を 24 時間以上に設定できます。上記の要件に基づいて WAL ログの保存期間を設定してください。そうでない場合、DTS のサービスレベル契約 (SLA) に記載されているサービスの信頼性とパフォーマンスが保証されない場合があります。

  • ソースデータベースで実行する操作の制限:

    • スキーマ移行および完全データ移行中は、DDL 文を実行してデータベースまたはテーブルのスキーマを変更しないでください。変更すると、データ移行タスクは失敗します。

    • 完全データ移行のみを実行する場合は、データ移行中にソースデータベースにデータを書き込まないでください。書き込むと、ソースデータベースと宛先データベース間でデータが不整合になります。データの整合性を確保するために、移行タイプとしてスキーマ移行、完全データ移行、および増分データ移行を選択することをお勧めします。

    • ソースの PolarDB for PostgreSQL (Oracle 互換) クラスタでプライマリ/セカンダリスイッチオーバーを実行する場合は、論理レプリケーションスロットフェールオーバー機能を有効にする必要があります。これにより、論理サブスクリプションが中断されるのを防ぎ、データ同期タスクが想定どおりに実行されるようにします。詳細については、「論理レプリケーションスロットフェールオーバー」をご参照ください。

  • ソースデータベースに長時間トランザクションがあり、インスタンスに増分移行タスクが含まれている場合、長時間トランザクションがコミットされる前のソースデータベースの WAL 値がクリアされず、累積される可能性があります。その結果、ソースデータベースのディスク容量が不足します。

その他の制限

  • 各移行タスクは、単一のソースデータベースからのデータの移行に限定されます。複数のデータベースからデータを移行するには、データベースごとにデータ移行タスクを作成する必要があります。

  • 増分データ移行中に、移行対象のオブジェクトとしてスキーマを選択し、スキーマにテーブルを作成するか、RENAME 文を実行してスキーマ内のテーブルの名前を変更する場合は、テーブルにデータを書き込む前に ALTER TABLE schema.table REPLICA IDENTITY FULL; 文を実行する必要があります。

    説明

    上記の文の schema 変数と table 変数を、スキーマ名とテーブル名に置き換えます。

  • 増分データ移行中に表示されるレイテンシの精度を確保するために、DTS はソースデータベースに dts_postgres_heartbeat という名前のテーブルを作成します。次の図は、テーブルの構造と内容を示しています。表结构

  • 増分データ移行中に、DTS はソースデータベースのレプリケーションスロットを作成します。レプリケーションスロットには、dts_sync_ というプレフィックスが付きます。DTS は、このレプリケーションスロットを使用して、過去 15 分以内のソースデータベースの増分ログを取得できます。

    説明
    • DTS インスタンスがリリースされると、レプリケーションスロットは自動的に削除されます。ソースデータベースのパスワードを変更したり、DTS の IP アドレスホワイトリストを削除したりすると、レプリケーションスロットは自動的に削除されません。その場合は、ソースデータベースからレプリケーションスロットを手動で削除して、レプリケーションスロットが積み重なるのを防ぎ、PolarDB for PostgreSQL (Oracle 互換) クラスタが使用できなくなるのを防ぐ必要があります。

    • データ移行タスクがリリースされた場合、または失敗した場合、DTS はレプリケーションスロットを自動的にクリアします。PolarDB for PostgreSQL (Oracle 互換) クラスタでプライマリ/セカンダリスイッチオーバーが実行された場合は、セカンダリインスタンスにログインしてレプリケーションスロットをクリアする必要があります。

  • データを移行する前に、データ移行がソースデータベースと宛先クラスタのパフォーマンスに与える影響を評価します。オフピーク時にデータを移行することをお勧めします。完全データ移行中、DTS はソースデータベースと宛先データベースの読み取りおよび書き込みリソースを使用します。これにより、データベースサーバーの負荷が増加する可能性があります。

  • 完全データ移行中、同時 INSERT 操作により、宛先データベースのテーブルで断片化が発生します。完全データ移行が完了すると、宛先データベースの使用済み表領域のサイズはソースデータベースのサイズよりも大きくなります。

  • FLOAT または DOUBLE データ型の列の精度設定がビジネス要件を満たしていることを確認します。DTS は、ROUND(COLUMN,PRECISION) 関数を使用して、FLOAT または DOUBLE データ型の列から値を取得します。精度を指定しない場合、DTS は FLOAT 型の列の精度を 38 桁に設定し、DOUBLE 型の列の精度を 308 桁に設定します。

  • DTS は、過去 7 日以内に失敗したデータ移行タスクの再開を試みます。ワークロードを宛先データベースに切り替える前に、失敗したタスクを停止またはリリースする必要があります。また、REVOKE 文を実行して、DTS が宛先データベースにアクセスするために使用するアカウントから書き込み権限を取り消すこともできます。そうしないと、タスクが再開された後、ソースデータベースのデータが宛先データベースのデータを上書きします。

  • DTS は、シーケンスなどのメタデータの有効性をチェックしません。メタデータの有効性は手動でチェックする必要があります。

  • ワークロードを宛先データベースに切り替えた後、新しく書き込まれたシーケンスは、ソースデータベースのシーケンスの最大値から増加しません。したがって、ワークロードを宛先データベースに切り替える前に、ソースデータベースのシーケンスの最大値をクエリする必要があります。次に、クエリされた最大値を宛先データベースのシーケンスの初期値として指定する必要があります。ソースデータベースのシーケンスの最大値をクエリするには、次の文を実行します。

    do language plpgsql $$
    DECLARE
     nsp name;
     rel name;
     val int8;
    BEGIN
     for nsp,rel in select nspname,relname from pg_class t2 , pg_namespace t3 where t2.relnamespace=t3.oid and t2.relkind='S' and relowner != 10
     loop
     execute format($_$select last_value from %I.%I$_$, nsp, rel) into val;
     raise notice '%',
     format($_$select setval('%I.%I'::regclass, %s);$_$, nsp, rel, val+1);
     end loop;
    END;
    $$;

課金ルール

同期タイプ

インスタンス構成料金

スキーマ同期と完全データ同期

無料。

増分データ同期

課金されます。詳細については、「課金概要」をご参照ください。

移行タイプ

移行タイプ

注記

スキーマ移行 1

DTS は、必要なオブジェクトのスキーマを宛先データベースに移行します。DTS は、テーブル、ビュー、シノニム、トリガー、ストアドプロシージャ、ストアドファンクション、パッケージ、ユーザー定義型などのオブジェクトのスキーマ移行をサポートしています。

説明

このシナリオでは、DTS はトリガーのスキーマ移行をサポートしていません。トリガーによってデータの不整合が発生するのを防ぐために、ソースデータベースのトリガーを削除することをお勧めします。詳細については、「トリガーを含むソースデータベースのデータ同期または移行タスクを設定する」をご参照ください。

完全データ移行

DTS は、オブジェクトの既存データをソースデータベースから宛先データベースに移行します。

説明

スキーマ移行と完全データ移行中は、移行対象のオブジェクトに対して DDL 操作を実行しないでください。実行すると、オブジェクトが移行されない可能性があります。

増分データ移行

DTS は、ソースデータベースから WAL ログファイルを取得します。次に、DTS はソースデータベースから宛先 PolarDB for PostgreSQL (Oracle 互換) クラスタに増分データを同期します。

増分データ移行により、PolarDB for PostgreSQL (Oracle 互換) クラスタ間でデータを移行する際のサービスの継続性を確保できます。

同期可能な SQL 文

タイプ

SQL 文

DML

INSERT、UPDATE、DELETE

DDL

重要

ソースデータベースのデータベースアカウントが特権アカウントの場合、データ同期タスクは次の DDL 操作をサポートします。

  • CREATE TABLE と DROP TABLE

  • ALTER TABLE (RENAME TABLE、ADD COLUMN、ADD COLUMN DEFAULT、ALTER COLUMN TYPE、DROP COLUMN、ADD CONSTRAINT、ADD CONSTRAINT CHECK、ALTER COLUMN DROP DEFAULT など)

  • TRUNCATE TABLE (ソース PolarDB for PostgreSQL (Oracle 互換) クラスタのデータベースエンジンバージョンは 1.0 以降である必要があります。)

  • CREATE INDEX ON TABLE

重要
  • CASCADE や RESTRICT などの DDL 文の追加情報は同期できません。

  • SET session_replication_role = replica 文を実行するセッションから DDL 文を同期することはできません。

  • ソースデータベースによって一度に送信される SQL 文に DML 文と DDL 文の両方が含まれている場合、DTS は DDL 文を同期しません。

  • ソースデータベースによって同時にコミットされる複数の SQL 文に、同期されていないオブジェクトの DDL 文が含まれている場合、DDL 文は同期されません。

データベースアカウントに必要な権限

データベース

必要な権限

ソース PolarDB for PostgreSQL (Oracle 互換) クラスタ

特権アカウントの権限。

宛先 PolarDB for PostgreSQL (Oracle 互換) クラスタ

データベース所有者の権限。

重要

データベースを作成するときにデータベース所有者を指定できます。データベースアカウントの作成と承認方法の詳細については、「データベースアカウントを作成する」をご参照ください。

データ同期タスクの設定

  1. 次のいずれかの方法を使用して、データ移行ページに移動し、データ移行インスタンスが存在するリージョンを選択します。

    DTS コンソール

    1. DTS コンソール にログインします。

    2. 左側のナビゲーションウィンドウで、データの移行 をクリックします。

    3. ページの左上隅で、データ移行インスタンスが存在するリージョンを選択します。

    DMS コンソール

    説明

    実際の操作は、DMS コンソールのモードとレイアウトによって異なる場合があります。詳細については、「シンプルモード」および「DMS コンソールのレイアウトとスタイルをカスタマイズする」をご参照ください。

    1. DMS コンソール にログインします。

    2. 上部のナビゲーションバーで、ポインタを [データ + AI] > [DTS (DTS)] > [データ移行] の上に移動します。

    3. [データ移行タスク] の右側にあるドロップダウンリストから、データ同期インスタンスが存在するリージョンを選択します。

  2. タスクの作成 をクリックし、ソースデータベースと宛先データベースを設定します。

    説明

    データベースタイプを PolarDB for PostgreSQL (Oracle 互換) に設定します。

    セクション

    パラメータ

    説明

    該当なし

    タスク名

    タスクの名前。DTS はタスクに自動的に名前を割り当てます。タスクを識別しやすい名前を指定することをお勧めします。一意のタスク名を指定する必要はありません。

    ソースデータベース (PolarDB for PostgreSQL (Oracle 互換) 1.0)

    既存の接続を選択

    使用するデータベースインスタンス。ビジネス要件に基づいて既存のインスタンスを選択するかどうかを選択できます。

    • 既存のインスタンスを選択すると、DTS はインスタンスのパラメータを自動的に入力します。

    • 既存のインスタンスを使用しない場合は、宛先データベースのパラメータを設定する必要があります。

    データベースタイプ

    [PolarDB for PostgreSQL (Oracle 互換)] を選択します。

    アクセス方法

    宛先データベースのアクセス方法。[Alibaba Cloud インスタンス] を選択します。

    インスタンスリージョン

    ソース PolarDB for PostgreSQL (Oracle 互換) クラスタがデプロイされているリージョン。

    Alibaba Cloud アカウント間でデータをレプリケートする

    Alibaba Cloud アカウント間でデータを同期するかどうかを指定します。この例では、[いいえ] が選択されています。

    インスタンス ID

    ソース PolarDB for PostgreSQL (Oracle 互換) クラスタの ID。

    データベース名

    ソース PolarDB for PostgreSQL (Oracle 互換) クラスタの名前。

    データベースアカウント

    ソース PolarDB for PostgreSQL (Oracle 互換) クラスタのデータベースアカウント。

    データベースパスワード

    データベースアカウントのパスワード。

    宛先データベース (PolarDB for PostgreSQL (Oracle 互換) 2.0)

    既存の接続を選択

    使用するデータベースインスタンス。ビジネス要件に基づいて既存のインスタンスを選択するかどうかを選択できます。

    • 既存のインスタンスを選択すると、DTS はインスタンスのパラメータを自動的に入力します。

    • 既存のインスタンスを使用しない場合は、宛先データベースのパラメータを設定する必要があります。

    データベースタイプ

    [PolarDB for PostgreSQL (Oracle 互換)] を選択します。

    アクセス方法

    宛先データベースのアクセス方法。[Alibaba Cloud インスタンス] を選択します。

    インスタンスリージョン

    宛先 PolarDB for PostgreSQL (Oracle 互換) クラスタがデプロイされているリージョン。

    インスタンス ID

    宛先 PolarDB for PostgreSQL (Oracle 互換) クラスタの ID。

    データベース名

    宛先 PolarDB for PostgreSQL (Oracle 互換) クラスタの名前。

    データベースアカウント

    宛先 PolarDB for PostgreSQL (Oracle 互換) クラスタの特権データベースアカウント。詳細については、「データベースアカウントを作成する」をご参照ください。

    データベースパスワード

    データベースアカウントのパスワード。

  3. ページの下部にある [接続テストと続行] をクリックします。

    DTS は、DTS サーバーの CIDR ブロックを宛先クラスタのホワイトリストに追加します。

    警告
    DTS サーバーの CIDR ブロックがデータベースまたはインスタンスの IP アドレスホワイトリスト、または ECS セキュリティグループルールに自動または手動で追加されると、セキュリティリスクが発生する可能性があります。したがって、DTS を使用してデータを移行する前に、潜在的なリスクを理解し、認識し、以下の対策を含むがこれらに限定されない予防措置を講じる必要があります。ユーザー名とパスワードのセキュリティを強化する、公開するポートを制限する、API 呼び出しを認証する、ホワイトリストまたは ECS セキュリティグループルールを定期的にチェックし、許可されていない CIDR ブロックを禁止する、または Express Connect、VPN Gateway、Smart Access Gateway を使用してデータベースを DTS に接続する。
  4. 移行するオブジェクトを選択し、詳細設定を行います。

    説明

    ソースデータベースのすべての名前空間が一覧表示されます。ビジネス要件に基づいて名前空間を選択します。

    パラメータ

    説明

    同期タイプ

    同期タイプ。デフォルトでは、[増分データ同期] が選択されています。[スキーマ同期][完全データ同期] も選択する必要があります。事前チェックが完了すると、DTS は選択したオブジェクトの既存データをソースインスタンスから宛先インスタンスに同期します。既存データは、後続の増分同期の基礎となります。

    説明

    すべての同期タイプを選択する必要があります。

    同期トポロジ

    • 一方向同期: ソースデータベースから宛先データベースへの一方向同期リンクのみが確立されます。これには、既存のデータ同期リンクと増分同期リンクが含まれます。

    • 双方向同期: ソースデータベースから宛先データベースへの双方向同期リンクが確立されます。増分データ同期はソースデータベースから宛先データベースに実行され、逆データ伝送は宛先データベースからソースデータベースに実行されます。

    説明

    逆データ伝送はデータ同期のみをサポートし、DDL 操作はサポートしていません。

    既存のターゲットテーブルの処理モード

    • [事前チェックとエラー報告]: 宛先データベースにソースデータベースのテーブルと同じ名前のテーブルが含まれているかどうかをチェックします。ソースデータベースと宛先データベースに同じテーブル名が含まれていない場合、事前チェックは合格です。それ以外の場合、事前チェック中にエラーが返され、データ同期タスクを開始できません。

      説明

      ソースデータベースと宛先データベースに同じテーブル名が含まれていて、宛先データベースのテーブルを削除または名前変更できない場合は、オブジェクト名マッピング機能を使用して、宛先データベースに同期されるテーブルの名前を変更できます。詳細については、「オブジェクト名をマッピングする」をご参照ください。

    • [エラーを無視して続行]: ソースデータベースと宛先データベースの同じテーブル名の事前チェックをスキップします。

      警告

      [エラーを無視して続行] を選択すると、データの不整合が発生し、ビジネスが潜在的なリスクにさらされる可能性があります。

      • ソースデータベースと宛先データベースのスキーマが同じで、データレコードのプライマリキー値が宛先データベースの既存のデータレコードと同じである場合:

        • 完全データ同期中、DTS はデータレコードを宛先データベースに同期しません。宛先データベースの既存のデータレコードは保持されます。

        • 増分データ同期中、DTS はデータレコードを宛先データベースに同期します。宛先データベースの既存のデータレコードは上書きされます。

      • ソースデータベースと宛先データベースのスキーマが異なる場合、データの初期化に失敗したり、一部の列のみが同期されたり、データ同期タスクが失敗したりする可能性があります。注意して操作してください。

    宛先インスタンスのオブジェクト名の大文字と小文字の区別

    宛先インスタンスのデータベース名、テーブル名、列名の大文字と小文字の区別。デフォルトでは、[DTS デフォルトポリシー] が選択されています。他のオプションを選択して、オブジェクト名の大文字と小文字の区別がソースデータベースまたは宛先データベースと一致するようにすることができます。詳細については、「宛先インスタンスのオブジェクト名の大文字と小文字の区別を指定する」をご参照ください。

    ソースオブジェクト

    [ソースオブジェクト] セクションから 1 つ以上のオブジェクトを選択し、向右 アイコンをクリックして、オブジェクトを [選択済みオブジェクト] セクションに追加します。

    説明

    同期するオブジェクトとして、列、テーブル、またはデータベースを選択できます。同期するオブジェクトとしてテーブルまたは列を選択した場合、DTS はビュー、トリガー、ストアドプロシージャなどの他のオブジェクトを宛先データベースに同期しません。

    選択済みオブジェクト

    • 宛先インスタンスに同期するオブジェクトの名前を変更するには、[選択済みオブジェクト] セクションでオブジェクトを右クリックします。詳細については、「オブジェクト名をマップする」をご参照ください。

    • 同期する複数のオブジェクトの名前を変更するには、[選択済みオブジェクト] セクションの右上隅にある [一括編集] をクリックします。詳細については、「データベーステーブルの列名マッピング」をご参照ください。

    説明
    • 特定のデータベースまたはテーブルで実行される SQL 操作を同期するには、[選択済みオブジェクト] セクションでオブジェクトを右クリックします。表示されるダイアログボックスで、同期する SQL 操作を選択します。詳細については、このトピックの「同期可能な SQL 操作」セクションをご参照ください。

    • データをフィルタリングするための WHERE 条件を指定するには、[選択済みオブジェクト] セクションでオブジェクトを右クリックします。表示されるダイアログボックスで、条件を指定します。詳細については、「SQL 条件を使用してデータをフィルタリングする」をご参照ください。

  5. [次へ: 詳細設定] をクリックして詳細設定を行います。

    パラメータ

    説明

    タスクスケジューリング専用のクラスタ

    DTS 専用クラスタは、リージョン内の同じ仕様の複数の Elastic Compute Service (ECS) インスタンスで構成されます。DTS 専用クラスタは、DTS データ移行、データ同期、変更追跡タスクの管理と設定に使用されます。DTS パブリッククラスタと比較して、DTS 専用クラスタは、専用リソース、優れた安定性、優れたパフォーマンス、コスト削減という特徴があります。詳細については、「DTS 専用クラスタとは」をご参照ください。

    失敗した接続の再試行時間範囲を指定する

    失敗した接続の再試行時間範囲。データ同期タスクの開始後にソースデータベースまたは宛先データベースへの接続に失敗した場合、DTS は時間範囲内で直ちに接続を再試行します。有効値: 10 ~ 1440。単位: 分。デフォルト値: 720。このパラメータは 30 より大きい値に設定することをお勧めします。指定した時間範囲内に DTS がソースデータベースと宛先データベースに再接続すると、DTS はデータ同期タスクを再開します。それ以外の場合、データ同期タスクは失敗します。

    説明
    • 同じソースデータベースまたは宛先データベースを持つ複数の DTS タスクに異なる再試行時間範囲を設定した場合、設定されている最短の再試行時間範囲が優先されます。

    • DTS が接続を再試行すると、DTS インスタンスの料金が発生します。ビジネス要件に基づいて再試行時間範囲を指定するか、ソースインスタンスと宛先インスタンスがリリースされた後、できるだけ早く DTS インスタンスをリリースすることをお勧めします。

    その他の問題の再試行時間

    その他の問題の再試行時間範囲。たとえば、データ同期タスクの開始後に DDL または DML 操作の実行に失敗した場合、DTS は時間範囲内で直ちに操作を再試行します。有効値: 1 ~ 1440。単位: 分。デフォルト値: 10。このパラメータは 10 より大きい値に設定することをお勧めします。指定した時間範囲内に失敗した操作が正常に実行されると、DTS はデータ同期タスクを再開します。それ以外の場合、データ同期タスクは失敗します。

    重要

    [その他の問題の再試行時間] パラメータの値は、[失敗した接続の再試行時間] パラメータの値よりも小さくする必要があります。

    完全データ移行のスロットリングを有効にする

    完全データ移行中、ソースデータベースでは同時読み取りが有効になり、宛先データベースでは同時書き込みが有効になります。この動作は、データベースに負荷をかける可能性があります。データベースに影響を与えたくない場合は、移行率を制限できます。

    増分データ移行のスロットリングを有効にする

    増分データ移行中、ソースデータベースでは同時読み取りが有効になり、宛先データベースでは同時書き込みが有効になります。一方のデータベースのビジネス負荷が高い場合、もう一方のデータベースで書き込み負荷が発生する可能性があります。データベースに影響を与えたくない場合は、移行率を制限できます。

    環境タグ

    環境タグは、DTS タスクの重要度を識別するのに役立ちます。タスクの通常の動作には影響しません。

    ETL の設定

    抽出、変換、書き出し (ETL) 機能を設定するかどうかを指定します。詳細については、「ETL とは」をご参照ください。有効値:

    監視とアラート

    データ同期タスクのアラートを設定するかどうかを指定します。タスクが失敗した場合、または同期レイテンシが指定したしきい値を超えた場合、アラート連絡先に通知が送信されます。

    • アラートを設定しない場合は、[いいえ] を選択します。

    • [はい] を選択した場合は、アラートしきい値とアラート連絡先も指定する必要があります。詳細については、「監視とアラートを設定する」をご参照ください。

  6. [次へ: データ検証] をクリックします。[データ検証] ページで、次のパラメータを設定します。

    パラメータ

    説明

    データ検証モード

    • 完全データ検証: すべてのデータを検証します。[完全データ検証] を選択した場合は、検証パラメータとオブジェクトを設定する必要があります。詳細については、「DTS でのデータ同期または移行タスクのデータ検証機能を設定する」をご参照ください。

    • 増分データ検証: 増分同期または移行されたデータを検証します。このオプションはデフォルトで選択されています。

    • スキーマ検証: 選択したオブジェクトのスキーマを検証します。

  7. ページの下部にある [次へ: タスク設定の保存と事前チェック] をクリックします。

    • DTS タスクを設定するための関連 API 操作のパラメータを表示するには、[次へ: タスク設定の保存と事前チェック] の上にポインタを移動し、[OpenAPI パラメータのプレビュー] をクリックします。

    • パラメータを表示する必要がない場合、または表示済みの場合は、ページの下部にある [次へ: タスク設定の保存と事前チェック] をクリックします。

      説明
      • データ同期タスクを開始する前に、DTS は事前チェックを実行します。タスクが事前チェックに合格した後にのみ、データ同期タスクを開始できます。

      • タスクが事前チェックに失敗した場合は、失敗した各項目の横にある [詳細の表示] をクリックします。チェック結果に基づいて原因を分析した後、問題をトラブルシューティングします。その後、事前チェックを再度実行します。

      • 事前チェック中に項目のアラートが生成された場合は、シナリオに基づいて次の操作を実行します。

        • アラート項目を無視できない場合は、失敗した項目の横にある [詳細の表示] をクリックして問題をトラブルシューティングします。その後、事前チェックを再度実行します。

        • アラート項目を無視できる場合は、[アラート詳細の確認] をクリックします。[詳細の表示] ダイアログボックスで、[無視] をクリックします。表示されるメッセージで、[OK] をクリックします。次に、[再チェック] をクリックして事前チェックを再度実行します。アラート項目を無視すると、データの不整合が発生し、ビジネスが潜在的なリスクにさらされる可能性があります。

  8. 成功率が 100% になるまで待ちます。次に、[次へ: インスタンスの購入] をクリックします。

  9. [インスタンスの購入] ページで、データ同期インスタンスの課金方法とインスタンスクラスのパラメータを設定します。次の表にパラメータを示します。

    セクション

    パラメータ

    説明

    新しいインスタンスクラス

    課金方法

    • サブスクリプション: インスタンスを作成するときにサブスクリプション料金を支払います。サブスクリプション課金方法は、長期使用の場合、従量課金方法よりも費用対効果が高くなります。

    • 従量課金: 従量課金インスタンスは 1 時間単位で課金されます。従量課金方法は、短期使用に適しています。従量課金インスタンスが不要になった場合は、インスタンスをリリースしてコストを削減できます。

    リソースグループ

    インスタンスが実行されるリソースグループ。デフォルト値: デフォルトリソースグループ。詳細については、「リソース管理とは」をご参照ください。

    インスタンスクラス

    DTS は、さまざまなパフォーマンスを提供するさまざまな同期仕様を提供します。同期速度は、選択した同期仕様によって異なります。ビジネスシナリオに基づいて同期仕様を選択できます。詳細については、「データ同期インスタンスの仕様」をご参照ください。

    期間

    サブスクリプション課金方法を選択した場合は、サブスクリプション期間と作成するインスタンス数を指定します。サブスクリプション期間は、1 ~ 9 か月、1 年、2 年、3 年、または 5 年にすることができます。

    説明

    このパラメータは、[サブスクリプション] 課金方法を選択した場合にのみ表示されます。

  10. [Data Transmission Service (従量課金) サービス条件] を読み、チェックボックスをオンにします。

  11. [購入して開始] をクリックしてデータ同期タスクを開始します。タスクリストでタスクの進行状況を確認できます。

データ同期タスクの実行

手順

  1. 事前チェック: データ移行または同期プロセスが開始される前の準備段階。必要なすべての条件が満たされているかどうかを確認するために使用されます。たとえば、ネットワーク接続、システム権限、データ形式と整合性がチェックされます。

  2. フロントフェーシングモジュール: データ処理プロセスでは、プレモジュールは通常、データを前処理します。このプロセスでは、後続のデータを処理するために必要なトリガーがいくつか作成されます。

  3. 増分データ収集: 最後の収集操作後に変更または追加されたデータのみが収集されます。効率を向上させ、変更されていないデータの収集を回避するのに役立ちます。

  4. スキーマ移行 1: スキーマの整合性を維持しながら、データをあるシステムから別のシステムに転送したり、データをある形式から別の形式に変換したりすることを伴います。これは通常、新しい環境のスキーマを作成するための予備的な移行手順です。スキーマ、シーケンス、関数、ストアドプロシージャ、ビュー、インデックスなど、ほとんどの移行要素はこの手順で作成されます。

  5. 完全データ移行: データベースまたはデータウェアハウスから別のシステムにすべてのデータを移行します。

  6. スキーマ移行 2: スキーマを微調整および最適化したり、初期移行で発生した問題を解決したりするために使用される 2 回目のスキーマ調整。この手順では、一部のテーブルに外部キーが作成されます。

  7. 増分書き込み: 完全データ移行が完了した後、新規および変更されたデータを識別し、宛先システムに移行する必要があります。この手順では、増分データ書き込みを実装します。

  8. バックフェーシングモジュール: データ移行または同期が完了した後、ポストモジュールは一連のラップアップタスクを実行します。データのクリア、インデックスの作成、パフォーマンスの最適化などが含まれる場合があります。

  9. 完全データ検証: データ移行後、データの整合性と精度を確保するために検証が必要です。完全データ検証では、移行されたすべてのデータをチェックして、データが新しいシステムに正しくコピーされたかどうかを確認します。

  10. 増分データ検証: 完全データ検証に似ています。増分データ検証は増分データに焦点を当てています。最後の検証以降に行われたデータ変更がすべて正確にキャプチャされ、移行されたことを確認します。

新しい DTS コンソールのデータ同期ページ にログインして、移行の詳細を表示できます。

  1. 事前チェック

    image.png

    説明

    この手順は自動的に実行されます。

  2. フロントフェーシングモジュール

    image.png

    説明

    この手順は自動的に実行されます。

  3. 増分データ収集

    image.png

    説明

    この手順は自動的に実行されます。

  4. スキーマ移行

    ほとんどのテーブル、インデックス、シーケンスは自動的に移行されます。テーブルが移行されます。

    説明

    スキーマ移行中にタスクが失敗した場合は、スキーマ改訂機能を使用して、移行で使用される SQL 文を手動で修正できます。

    image.png

  5. 完全データ移行

    指定した範囲内のすべてのテーブルのデータが移行されます。[データ同期] ページでデータトラフィックと伝送速度を表示できます。

    image.png

  6. スキーマ移行 2

    この手順では、テーブルの外部キー制約の移行に焦点を当てています。外部キーを追加することは、データが移行された後、テーブル間のデータの整合性を確保するために重要です。

    image.png

  7. 増分書き込み

    ソースデータベースからの一方向データ同期が実行されます。ソースデータベースのすべてのデータがサブスクライブされて転送され、宛先データベースで処理および適用されます。

    image.png

  8. バックフェーシングモジュール

    image.png

  9. 完全データ検証

    この手順では、ソースデータベースと宛先データベースのデータを比較します。この例では、ソースデータベースの t1 テーブルと宛先データベースの t1 テーブルの 835,266 行が比較されます。データは一致しているため、検証は成功です。

    image.png

  10. 増分データ検証

    上記すべてのタスクが完了すると、システムは自動的に増分同期と増分データ検証の手順を開始します。増分データ検証手順では、システムは 2 つのデータベース間の増分データの差分を比較します。

    image.png

カットオーバーとリリース

移行が完了したら、宛先データベースをテスト環境に追加し、包括的な方法でテストすることをお勧めします。ソースデータベースのデータは宛先データベースに完全に同期する必要があります (データ再生中にわずかなレイテンシが発生するのは正常です)。テスト期間は、ビジネス要件によって異なる場合があります。カットオーバーとリリースを開始する前に、宛先データベースが正常に動作していることを確認するために、少なくとも 1 週間テストを実行することをお勧めします。

10 時間などのカットオーバー時間枠を計画する必要があります。この期間中、ソースデータベースは使用できません。宛先データベースでデータ再生が完了したら、ビジネスのデータベース接続文字列を更新し、業務システムを再起動できます。次に、必要な基本的なビジネステストを開始できます。テストで問題が見つからない場合は、宛先データベースをサービスに投入できます。

宛先データベースが完全に安定していることを確認するまで、一定期間ソースデータベースを保持してから、ソースデータベースを破棄することをお勧めします。

参考資料

PolarDB for PostgreSQL (Oracle 互換) 2.0 が商用利用可能