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

ApsaraDB RDS:ApsaraDB RDS for PostgreSQL インスタンス間での双方向データ同期の構成

最終更新日:Feb 25, 2025

Data Transmission Service (DTS) は、2 つの ApsaraDB RDS for PostgreSQL データベース間の双方向データ同期をサポートしています。この機能は、アクティブ ジオレプリケーション(ユニットベース)や ジオディザスタリカバリなどのシナリオに適用されます。

前提条件

制限事項

カテゴリ

説明

ソースデータベースとターゲットデータベースの制限

  • 同期するテーブルにプライマリキーと UNIQUE 制約がない場合は、データ同期タスクを構成する際に Exactly-Once 書き込み機能を有効にする必要があります。そうしないと、ターゲットデータベースに重複したデータレコードが含まれる可能性があります。詳細については、「プライマリキーまたは UNIQUE 制約のないテーブルを同期する」をご参照ください。

  • 同期対象のオブジェクトとしてテーブルを選択し、ターゲットデータベース内のテーブルや列の名前変更など、テーブルを編集する場合、1 つのデータ同期タスクで最大 5,000 個のテーブルを同期できます。 5,000 個を超えるテーブルを同期するタスクを実行すると、リクエストエラーが発生します。この場合は、複数のタスクを構成してテーブルを同期するか、データベース全体を同期するタスクを構成することをお勧めします。

  • DTS は、ソースデータベースの一時テーブル、内部トリガー、または C プログラミング言語で記述された一部の内部プロシージャと関数を同期できません。DTS は、COMPOSITE、ENUM、および RANGE タイプのカスタムパラメータを同期できます。同期するテーブルには、PRIMARY KEY、FOREIGN KEY、UNIQUE、または CHECK 制約が必要です。

  • WAL ログについて、次の要件を満たす必要があります。

    • wal_level パラメータの値は、logical である必要があります。

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

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

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

    • ソースデータベースからの論理サブスクリプションには、DTS の使用に制限があります。増分データの変更時にソースデータベースから同期される単一のデータのサイズが 256 MB を超えると、実行中のデータ同期インスタンスは実行に失敗し、回復できません。タスクを再構成する必要があります。

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

  • ソースデータベースに長時間トランザクションがあり、データ同期タスクで増分データが同期される場合、ソースデータベースで長時間トランザクションがコミットされる前に生成された先行書き込みログ (WAL) ログが蓄積される可能性があります。その結果、ソースデータベースのディスク容量が不足する可能性があります。

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

