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

Data Transmission Service:PostgreSQL データベース間の双方向同期

最終更新日:Jul 10, 2026

DTS は、ApsaraDB RDS for PostgreSQL や自主管理 PostgreSQL データベースなど、2 つの PostgreSQL データベース間でリアルタイムの双方向データ同期をサポートします。この機能は、アクティブ地理的冗長性(セルベースアーキテクチャ)やジオディザスタリカバリなどのユースケースに対応しています。本トピックでは、ApsaraDB RDS for PostgreSQL インスタンス間の双方向同期を例に、設定手順を説明します。他のデータソースの設定プロセスも同様です。

前提条件

  • ソースおよびターゲットの ApsaraDB RDS for PostgreSQL インスタンスが作成済みである必要があります。手順については、「ApsaraDB RDS for PostgreSQL インスタンスの作成」をご参照ください。

    説明

    ソースおよびターゲットデータベースでサポートされているバージョンについては、「同期ソリューションの概要」をご参照ください。

  • ソースおよびターゲットの ApsaraDB RDS for PostgreSQL インスタンスについて、wal_level パラメーターを logical に設定する必要があります。手順については、「インスタンスパラメーターの設定」をご参照ください。

制限事項

タイプ

説明

ソースおよびターゲットデータベースの制限

  • 同期対象のテーブルにプライマリキーまたは一意制約がない場合、タスク設定時に Exactly-Once 書き込み機能を有効にする必要があります。有効にしないと、ターゲットデータベースに重複データが発生する可能性があります。詳細については、「プライマリキーまたは一意制約のないテーブルの同期」をご参照ください。

  • 同期対象のデータベース名にはハイフン (-) を含めることはできません(例:dts-testdata)。

  • テーブルレベルでデータを同期し、テーブル名やカラム名のマッピングなどオブジェクトの編集が必要な場合、1 つのタスクで最大 5,000 テーブルまでサポートされます。それ以上のテーブルを同期する場合は、複数のタスクに分割するか、データベース全体を同期するタスクを設定してください。そうしないと、タスク送信後にリクエストエラーが発生する可能性があります。

  • DTS は、ソースデータベースから一時テーブル、内部システムトリガー、一部の関数(C 言語関数および PROCEDURE や FUNCTION の内部関数)の同期をサポートしていません。一方で、一部のカスタムデータ型(COMPOSITE、ENUM、RANGE)および以下の制約(プライマリキー、外部キー、一意、CHECK)の同期はサポートしています。

  • 先行書き込みログ (WAL):

    • WAL 機能を有効にする必要があります。wal_level パラメーターを logical に設定してください。

    • 増分同期タスクの場合、DTS はソースデータベースの WAL ログが 24 時間以上保持されることを要求します。完全同期と増分同期を含むタスクの場合、WAL ログは少なくとも 7 日間保持される必要があります。完全同期完了後は、ログ保持期間を 24 時間以上に変更できます。必要な保持期間より短い場合、DTS タスクは WAL ログを取得できず失敗する可能性があります。最悪の場合、データの不整合やデータ損失が発生する可能性があります。必要な保持期間よりも短いログ保持期間によって発生した問題は、DTS サービスレベルアグリーメント (SLA) の適用外となります。

  • ソースデータベースの操作に関する制限

    • 同期タスクが正常に実行され、フェールオーバーによる論理サブスクリプションの中断を防ぐため、ApsaraDB RDS for PostgreSQL インスタンスで論理レプリケーションスロットフェールオーバーを有効にする必要があります。詳細については、「論理レプリケーションスロットフェールオーバー」をご参照ください。

    • ソースデータベースの論理レプリケーションの制限により、増分変更後の同期対象データが 1 件あたり 256 MB を超える場合、同期インスタンスが失敗し、復旧できません。その場合は、同期インスタンスを再設定する必要があります。

    • スキーマ同期または完全同期中に、データベースまたはテーブルスキーマを変更する DDL 操作を実行しないでください。実行すると、同期タスクが失敗します。

      説明

      完全同期中、DTS はソースデータベースに対してクエリを実行します。これによりメタデータロックが発生し、ソースデータベースでの DDL 操作がブロックされる可能性があります。

  • ソースインスタンスに長時間トランザクションがあり、タスクに増分同期が含まれる場合、長時間トランザクションがコミットされる前に発生した先行書き込みログ (WAL) はクリアされません。これにより、WAL ログが蓄積し、ソースインスタンスのディスク領域を消費し尽くす可能性があります。

  • 同期インスタンスの実行中にソースデータベースでメジャーバージョンアップグレードを実行すると、インスタンスが失敗し、復旧できません。その場合は、同期インスタンスを再設定する必要があります。

