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

Data Transmission Service:ApsaraDB RDS for PostgreSQLインスタンス間の双方向データ同期の設定

最終更新日:Feb 20, 2025

Data Transmission Service (DTS) は、ApsaraDB RDS for PostgreSQLインスタンスのデータベースや自己管理型PostgreSQLデータベースなど、2つのPostgreSQLデータベース間の双方向データ同期をサポートします。 この機能は、アクティブなgeo冗長性 (ユニットベース) やgeoディザスタリカバリなどのシナリオに適用されます。 このトピックでは、ApsaraDB RDS for PostgreSQLインスタンス間の双方向データ同期を設定する方法について説明します。

前提条件

制限事項

カテゴリ

説明

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

  • 同期するテーブルにプライマリキーとUNIQUE制約がない場合は、データ同期タスクを設定するときに「1回だけ書き込み」機能を有効にする必要があります。 そうでない場合、宛先データベースは重複するデータレコードを含み得る。 詳細については、「プライマリキーまたは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インスタンスでプライマリ /セカンダリの切り替えを実行する場合は、Logical Replication Slotフェールオーバー機能を有効にする必要があります。 これにより、論理サブスクリプションの中断を防ぎ、データ同期タスクを期待どおりに実行できます。 詳細については、「Logical Replication Slot Failover」をご参照ください。

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

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

  • ソースデータベースに長時間実行トランザクションがあり、増分データがデータ同期タスクで同期されている場合、ソースデータベース内の長時間実行トランザクションがコミットされる前に生成されたライトアヘッドロギング (WAL) ログを蓄積することができます。 その結果、ソースデータベースのディスク容量が不足する可能性があります。

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

その他の制限

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

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

  • スキーマにテーブルを作成するか、RENAMEコマンドを実行してテーブルの名前を変更する場合は、テーブルにデータを書き込む前にALTER table schema.table REPLICA IDENTITY FULL; ステートメントを実行する必要があります。 これによりデータの整合性が保証されます。 このステートメントを実行するときは、テーブルをロックしないことをお勧めします。 そうでなければ、デッドロックが発生する。

    説明
    • 上記のサンプルステートメントのスキーマテーブルを、実際のスキーマ名とテーブル名に置き換えます。

    • そのため、ピーク時間外に操作を実行することを推奨します。

  • 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パラメーターをセッションレベルでレプリカに設定します。 移行先データベースアカウントに必要な権限がない場合は、session_replication_roleパラメーターを手動でレプリカに設定する必要があります。 session_replication_roleパラメーターの値がreplicaであり、完全データ同期または増分データ同期中にソースデータベースに対してカスケード更新または削除操作を実行すると、データの不整合が発生する可能性があります。 データ同期タスクがリリースされた後、session_replication_roleパラメーターの値を元に戻すことができます。

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

    • オブジェクトの完全データと増分データの両方を同期できるのは、タスクの1つだけです。 もう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つの同期ノードに挿入された場合、挿入されたレコードのうちの1つは同期されません。 同じプライマリキー値を持つレコードが他のノードに既に存在するため、同期は失敗します。

  • UPDATE 操作が原因の整合性のないレコード

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

    • 挿入するレコードの主キーまたは一意キーは、宛先インスタンス内の既存のレコードの主キーまたは一意キーと競合する場合があります。

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

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

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

  • DTS は、データの同期中に発生する可能性のある競合を防止するための競合解決ポリシーが用意されています。 双方向データ同期を設定するときに、競合解決ポリシーを選択できます。

同期するサポート対象オブジェクト

  • スキーマとテーブル。

    説明

    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

挿入、更新、および削除

DDL

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

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

    • 増分データ同期中は、BITタイプのデータを同期できません。

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

    • テーブルとドロップテーブルの作成

    • 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以降でなければなりません) 。

    • テーブルにインデックスを作成する

    重要
    • CASCADEやRESTRICTなど、DDLステートメントの追加情報を同期することはできません。

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

    • 関数を呼び出して実行されるDDLステートメントを同期することはできません。

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

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

重要

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

手順

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

    重要

    購入ページで、ソースインスタンスと宛先インスタンスの両方のパラメーターをPostgreSQLに設定し、同期トポロジパラメーターを双方向同期に設定します。

  2. Go to the

    新しいDTSコンソールのデータ同期ページ

    説明

    にログインすることもできます。

    データ管理 (DMS) コンソール 上部のナビゲーションバーで、ポインタを [データ開発] に移動し、[DTS (DTS)] > [データ同期] を選択します。

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

  4. データ同期インスタンスを見つけて、タスクの設定最初のデータ同期タスクの [アクション] 列に表示されます。

  5. ソースデータベースとターゲットデータベースを設定します。 下表に、各パラメーターを説明します。

    警告

    ソースデータベースとターゲットデータベースを設定した後、ページに表示される制限を読むことを推奨します。 そうしないと、タスクが失敗したり、データの不一致が発生します。

    セクション

    パラメーター

    説明

    非該当

    タスク名

    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 操作を除外

      • Yes: DDL操作を除外します。

      • No: DDL操作を同期します。

      重要

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

      競合解決ポリシー

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

      • タスク失敗

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

      • 無視する

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

      • 上書き

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

      説明

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

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

      ターゲットインスタンスのデータベース名、テーブル名、および列名の大文字化。 デフォルトでは、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インスタンスを識別するために使用される環境タグ。 ビジネス要件に基づいて環境タグを選択できます。 この例では、環境タグは選択されていません。

      モニタリングとアラート

      データ同期タスクのアラートを設定するかどうかを指定します。 タスクが失敗するか、同期レイテンシが指定されたしきい値を超えると、アラート送信先は通知を受け取ります。 有効な値:

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

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

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

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

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

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

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

    • 事前チェック中にアイテムに対してアラートがトリガーされた場合:

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

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

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

  10. データ同期タスクを逆方向に設定します。

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

    2. 逆方向のデータ同期タスクを見つけて、タスクの設定.

    3. ステップ5からステップ9までの操作を実行して、データ同期タスクを逆方向に設定します。

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

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

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

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

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

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