その他の制限

  • データ同期タスクは、1 つのデータベースからのみデータを同期できます。複数のデータベースからデータを同期するには、データベースごとにデータ同期タスクを作成する必要があります。

  • DTS は、スキーマをまたがる継承関係を持つテーブルを同期できません。

  • データ同期中に、同期するオブジェクトとしてスキーマを選択する場合は、次の制限事項に注意してください。スキーマにテーブルを作成する場合、または RENAME コマンドを実行してテーブルの名前を変更する場合は、テーブルにデータを書き込む前に、ALTER TABLE schema.table REPLICA IDENTITY FULL; 文を実行する必要があります。これは、データの整合性を確保します。この文を実行するときは、テーブルをロックしないことをお勧めします。そうしないと、デッドロックが発生します。

    説明
    • 上記のサンプル文の schematable を実際のスキーマ名とテーブル名に置き換えてください。

    • この操作は、オフピーク時に実行することをお勧めします。

  • 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 文には、ソースデータベースのすべてのシーケンスが含まれています。ビジネス要件に基づいてターゲットデータベースで操作を実行できます。

  • DTS は、ソースデータベースに一時テーブルを作成して、増分データの DDL 文、増分テーブルのスキーマ、およびハートビート情報を取得します。データ同期中は、ソースデータベースの一時テーブルを削除しないでください。そうしないと、データ同期タスクは失敗します。DTS インスタンスが解放されると、一時テーブルは自動的に削除されます。

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

  • データ同期のレイテンシが正確であることを確認するために、DTS はソースデータベースにハートビートテーブルを追加します。ハートビートテーブルの名前は、dts_postgres_heartbeat です。

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

    説明
    • DTS インスタンスが解放されると、レプリケーションスロットは自動的に削除されます。ソースデータベースのパスワードを変更したり、IP アドレスホワイトリストから DTS の IP アドレスを削除したりすると、レプリケーションスロットは自動的に削除されません。この場合は、レプリケーションスロットが積み重ならないように、ソースデータベースのレプリケーションスロットを削除する必要があります。

    • データ同期タスクが解放または失敗した場合、DTS はレプリケーションスロットを自動的に削除します。ソース PostgreSQL データベースでプライマリ/セカンダリスイッチオーバーが実行された場合は、セカンダリデータベースにログインしてレプリケーションスロットを削除する必要があります。

    Amazon slot查询信息

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

  • 初期完全データ同期中、同時 INSERT 操作により、ターゲットデータベースのテーブルで断片化が発生します。したがって、初期完全データ同期が完了した後、ターゲットデータベースの使用済み表領域のサイズはソースデータベースのサイズよりも大きくなります。

  • DTS のみを使用してターゲットデータベースにテーブルデータを書き込む場合は、データ同期中に DMS を使用してソーステーブルでオンライン DDL 操作を実行できます。詳細については、「テーブルをロックせずにスキーマを変更する」をご参照ください。

  • データ同期の間に他のソースからのデータがターゲットデータベースに書き込まれると、ソースデータベースとターゲットデータベースの間でデータの不整合が発生します。たとえば、他のソースからのデータがターゲットデータベースに書き込まれている間に DMS を使用してオンライン DDL 文を実行すると、ターゲットデータベースでデータ損失が発生する可能性があります。

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

  • 双方向データ同期インスタンスには、順方向同期タスクと逆方向同期タスクが含まれています。インスタンスを構成またはリセットするときに、順方向同期タスクと逆方向同期タスクの両方でオブジェクトを同期する場合は、次のルールが適用されます。

    • タスクの 1 つだけが、オブジェクトの完全データと増分データの両方を同期できます。もう一方のタスクは、オブジェクトの増分データのみを同期します。

    • 現在のタスクのソースデータは、タスク内のターゲットデータベースにのみ同期できます。同期されたデータは、他のタスクのソースデータとして使用されません。

  • DTS タスクの実行に失敗した場合、DTS テクニカルサポートは 8 時間以内にタスクの復元を試みます。復元中、タスクが再起動され、タスクのパラメータが変更される場合があります。

    説明

    タスクのパラメータのみが変更される場合があります。データベースのパラメータは変更されません。 変更される可能性のあるパラメータには、「DTS インスタンスのパラメータを変更する」トピックの「インスタンスパラメータの変更」セクションのパラメータが含まれますが、これらに限定されません。

特別なケース

  • ソースデータベースが 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 権限を持つデータベースアカウントに設定する必要があります。同期するオブジェクトを選択するときは、指定したアカウントが管理を承認されているオブジェクトを選択する必要があります。そうしないと、選択したオブジェクトの OWNER 権限を指定したアカウントに付与する必要があります。

    説明

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

課金

同期タイプタスク構成料金
スキーマ同期と完全データ同期無料。
増分データ同期有料。詳細については、「課金概要」をご参照ください。

サポートされている同期トポロジ

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

競合の検出

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

DTS は、双方向同期インスタンスの安定性を最大限に高めるために、競合をチェックして修正します。DTS は、次のタイプの競合を検出できます。

  • INSERT 操作によって発生する一意性競合

    一意性制約に準拠していない INSERT 操作は同期できません。たとえば、同じプライマリキー値を持つレコードがほぼ同時に 2 つの同期ノードに挿入された場合、挿入されたレコードのいずれかが同期に失敗します。同期が失敗するのは、同じプライマリキー値を持つレコードが他のノードに既に存在するためです。

  • UPDATE 操作によって発生する不整合なレコード

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

    • 挿入するレコードのプライマリキーまたは一意キーが、ターゲットインスタンスの既存のレコードと競合する可能性があります。

  • 削除するレコードが存在しない

    削除するレコードがターゲットインスタンスに存在しません。この場合、DTS は、指定した競合解決ポリシーに関係なく、DELETE 操作を無視します。