その他の制限

  • 1 つのデータ同期タスクで同期できるのは 1 つのデータベースのみです。複数のデータベースを同期する場合は、各データベースごとに個別のタスクを設定する必要があります。

  • DTS は、TimescaleDB 拡張テーブル、スキーマをまたいだ継承を持つテーブル、式に基づく一意なインデックスを持つテーブルの同期をサポートしていません。

  • 拡張機能のインストールによって作成されたスキーマはサポートされていません。タスク設定時にコンソールでこれらのスキーマの情報を確認することはできません。

  • 同期対象のテーブルに SERIAL 型のフィールドが含まれる場合、ソースデータベースはそのフィールドに対して自動的にシーケンスを作成します。そのため、ソースオブジェクト を設定する際に、同期タイプスキーマ同期 を選択する場合は、シーケンス を選択するか、スキーマ全体を同期することを推奨します。そうしないと、同期インスタンスが正常に実行されない可能性があります。

  • 以下の 3 つのシナリオでは、データ書き込み前にソースデータベースの同期対象テーブルに対して ALTER TABLE schema.table REPLICA IDENTITY FULL; コマンドを実行する必要があります。これによりデータ整合性が確保されます。このコマンド実行中にテーブルをロックしないでください。デッドロックを引き起こす可能性があります。関連する事前チェック項目をスキップした場合、DTS はインスタンス初期化中に自動的にこのコマンドを実行します。

    • インスタンスを初めて実行するとき。

    • オブジェクト選択の粒度としてスキーマを選択し、スキーマ内に新しいテーブルが作成された場合、または同期対象のテーブルが RENAME コマンドを使用して再構築された場合。

    • 同期オブジェクトを変更する機能を使用する場合。

    説明
    • コマンド内の schema および table は、実際のスキーマ名およびテーブル名に置き換えてください。

    • この操作はオフピーク時間帯に実行することを推奨します。

  • 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'
      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;
    $$;
    説明

    コマンド実行後に返される SQL 文には、ソースデータベースのすべてのシーケンスが含まれます。必要に応じて、これらの SQL 文を宛先データベースで実行してください。

  • DTS は、増分データの DDL ステートメント、増分テーブルの構造、ハートビート情報を取得するために、ソースデータベースに以下の一時テーブルを作成します。同期中にこれらの一時テーブルを削除しないでください。削除すると、DTS タスクが異常になります。これらの一時テーブルは、DTS インスタンスがリリースされた後に自動的に削除されます。

    public.dts_pg_classpublic.dts_pg_attributepublic.dts_pg_typepublic.dts_pg_enumpublic.dts_postgres_heartbeatpublic.dts_ddl_commandpublic.dts_args_session、および public.aliyun_dts_instance

  • 表示される同期遅延の精度を確保するため、DTS はソースデータベースに dts_postgres_heartbeat という名前のハートビートテーブルを追加します。

  • データ同期中、DTS はソースデータベースに dts_sync_ プレフィックスを持つレプリケーションスロットを作成し、データをレプリケートします。このレプリケーションスロットにより、DTS は過去 15 分間の増分ログをソースデータベースから取得できます。データ同期が失敗した場合や同期インスタンスがリリースされた場合、DTS は自動的にレプリケーションスロットをクリアしようと試みます。

    説明
    • データ同期中にタスクで使用しているソースデータベースアカウントのパスワードを変更したり、ソースデータベースのホワイトリストから DTS の IP アドレスを削除したりすると、レプリケーションスロットは自動的にクリアされません。この場合、ソースデータベースで手動でレプリケーションスロットをクリアする必要があります。これにより、スロットが継続的に蓄積してディスク領域を消費し、ソースデータベースが使用不能になることを防げます。

    • ソースデータベースでフェールオーバーが発生した場合、セカンダリデータベースにログインしてスロットを手動でクリアする必要があります。

    Amazon slot查询信息

  • データ同期前に、ソースおよびターゲットデータベースのパフォーマンスを評価してください。オフピーク時間帯にデータ同期を行うことを推奨します。そうしないと、初期完全データ同期がソースおよびターゲットデータベースの読み取り・書き込みリソースを消費し、データベース負荷が増加する可能性があります。

  • 初期完全データ同期は同時 INSERT 操作を実行します。これにより、宛先データベースでテーブルの断片化が発生し、初期完全データ同期完了後、宛先インスタンスの表領域がソースインスタンスよりも大きくなります。

  • テーブルレベルのデータ同期で、DTS 以外のデータが宛先データベースに書き込まれない場合、Data Management (DMS) を使用してオンライン DDL 操作を実行できます。詳細については、「テーブルをロックせずにスキーマ変更を実行」をご参照ください。

  • DTS 同期中は、他のソースから宛先データベースにデータを書き込まないでください。これにより、ソースおよび宛先データベース間でデータの不整合が発生する可能性があります。たとえば、他のソースからのデータが宛先データベースに書き込まれている間に DMS を使用してオンライン DDL 操作を実行すると、宛先データベースでデータ損失が発生する可能性があります。

  • 完全同期または増分同期タスクで、ソースデータベースの同期対象テーブルに外部キー、トリガー、イベントトリガーが含まれる場合、宛先データベースアカウントが特権アカウントまたはスーパーユーザ権限を持っていると、DTS はセッションレベルで `session_replication_role` パラメーターを一時的に `replica` に設定します。宛先データベースアカウントにこれらの権限がない場合は、宛先データベースで手動で `session_replication_role` パラメーターを `replica` に設定する必要があります。この期間中(`session_replication_role` が `replica` の間)、ソースデータベースでカスケード更新または削除操作が発生すると、データの不整合が発生する可能性があります。DTS タスクがリリースされた後は、`session_replication_role` パラメーターを `origin` に戻すことができます。

  • 双方向同期タスクには、フォワード同期タスクとリバース同期タスクが含まれます。タスクを設定またはリセットする際、一方のタスクの宛先オブジェクトがもう一方のタスクの同期オブジェクトと一致する場合:

    • 完全同期および増分同期を実行できるのは 1 つのタスクのみです。もう一方のタスクは増分同期のみをサポートします。

    • 現在のタスクのソースからのデータは、現在のタスクの宛先にのみ同期されます。もう一方のタスクのソースデータとしては使用されません。

  • タスクが失敗した場合、DTS サポートスタッフは 8 時間以内に復旧を試みます。復旧中、タスクを再起動したり、パラメーターを調整したりする可能性があります。

    説明

    データベースパラメーターではなく、DTS タスクパラメーターのみが変更されます。 調整される可能性のあるパラメーターは、「インスタンスパラメーターの変更」に記載されています。

  • パーティションテーブルを同期する場合、親テーブルとその子パーティションの両方を同期オブジェクトに含める必要があります。そうしないと、パーティションテーブルでデータの不整合が発生する可能性があります。

    説明

    PostgreSQL パーティションテーブルの親テーブルは直接データを格納しません。すべてのデータは子パーティションに格納されます。同期タスクには親テーブルとすべての子パーティションを含める必要があります。そうしないと、子パーティションのデータが同期されず、ソースと宛先の間でデータの不整合が発生する可能性があります。

特殊なケース

  • ソースインスタンスが ApsaraDB RDS for PostgreSQL インスタンスの場合

    同期中は、ApsaraDB RDS for PostgreSQL インスタンスのエンドポイントまたはゾーンを変更しないでください。変更すると、同期が失敗します。

  • ソースインスタンスが自主管理 PostgreSQL データベースの場合

    `max_wal_senders` および `max_replication_slots` パラメーターの値が、現在使用中のレプリケーションスロット数と、この自主管理 PostgreSQL データベースをソースとして作成する DTS インスタンス数の合計よりも大きいことを確認してください。

  • ソースインスタンスが Google Cloud Platform Cloud SQL for PostgreSQL の場合、ソースデータベースの データベースアカウント に `cloudsqlsuperuser` 権限を持つアカウントを指定する必要があります。同期オブジェクトを選択する際は、このアカウントが管理権限を持つオブジェクトを選択するか、同期対象のオブジェクトに対してこのアカウントに所有者権限を付与してください(例:同期対象のオブジェクトの所有者として関連操作を実行できるようにするため、GRANT <同期対象オブジェクトの所有者> TO <タスクのソースデータベースアカウント> コマンドを実行)。

    説明

    `cloudsqlsuperuser` 権限を持つアカウントは、別の `cloudsqlsuperuser` 権限を持つアカウントが所有するデータを管理できません。