重要
  • 双方向同期中、ソースインスタンスとターゲットインスタンスのシステム時間が異なる場合があります。同期レイテンシが発生する可能性があります。これらの理由により、DTS は競合検出メカニズムがすべてのデータ競合を防ぐことを保証しません。双方向同期を実行するには、同じプライマリキー、ビジネスプライマリキー、または一意キーを持つレコードが同期ノードのいずれか 1 つでのみ更新されるようにしてください。

  • DTS は、データ同期中に発生する可能性のある競合を防ぐための競合解決ポリシーを提供します。双方向データ同期を構成するときに、競合解決ポリシーを選択できます。

同期可能なオブジェクト

  • SCHEMA および TABLE。

    説明

    PRIMARY KEY、UNIQUE KEY、FOREIGN KEY、DATATYPE (組み込みデータ型)、および DEFAULT CONSTRAINT を含みます。

  • VIEW、PROCEDURE (PostgreSQL V11 以降)、FUNCTION、RULE、SEQUENCE、EXTENSION、TRIGGER、AGGREGATE、INDEX、OPERATOR、および DOMAIN。

同期可能な SQL 操作

操作タイプ

SQL 文

DML

INSERT、UPDATE、および DELETE

DDL

  • DDL 操作は、2020 年 10 月 1 日以降に作成されたデータ同期タスクによってのみ同期できます。

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

    • 増分データ同期中に BIT タイプのデータを同期することはできません。

  • ソースデータベースのデータベースアカウントが特権アカウントであり、ApsaraDB RDS for PostgreSQL インスタンスのマイナーエンジンバージョンが 20210228 以降の場合、DTS は次の 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 (ソースの自主管理 PostgreSQL データベースのバージョンは 11 以降である必要があります。)

    • CREATE INDEX ON TABLE

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

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

    • 関数を呼び出して実行される DDL 文は同期できません。

    • ソースデータベースによって同時にコミットされた複数の SQL 文に DML 文と DDL 文の両方が含まれている場合、DTS は DDL 文を同期しません。

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

重要

DDL 操作は、ソースデータベースからターゲットデータベースへの順方向にのみ同期できます。DDL 操作は逆方向では無視されるため、ターゲットデータベースからソースデータベースに同期することはできません。

手順

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

    重要

    購入ページで、ソースインスタンスとデスティネーションインスタンスの両方のパラメーターを [postgresql] に設定し、同期トポロジパラメーターを [双方向同期] に設定します。

  2. 新しい DTS コンソールのデータ同期ページ に移動します。

    説明

    Data Management (DMS) コンソール にログインすることもできます。上部のナビゲーションバーで、[データ開発] にポインタを移動し、[DTS (DTS)] > [データ同期] を選択します。

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

  4. データ同期インスタンスを見つけ、最初のデータ同期タスクの [アクション] 列にある [タスクの構成] をクリックします。

  5. ソースデータベースとターゲットデータベースを構成します。次の表にパラメータを示します。

    警告

    ソースデータベースとターゲットデータベースを構成した後、ページに表示される [制限事項] を読むことをお勧めします。そうしないと、タスクが失敗したり、データの不整合が発生したりする可能性があります。

    セクション

    パラメータ

    説明

    該当なし

    タスク名

    DTS タスクの名前。DTS はタスク名を自動的に生成します。タスクを簡単に識別できる説明的な名前を指定することをお勧めします。一意のタスク名を指定する必要はありません。

    [ソースデータベース]

    データベースタイプ

    ソースデータベースのタイプ。[postgresql] を選択します。

    アクセス方法

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

    インスタンスリージョン

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

    インスタンス ID

    ソース ApsaraDB RDS for PostgreSQL インスタンスの ID。

    データベース名

    ソース ApsaraDB RDS for PostgreSQL インスタンスのソースデータベースの名前。

    データベースアカウント

    ソース ApsaraDB RDS for PostgreSQL インスタンスの特権アカウント。アカウントはソースデータベースの所有者である必要があります。 ApsaraDB RDS for PostgreSQL インスタンスのアカウントを作成し、このアカウントに権限を付与する方法の詳細については、「アカウントを作成する」および「データベースを作成する」をご参照ください。

    データベースパスワード

    データベースへのアクセスに使用するパスワード。

    暗号化

    ソースデータベースへの接続を暗号化するかどうかを指定します。ビジネス要件に基づいてこのパラメータを構成できます。この例では、非暗号化 が選択されています。

    ソースデータベースへの SSL 暗号化接続を確立する場合は、次の手順を実行します。 SSL 暗号化 を選択し、必要に応じて CA 証明書クライアント証明書、および クライアント証明書の秘密鍵 をアップロードし、クライアント証明書の秘密鍵のパスワード を指定します。

    説明
    • 自主管理 PostgreSQL データベースの [暗号化] を SSL 暗号化 に設定する場合は、CA 証明書 をアップロードする必要があります。

    • クライアント証明書を使用する場合は、クライアント証明書クライアント証明書の秘密鍵 をアップロードし、クライアント証明書の秘密鍵のパスワード を指定する必要があります。

    • ApsaraDB RDS for PostgreSQL インスタンスの SSL 暗号化を構成する方法については、「SSL 暗号化」をご参照ください。

    [ターゲットデータベース]

    データベースタイプ

    ターゲットデータベースのタイプ。[postgresql] を選択します。

    アクセス方法

    ターゲットデータベースのアクセス方法。[alibaba Cloud インスタンス] を選択します。

    インスタンスリージョン

    購入ページで選択したターゲットリージョン。このパラメータは変更できません。

    インスタンス ID

    ターゲット ApsaraDB RDS for PostgreSQL インスタンスの ID。

    [データベース名]

    ターゲット ApsaraDB RDS for PostgreSQL インスタンスのターゲットデータベースの名前。

    データベースアカウント

    ターゲット ApsaraDB RDS for PostgreSQL インスタンスの特権アカウント。アカウントはターゲットデータベースの所有者である必要があります。 ApsaraDB RDS for PostgreSQL インスタンスのアカウントを作成し、このアカウントに権限を付与する方法の詳細については、「アカウントを作成する」および「データベースを作成する」をご参照ください。

    データベースパスワード

    データベースへのアクセスに使用するパスワード。

    暗号化

    ソースデータベースへの接続を暗号化するかどうかを指定します。ビジネス要件に基づいてこのパラメータを構成できます。この例では、非暗号化 が選択されています。

    ソースデータベースへの SSL 暗号化接続を確立する場合は、次の手順を実行します。 SSL 暗号化 を選択し、必要に応じて CA 証明書クライアント証明書、および クライアント証明書の秘密鍵 をアップロードし、クライアント証明書の秘密鍵のパスワード を指定します。

    説明
    • 自主管理 PostgreSQL データベースの [暗号化] を SSL 暗号化 に設定する場合は、CA 証明書 をアップロードする必要があります。

    • クライアント証明書を使用する場合は、クライアント証明書クライアント証明書の秘密鍵 をアップロードし、クライアント証明書の秘密鍵のパスワード を指定する必要があります。

    • ApsaraDB RDS for PostgreSQL インスタンスの SSL 暗号化を構成する方法については、「SSL 暗号化」をご参照ください。

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

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

    • ソースデータベースまたはターゲットデータベースが自主管理データベースであり、その アクセス方法Alibaba Cloud インスタンス に設定されていない場合は、DTS サーバーの CIDR ブロック ダイアログボックスの 接続テスト をクリックします。

  7. 同期するオブジェクトを構成します。

    1. オブジェクト設定 ステップで、同期するオブジェクトを構成します。

      パラメータ

      説明

      同期タイプ

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

      説明

      [スキーマ同期] を選択すると、DTS は同期するテーブルのスキーマをソースデータベースからターゲットデータベースに同期します。スキーマには外部キーが含まれます。

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

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

        説明

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

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

        警告

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

        • ソースデータベースとターゲットデータベースのスキーマが同じで、ターゲットデータベースのデータレコードのプライマリキー値または一意キー値がソースデータベースのデータレコードと同じである場合:

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

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

        • ソースデータベースとターゲットデータベースのスキーマが異なる場合、データの初期化に失敗する可能性があります。この場合、一部の列のみが同期されるか、データ同期タスクが失敗します。注意して進めてください。

      同期トポロジ

      データ同期タスクの同期トポロジ。双方向同期 を選択します。

      [厳密な1回書き込みを有効にする]

      Exactly-Once 書き込み機能を有効にするかどうかを指定します。同期するオブジェクトにプライマリキーと UNIQUE 制約のないテーブルが含まれている場合は、 を選択します。詳細については、「プライマリキーまたは UNIQUE 制約のないテーブルを同期する」をご参照ください。

      DDL 操作を除外

      • [はい]: DDL 操作を除外します。

      • [いいえ]: DDL 操作を同期します。

      重要

      DDL 操作は、ソースデータベースからターゲットデータベースへの順方向にのみ同期できます。DDL 操作は、ターゲットデータベースからソースデータベースへの逆方向では無視されます。したがって、このパラメータは、順方向にタスクを構成する場合にのみ表示されます。

      競合解決ポリシー

      このトピックの「競合の検出」セクションで説明されている競合が発生した場合は、ビジネス要件に基づいて競合解決ポリシーを選択してください。

      • [taskfailed]

        データ同期中に競合が発生した場合、データ同期タスクはエラーを報告してプロセスを終了します。タスクは失敗状態になり、競合を手動で解決する必要があります。

      • [無視]

        データ同期中に競合が発生した場合、データ同期タスクは現在の文を無視してプロセスを続行します。ターゲットデータベースの競合するレコードが使用されます。

      • [上書き]

        データ同期中に競合が発生した場合、ターゲットデータベースの競合するレコードは上書きされます。

      説明

      データ同期タスクを一時停止または再起動したときにレイテンシが発生した場合、選択した競合解決ポリシーはレイテンシ中には有効になりません。デフォルトでは、ターゲットデータベースのデータは、レイテンシ中に同期されたデータによって上書きされます。

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

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

      ソースオブジェクト

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

      説明

      列、テーブル、またはスキーマを同期するオブジェクトとして選択できます。

      選択中のオブジェクト

      • ターゲットインスタンスに同期するオブジェクトの名前を変更するには、選択中のオブジェクト セクションでオブジェクトを右クリックします。詳細については、「オブジェクト名をマッピングする」トピックの「単一オブジェクトの名前をマッピングする」セクションをご参照ください。

      • 複数のオブジェクトの名前を一度に変更するには、選択中のオブジェクト セクションの右上隅にある 一括編集 をクリックします。詳細については、「オブジェクト名をマッピングする」トピックの「一度に複数のオブジェクト名をマッピングする」セクションをご参照ください。

      説明
      • 特定のデータベースまたはテーブルで実行される SQL 操作を選択するには、[選択したオブジェクト] セクションでオブジェクトを右クリックします。表示されるダイアログボックスで、同期する SQL 操作を選択します。

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

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

    2. 次へ:詳細設定 をクリックして詳細設定を構成します。

      パラメータ

      説明

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

      デフォルトでは、専用クラスタを指定しない場合、DTS は共有クラスタにタスクをスケジュールします。データ同期タスクの安定性を向上させるには、専用クラスタを購入します。詳細については、「DTS 専用クラスタとは」をご参照ください。

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

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

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

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

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

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

      重要

      移行元データベースと移行先データベースで他の問題が発生した場合の、再試行までの待機時間です。 パラメータの値は、失敗した接続の再試行時間 パラメータの値よりも小さくなければなりません。

      完全移行率を制限するかどうか

      完全データ同期中、DTS はソースデータベースとターゲットデータベースの読み取りおよび書き込みリソースを使用します。これにより、データベースサーバーの負荷が増加する可能性があります。完全データ同期タスクの 1 秒あたりのソースデータベースのクエリ率 QPS1 秒あたりの完全移行の行数 RPS、および 1 秒あたりの完全移行データ量 (MB) BPS パラメータを構成して、ターゲットデータベースサーバーの負荷を軽減できます。

      説明

      このパラメータは、同期タイプ パラメータで 完全データ同期 が選択されている場合にのみ表示されます。

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

      増分データ同期のスロットリングを有効にするかどうかを指定します。ビジネス要件に基づいて増分データ同期のスロットリングを有効にすることができます。スロットリングを構成するには、1 秒あたりの増分同期の行数 RPS パラメータと 1 秒あたりの増分同期データ量 (MB) BPS パラメータを構成する必要があります。これは、ターゲットデータベースサーバーの負荷を軽減します。

      環境タグ

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

      監視とアラート

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

      • [いいえ]: アラートを有効にしません。

      • [はい]: アラートを構成します。この場合、アラートしきい値と アラート通知設定 も構成する必要があります。詳細については、「監視とアラートを構成する」トピックの「DTS タスクの作成時に監視とアラートを構成する」セクションをご参照ください。

    3. [次のステップ: データ検証] をクリックしてデータ検証を構成します。

      データ検証機能の使用方法の詳細については、「データ検証タスクを構成する」をご参照ください。

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

    • 関連する API 操作を呼び出して DTS タスクを構成するときに指定するパラメータを表示するには、次:タスク設定の保存と事前チェック にポインタを移動し、OpenAPI パラメーターのプレビュー をクリックします。

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

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

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

    • 事前チェック中に項目のアラートがトリガーされた場合:

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

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

  9. [成功率][100%] になるまで待ちます。次に、[戻る] をクリックします。

  10. 逆方向のデータ同期タスクを構成します。

    1. 初期同期が完了し、順方向のデータ同期タスクが 実行中 状態になるまで待ちます。

    2. 逆方向のデータ同期タスクを見つけ、[タスクの構成] をクリックします。

    3. 手順 5 から 手順 9 で説明されている操作を実行して、逆方向のデータ同期タスクを構成します。

      重要
      • 逆方向のデータ同期タスクを構成する場合は、正しいソースインスタンスとターゲットインスタンスを選択する必要があります。逆方向のソースインスタンスは、順方向のターゲットインスタンスです。逆方向のターゲットインスタンスは、順方向のソースインスタンスです。また、データベース名、アカウント、パスワードなどのパラメータ設定が一致していることを確認する必要があります。

      • 逆方向のデータ同期タスクのソースデータベースとターゲットデータベースを構成する場合、インスタンスのリージョン パラメータは変更できません。逆方向のデータ同期タスクに必要なパラメータの数は、順方向のデータ同期タスクに必要なパラメータの数よりも少なくなります。コンソールに表示されるパラメータを構成します。

      • DTS が逆方向の競合するテーブルをチェックする場合、順方向でターゲットインスタンスに同期されたテーブルは、競合するテーブルの処理モード で無視されます。

      • 逆方向のデータ同期タスクには、順方向のデータ同期タスクの 選択中のオブジェクト を選択できません。

      • 逆方向のデータ同期タスクを構成する場合は、オブジェクト名マッピング機能を使用しないことをお勧めします。そうしないと、データの不整合が発生する可能性があります。

  11. 逆方向のデータ同期タスクが構成された後、両方のタスクが 実行中 状態になるまで待ちます。双方向データ同期が構成されます。