課金

同期タイプ

料金

スキーマ同期および完全データ同期

無料です。

増分データ同期

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

双方向同期トポロジ

DTS は、2 つの PostgreSQL データベース間の双方向データ同期のみをサポートします。

サポートされる競合検出

データ整合性を確保するため、双方向同期のデータベースインスタンスのいずれか一方でのみ、同じプライマリキー、ビジネスプライマリキー、または一意キーを持つデータレコードを更新するようにしてください。両方のデータベースインスタンスでデータレコードが更新された場合、DTS システムはタスクで設定された競合解決ポリシーを適用します。

DTS は競合をチェックおよび修正し、双方向同期タスクの安定性を最大化します。DTS は以下のタイプの競合を検出できます:

  • INSERT 操作による一意性競合

    双方向同期において、同じプライマリキーを持つレコードが両方のデータベースインスタンスに同時に(またはほぼ同時に)挿入されると、一意制約競合が発生します。INSERT ステートメントがピアインスタンスに同期されると、同じプライマリキー値を持つレコードがすでに存在するため失敗します。

  • UPDATE 操作における不一致レコード

    • 更新対象のレコードが宛先インスタンスに存在しない場合、DTS は UPDATE 操作を INSERT 操作に変換します。ただし、一意性競合が発生する可能性があります。

    • UPDATE 操作で更新されるレコードがプライマリキーまたは一意キー競合を引き起こす場合。

  • 削除対象の存在しないレコード

    削除対象のレコードが宛先インスタンスに存在しない場合、DTS は指定された競合解決ポリシーに関係なく DELETE 操作を無視します。

重要
  • 時差および遅延により、DTS は競合を 100% 防止できるとは限りません。整合性を確保するため、同じプライマリキーまたは一意キーを持つレコードは、一度に 1 つのデータベースインスタンスでのみ更新してください。

  • DTS は上記のデータ競合に対してさまざまな競合解決戦略を提供しており、双方向データ同期の設定時に選択できます。

サポートされるオブジェクト

  • スキーマおよびテーブル

    説明

    これには、プライマリキー、一意キー、外部キー、DATATYPE(組み込みデータ型)、およびデフォルト制約が含まれます。

  • ビュー、プロシージャ(PostgreSQL 11 以降)、関数、ルール、シーケンス、拡張、トリガー、集約、インデックス、演算子、およびドメイン

サポートされる SQL 操作

操作タイプ

SQL ステートメント

DML

INSERTUPDATE、および DELETE

DDL

  • DDL 操作は、以降に作成されたデータ同期タスクでのみサポートされます。

    重要
    • 2023 年 5 月 12 日(シンガポール時間)以前に作成されたデータ同期タスクの場合は、タスク設定前にソースデータベースにトリガーと関数を作成して DDL 情報をキャプチャする必要があります。詳細については、「トリガーと関数を使用した PostgreSQL の増分 DDL 移行の実装」をご参照ください。

    • 増分データ同期中に bit データ型はサポートされていません。

  • ソースデータベースアカウントが特権アカウントであり、ApsaraDB RDS for PostgreSQL インスタンスのマイナーエンジンバージョンが 20210228 以降の場合、以下の DDL ステートメントを同期できます。マイナーエンジンバージョンの更新方法については、「マイナーエンジンバージョンの更新」をご参照ください。

    • CREATE TABLE および DROP TABLE

    • ALTER TABLERENAME TABLEADD COLUMNADD COLUMN DEFAULTALTER COLUMN TYPEDROP COLUMNADD CONSTRAINTADD CONSTRAINT CHECK、および ALTER COLUMN DROP DEFAULT を含む)

    • TRUNCATE TABLE(ソース PostgreSQL 11 以降)

    • CREATE INDEX ON TABLE

    重要
    • DDL ステートメント内の追加句(CASCADE または RESTRICT など)は同期されません。

    • SET session_replication_role = replica コマンドを使用するセッション内の DDL ステートメントは同期されません。

    • FUNCTION を呼び出して実行される DDL ステートメントは同期されません。

    • ソースデータベースの単一トランザクションに DML ステートメントと DDL ステートメントの両方が含まれる場合、DDL ステートメントは同期されません。

    • ソースデータベースの単一トランザクションに、同期対象外のオブジェクトに対する DDL ステートメントが含まれる場合、これらのステートメントは同期されません。

    • サーバープログラミングインターフェース (SPI) を使用してプラグイン内で直接実行される DDL ステートメントはサポートされていません。

重要

DDL 同期をサポートするのはフォワードタスク(ソースデータベースから宛先データベースへの同期)のみです。リバースタスク(宛先データベースからソースデータベースへの同期)は DDL 同期をサポートしておらず、DDL 操作を自動的にフィルターで除外します。

操作手順

  1. 双方向データ同期インスタンスを購入します。詳細については、「データ同期タスクの購入」をご参照ください。

    重要

    購入ページで、PostgreSQL および PostgreSQLPostgreSQL を選択し、双方向同期双方向同期 を選択してください。

  2. ログインして、新しい DTS 同期タスクページ

    説明

    Data Management (DMS) にログインすることもできます。上部のメニューバーで Data + AI を選択し、左側のナビゲーションウィンドウで Data Transmission (DTS) > データ同期 を選択してください。

  3. ページの左上隅で、宛先インスタンスが配置されているリージョンを選択します。

  4. 購入したデータ同期インスタンスを見つけ、その最初の同期タスクに対して タスクの設定 をクリックします。

  5. ソースおよびターゲットデータベースを設定します。

    警告

    ソースおよびターゲットインスタンスを選択した後、ページ上部に表示される制限事項をよくお読みください。制限事項に従わないと、タスクが失敗したり、データの不整合が発生したりする可能性があります。

    カテゴリ

    パラメーター

    説明

    該当なし

    タスク名

    DTS が自動的にタスク名を生成します。識別しやすいように、わかりやすい名前を指定することを推奨します。名前は一意である必要はありません。

    移行元データベース

    データベースタイプ

    PostgreSQL を選択します。

    アクセス方法

    Alibaba Cloud インスタンス を選択します。

    インスタンスリージョン

    購入時に選択したソースインスタンスのリージョンです。このパラメーターは変更できません。

    インスタンス 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 接続暗号化」をご参照ください。

    移行先データベース

    データベースタイプ

    PostgreSQL を選択します。

    アクセス方法

    Alibaba Cloud インスタンス を選択します。

    インスタンスリージョン

    購入時に選択した宛先インスタンスのリージョンです。このパラメーターは変更できません。

    インスタンス 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 接続暗号化」をご参照ください。

  6. 設定が完了したら、ページ下部の 接続をテストして続行 をクリックします。

    説明
    • DTS サーバーからのアクセスを許可するために、ソースおよびターゲットデータベースのセキュリティ設定に DTS サーバーの IP アドレス CIDR ブロックが追加されていることを確認してください。これは自動的または手動で行えます。詳細については、「DTS サーバーの IP アドレス CIDR ブロックをホワイトリストに追加」をご参照ください。

    • ソースまたはターゲットデータベースが自己管理データベース(アクセス方法Alibaba Cloud インスタンス ではない)の場合、DTS サーバーの CIDR ブロック ダイアログボックスで 接続テスト をクリックする必要もあります。

  7. タスクオブジェクトを設定します。

    1. オブジェクト設定 ページで、同期するオブジェクトを設定します。

      パラメーター

      説明

      同期タイプ

      増分データ同期 が選択されています。デフォルトでは、スキーマ同期 および 完全データ同期 も選択する必要があります。事前チェック完了後、DTS は選択したオブジェクトの完全データ同期をソースインスタンスから宛先クラスターに実行します。これは、その後の増分データ同期のベースラインデータとなります。

      説明

      スキーマ同期 を選択すると、DTS は外部キーを含む同期対象テーブルのスキーマをソースデータベースから宛先データベースに同期します。

      競合するテーブルの処理モード

      • エラーの事前チェックと報告:宛先データベースに同じ名前のテーブルが存在するかどうかをチェックします。同じ名前のテーブルが存在しない場合、事前チェックは合格します。同じ名前のテーブルが存在する場合、事前チェックは失敗し、データ同期タスクは開始されません。

        説明

        宛先データベースで同じ名前のテーブルを削除または名前変更できない場合は、別のテーブル名にマッピングできます。詳細については、「テーブル名およびカラム名のマッピング」をご参照ください。

      • エラーを無視して続行:宛先データベースでの重複テーブル名のチェックをスキップします。

        警告

        エラーを無視して続行 を選択すると、データの不整合が発生し、ビジネスにリスクが及ぶ可能性があります。例:

        • テーブルスキーマが同じで、宛先データベースのレコードがソースデータベースのレコードと同じプライマリキーまたは一意キー値を持つ場合:

          • 完全同期中、DTS は宛先クラスターのレコードを保持します。ソースデータベースの対応するレコードは同期されません。

          • 増分同期中、ソースデータベースのレコードが宛先データベースのレコードを上書きします。

        • テーブルスキーマが異なる場合、初期データ同期が失敗する可能性があります。これにより、一部のカラムデータのみが同期されるか、完全に同期が失敗する可能性があります。慎重に進めてください。

      同期トポロジ

      双方向同期 を選択します。

      DDL 操作を除外

      • :DDL 操作は同期されません。

      • いいえ:DDL 操作は同期されます。

      重要

      双方向同期リンクの安定性を確保するため、フォワード同期タスク(ソースデータベースから宛先データベースへの同期)でのみ DDL 操作の同期を選択できます。リバース同期タスク(宛先データベースからソースデータベースへの同期)では、DDL 操作は自動的にフィルターで除外されます。

      競合解決ポリシー

      前述の 競合タイプ が発生した場合、ビジネス要件に基づいて競合解決ポリシーを選択します。

      • Taskfailed (競合が発生した場合、エラーが報告されタスクは終了します。)

        同期中にデータ競合が発生すると、タスクはエラーを報告して停止します。タスクは失敗状態になり、手動での介入が必要です。

      • Ignore (競合が発生した場合、移行先インスタンスの競合レコードが使用されます。)

        同期中にデータ競合が発生すると、現在の同期ステートメントはスキップされ、プロセスは継続します。宛先データベースの競合レコードが保持されます。

      • Overwrite (競合が発生した場合、移行先インスタンスの競合レコードは上書きされます。)

        同期中にデータ競合が発生すると、宛先データベースの競合レコードが上書きされます。

      説明

      同期タスクが一時停止または再起動された後に遅延が発生した場合、これらのポリシーは遅延期間中は適用されません。宛先データベースのデータはデフォルトで上書きされます。

      移行先インスタンスでのオブジェクト名の大文字化

      宛先インスタンスに同期されるデータベース、テーブル、カラムオブジェクト名の大文字小文字の扱いポリシーを設定できます。デフォルトでは、DTS のデフォルトポリシー が選択されています。ソースおよび宛先データベースのデフォルトポリシーを使用することもできます。詳細については、「宛先オブジェクト名の大文字小文字の扱いポリシー」をご参照ください。

      ソースオブジェクト

      ソースオブジェクト ボックスで、同期するオブジェクトをクリックし、向右 をクリックして 選択中のオブジェクト ボックスに移動させます。

      説明
      • スキーマレベルまたはテーブルレベルで同期するオブジェクトを選択できます。テーブルを同期オブジェクトとして選択した場合、ビュー、トリガー、ストアドプロシージャなどの他のオブジェクトはターゲットデータベースに同期されません。

      • 同期対象のテーブルに SERIAL 型のフィールドが含まれ、同期タイプスキーマ同期 を選択する場合、シーケンス またはスキーマ全体を同期することを推奨します。

      選択中のオブジェクト

      説明
      • 特定のスキーマまたはテーブルに対して同期する SQL 操作を選択するには、選択中のオブジェクト ボックスでオブジェクトを右クリックします。表示されるダイアログボックスで、必要な SQL 操作を選択します。

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

      • オブジェクト名マッピング機能を使用してオブジェクトの名前を変更した場合、名前変更されたオブジェクトに依存する他のオブジェクトの同期が失敗する可能性があります。

    2. 詳細設定へ をクリックして、詳細パラメーターを設定します。

      パラメーター

      説明

      タスクのスケジュールに使用する専用クラスターの選択

      デフォルトでは、DTS は共有クラスター上でタスクをスケジューリングするため、クラスターを選択する必要はありません。より安定したパフォーマンスを求める場合は、DTS 同期タスクを実行するための専用クラスターを購入できます。詳細については、「DTS 専用クラスターとは」をご参照ください。

      失敗した接続の再試行時間

      同期タスク開始後、ソースまたはターゲットデータベースへの接続が失敗した場合、DTS はエラーを報告し、直ちに接続の再試行を開始します。デフォルトの再試行時間は 720 分です。10 分から 1,440 分の範囲でカスタム再試行時間を指定することもできます。30 分以上に設定することを推奨します。指定された時間内に DTS がデータベースへの再接続に成功した場合、同期タスクは自動的に再開されます。そうでない場合、タスクは失敗します。

      説明
      • 同じソースまたは宛先を共有する複数の DTS インスタンス(例:インスタンス A とインスタンス B)があり、インスタンス A のネットワーク再試行時間を 30 分、インスタンス B を 60 分に設定した場合、両方に 30 分という短い時間が適用されます。

      • DTS は接続再試行期間中もタスクランタイムに対して課金するため、ビジネスニーズに基づいて再試行時間をカスタマイズするか、ソースおよびターゲットデータベースインスタンスをリリースした後は速やかに DTS インスタンスをリリースすることを推奨します。

      移行元データベースと移行先データベースで他の問題が発生した場合の、再試行までの待機時間です。

      同期タスク開始後、ソースまたはターゲットデータベースで接続以外の問題(DDL または DML 実行例外など)が発生した場合、DTS はエラーを報告し、直ちに継続的な再試行操作を開始します。デフォルトの再試行時間は 10 分です。1 分から 1,440 分の範囲で再試行時間をカスタマイズすることもできます。10 分以上に設定することを推奨します。設定された再試行時間内に関連操作が成功した場合、同期タスクは自動的に再開されます。そうでない場合、タスクは失敗します。

      重要

      移行元データベースと移行先データベースで他の問題が発生した場合の、再試行までの待機時間です。 の値は、失敗した接続の再試行時間 の値よりも小さくする必要があります。

      完全同期レートを制限するかどうか

      完全同期ステージ中、DTS はソースおよびターゲットデータベースの読み取り・書き込みリソースを消費し、データベース負荷が増加する可能性があります。ソースおよびターゲットデータベースの負荷を軽減するため、1 秒あたりのソースデータベースのクエリ率 QPS1 秒あたりの完全移行の行数 RPS、および 1 秒あたりの完全移行データ量 (MB) BPS パラメーターを設定して、完全同期タスクのレート制限を設定できます。

      説明
      • この設定項目は、同期タイプ完全データ同期 に設定されている場合にのみ利用可能です。

      • 同期インスタンス実行後も、完全同期レートを調整 できます。

      増分同期率を制限するかどうか

      増分同期タスクのレート制限を設定することもできます。宛先データベースの負荷を軽減するため、1 秒あたりの増分同期の行数 RPS および 1 秒あたりの増分同期データ量 (MB) BPS を設定します。

      環境タグ

      ビジネス要件に基づいてインスタンスを識別するための環境タグを選択できます。この例では、タグを選択する必要はありません。

      ETL 機能の設定

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

      監視アラート

      アラートを設定するかどうかを指定します。同期が失敗した場合や、遅延が指定されたしきい値を超えた場合、アラート連絡先に通知が送信されます。

    3. 次へ:データ検証 をクリックして、データ検証タスクを設定します。

      データ検証機能を使用する場合は、「データ検証の設定」の設定手順をご参照ください。

  8. タスクを保存して事前チェックを実行します。

    • このインスタンスを設定するための API パラメーターを表示するには、次:タスク設定の保存と事前チェック ボタンにカーソルを合わせ、表示されるバルーンで OpenAPI パラメーターのプレビュー をクリックします。

    • API パラメーターの確認が完了したら、ページ下部の 次:タスク設定の保存と事前チェック をクリックします。

    説明
    • 同期ジョブ開始前に、DTS は事前チェックを実行します。すべての事前チェック項目が合格した場合にのみ、ジョブを開始できます。

    • 事前チェックが失敗した場合、失敗した項目の横にある 詳細を表示 をクリックします。表示された指示に従って問題を修正し、再度事前チェックを実行します。

    • 事前チェックで警告が返された場合:

      • チェック項目が失敗し、無視できない場合は、項目の横にある 詳細を表示 をクリックします。指示に従って問題を修正し、再度事前チェックを実行します。

      • 無視可能なチェック項目の場合は、アラートの詳細を確認無視OK、および 再度事前チェックを実行 を順にクリックして、警告をスキップして事前チェックを再実行します。警告項目をマスクすると、データの不整合などの問題が発生し、ビジネスにリスクが及ぶ可能性があります。

  9. 成功率100% になったら、戻る をクリックします。

  10. リバース同期タスクを設定します。

    1. ステータス実行中 に変わるまで待ちます。

    2. リバース同期タスクを見つけ、タスクの設定 をクリックします。

    3. ステップ 5 から ステップ 9 に従って、リバース同期タスクを設定します。

      重要
      • リバース同期タスクを設定する際は、ソースおよび宛先インスタンスを入れ替える必要があります。つまり、フォワードタスクの宛先がリバースタスクのソースとなり、その逆も同様です。また、データベース名、アカウント、パスワードなど、他のすべてのインスタンス情報が正確かつ一貫していることを確認してください。

      • リバース同期タスクのソースおよびターゲットデータベースの インスタンスのリージョン は変更できません。フォワード同期タスクよりも必要なパラメーターが少なくなります。コンソールに表示されるパラメーターを設定してください。

      • リバース同期タスクの 競合するテーブルの処理モード 設定は、フォワード同期タスクによって宛先インスタンスに同期されたテーブルをチェックしません。

      • リバース同期タスクは、フォワード同期タスクの 選択中のオブジェクト リストで指定されたオブジェクトの同期をサポートしていません。

      • リバース同期タスクを設定する際は、オブジェクト名マッピング機能を使用しないことを推奨します。使用すると、データの不整合が発生する可能性があります。

  11. リバース同期タスクの設定後、両方のタスクの ステータス実行中 に変わるのを待ちます。これで双方向データ同期の設定が完了します。