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

Data Transmission Service:PolarDB for PostgreSQL から SelectDB へのデータ同期

最終更新日:Mar 29, 2026

大規模なデータ分析を目的として、Data Transmission Service (DTS) を使用して PolarDB for PostgreSQL クラスターから ApsaraDB for SelectDB インスタンスへデータを同期します。DTS はスキーマ同期、完全データ同期、および継続的な増分同期をサポートしています。

前提条件

開始する前に、以下の条件を満たしていることを確認してください。

  • 宛先の ApsaraDB for SelectDB インスタンスのディスク領域が、ソースの PolarDB for PostgreSQL クラスターで使用されているディスク領域より大きいこと。詳細については、「インスタンスの作成」をご参照ください。

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

課金

同期タイプ料金
スキーマ同期およびフルデータ同期無料
増分データ同期有料です。詳細については、「課金概要」をご参照ください。

サポートされる SQL 操作

操作タイプSQL ステートメント
DMLINSERT、UPDATE、DELETE
DDLADD COLUMN、DROP COLUMN

必要な権限

データベース必要な権限権限の付与方法
ソースの PolarDB for PostgreSQL クラスター同期対象のデータベースを所有する特権アカウントデータベースアカウントの作成 および データベース管理
宛先の ApsaraDB for SelectDB インスタンスクラスターへのアクセス権限(Usage_priv)およびデータベースへのアクセス権限(Select_priv、Load_priv、Alter_priv、Create_priv、Drop_priv)クラスターパーミッション管理 および 基本パーミッション管理

制限事項

ソースデータベース

  • 同期対象のすべてのテーブルには、プライマリキーまたは NULL を許容しない一意なインデックスが必要です。テーブルのフィールドが一意でない場合、宛先データベースに重複データが発生する可能性があります。

  • プライマリキーまたは NULL を許容しない一意なインデックスを持たないテーブルの場合:「スキーマ同期」を「同期タイプ」で選択し、[データベース・テーブル・カラムの構成] 手順で「duplicate」を「エンジン」として指定します。

  • ソースデータベースにおける長時間実行中のトランザクションは、そのトランザクションがコミットされる前に先行書き込みログ(WAL)を蓄積させ、結果としてソースデータベースのディスク領域を枯渇させる可能性があります。

  • PolarDB for PostgreSQL クラスターでは、ロジカルレプリケーションスロットフェールオーバーがサポートされ、有効になっている必要があります。クラスターがロジカルレプリケーションスロットフェールオーバーをサポートしていない PostgreSQL 14 を使用している場合、高可用性 (HA) スイッチオーバーによって同期インスタンスが永続的に失敗し、完全な再構成が必要になる場合があります。

  • 単一の増分変更が 256 MB を超えると、同期インスタンスが恒久的に失敗する可能性があります。この場合、同期インスタンスを再構成して回復してください。

  • 初期スキーマ同期および初期完全同期中に、スキーマを変更する DDL 操作を実行しないでください。DTS は初期完全同期中にソースデータベースをクエリし、メタデータロックを生成するため、DDL 操作がブロックされる可能性があります。

宛先データベース

SelectDB のデータモデル要件

DTS は、ApsaraDB for SelectDB の Unique Key モデルまたは Duplicate Key モデルを使用するテーブルのみにデータを同期できます。ご要件に応じてモデルを選択してください。

要件推奨モデル備考
一貫性のある重複排除済みレコードUnique Key モデル宛先テーブルのすべての一意キーは、ソーステーブルおよび同期対象オブジェクトに存在している必要があります。不足しているキーがあると、データの不整合が発生します。
追記専用または高スループットの取り込みDuplicate Key モデルリトライ発生時や、同期インスタンス起動後に同一行に対して 2 回以上の DML 操作が実行された場合、重複データが発生する可能性があります。_is_deleted_version_record_id カラムを使用して重複排除を行ってください。DTS は Duplicate Key モデルのテーブルに対して、UPDATE および DELETE ステートメントを INSERT ステートメントに変換します。

オブジェクトおよび命名に関する制約

  • 選択したオブジェクト」セクションで指定できるのは、bucket_count パラメーターのみです。値は正の整数である必要があります。デフォルト値は auto です。

  • ApsaraDB for SelectDB では、データベース名およびテーブル名は英字で始める必要があります。英字で始まらないオブジェクト名は、オブジェクト名マッピング機能を使用して名前を変更してください。

  • 中国語文字を含むオブジェクト名(データベース、テーブル、またはカラム)は、オブジェクト名マッピング機能を使用して名前を変更する必要があります。

  • 単一の同期インスタンスでは、1 つのデータベースのみを同期できます。複数のデータベースを同期する場合は、各データベースごとに個別の同期インスタンスを構成してください。

同期範囲および DDL の制限

  • TimescaleDB 拡張テーブルおよびクロススキーマ継承を持つテーブルの同期はサポートされていません。

  • 複数のカラムに対する DDL 操作を一度に変更したり、同一テーブルに対する DDL 操作を連続して変更したりすることはできません。

  • マルチテーブルマージシナリオ(複数のソーステーブルを 1 つの宛先テーブルに同期)では、すべてのソーステーブルのスキーマが同一である必要があります。そうでない場合、データの不整合やタスクの失敗が発生する可能性があります。

パーティションテーブル

パーティションテーブルを同期する場合、親テーブルおよびすべての子パーティションを同期対象オブジェクトとして含めてください。PostgreSQL のパーティションテーブルの親テーブルは直接データを格納せず、すべてのデータは子パーティションに格納されます。パーティションを省略すると、データの不整合が発生します。

REPLICA IDENTITY 要件

以下の 3 つのシナリオにおいて、データ書き込みを実行する前に、対象テーブルで次のコマンドを実行してください:インスタンス初回実行時、スキーマレベルでオブジェクトを選択し、新しいテーブルが作成または RENAME を使用して再構築されたとき、および同期対象オブジェクトを変更する機能を使用するときです。

ALTER TABLE schema.table REPLICA IDENTITY FULL;

schema および table は、実際のスキーマ名およびテーブル名に置き換えてください。このコマンドは、トラフィックが少ない時間帯に実行してください。コマンド実行中はテーブルロック操作を実行しないでください。関連する事前チェックをスキップした場合、DTS はインスタンス初期化時に自動的にこのコマンドを実行します。

タスク失敗を引き起こす操作

以下の操作により、同期タスクが失敗します。同期インスタンスを再起動することで、タスクを再開できます。

  • 同期中に宛先の ApsaraDB for SelectDB データベースにバックエンドノードを追加すること

  • 同期中に宛先の ApsaraDB for SelectDB インスタンスにクラスターを作成すること

一時テーブル

DTS は、増分同期をサポートするためにソースデータベースに以下の 1 つ以上の一時テーブルを作成します。同期中はこれらのテーブルを削除しないでください。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_sync_ のレプリケーションスロットを作成します。このスロットは、直近 15 分間の増分ログを保持します。同期タスクが失敗した場合やインスタンスがリリースされた場合、DTS はスロットの自動クリーンアップを試行します。

同期中にソースデータベースアカウントのパスワードを変更したり、DTS の IP アドレスホワイトリストを削除したりした場合、レプリケーションスロットは自動的にクリーンアップされません。ディスク領域の枯渇を防ぐため、手動でレプリケーションスロットをクリーンアップしてください。プライマリ/セカンダリ スイッチオーバーが発生した場合は、セカンダリデータベースにログインしてクリーンアップを実行してください。

Replication slot query information

増分同期遅延

DTS は、宛先への負荷を軽減するため、バッチ同期ポリシーを採用しています。デフォルトでは、DTS は各同期対象オブジェクトについて最大で 5 秒ごとに 1 回データを書き込みます。これにより、通常の同期遅延は最大 10 秒となります。この遅延を短縮するには、コンソールで DTS インスタンスの selectdb.reservoir.timeout.milliseconds パラメーターを変更してください。有効範囲は 1,000~10,000 ミリ秒です。

バッチ処理時間を短くすると、書き込み頻度が増加し、宛先の負荷および書き込み応答時間が増加する可能性があり、その結果、DTS の同期遅延も増加します。バッチ処理時間は、宛先の負荷に応じて調整してください。

その他の注意事項

  • DTS は、シーケンスなどのメタデータの妥当性を検証しません。同期前後で、メタデータの妥当性を手動で検証してください。

  • CPU 負荷がソースおよび宛先の両方のデータベースで 30 % 未満の状態で、完全データ同期を実行してください。

  • インスタンスが失敗した場合、DTS サポートチームは 8 時間以内に回復を試みます。回復中は、DTS インスタンスのパラメーターのみを変更できます。データベースのパラメーターは変更されません。変更可能なパラメーターについては、「インスタンスパラメーターの変更」をご参照ください。

同期タスクの作成

ステップ 1:データ同期ページへ移動

以下のいずれかのコンソールを使用してください。

DTS コンソール

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

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

  3. ページの左上隅で、同期タスクが配置されるリージョンを選択します。

DMS コンソール

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

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

  2. 上部のナビゲーションバーで、Data + AI の上にポインターを合わせ、DTS (DTS) > データ同期 を選択します。

  3. データ同期タスク の右側にあるドロップダウンリストから、同期インスタンスが配置されるリージョンを選択します。

ステップ 2:ソースおよび宛先データベースの構成

  1. タスクの作成 をクリックして、タスク構成ページに移動します。

  2. 以下のパラメーターを使用して、ソースおよび宛先データベースを構成します。

    カテゴリパラメーター説明
    なしタスク名タスクの名前です。DTS が自動的に名前を生成します。タスクを容易に識別できるように、意味のある名前を指定してください。名前は一意である必要はありません。
    ソースデータベース既存の接続の選択データベースインスタンスを DTS に登録済みの場合は、ドロップダウンリストから選択してください。DTS が自動的にデータベースパラメーターを入力します。それ以外の場合は、以下のパラメーターを手動で構成してください。
    データベースタイプPolarDB for PostgreSQL を選択します。
    アクセス方法Alibaba Cloud インスタンス を選択します。
    インスタンスリージョンソースの PolarDB for PostgreSQL クラスターが配置されるリージョンを選択します。
    Alibaba Cloud アカウント間でのデータ複製ソースおよび宛先データベースが同一の Alibaba Cloud アカウントに属する場合は、いいえ を選択します。
    インスタンス IDソースの PolarDB for PostgreSQL クラスターの ID を選択します。
    データベース名同期対象オブジェクトを含むデータベースの名前を入力します。
    データベースアカウントデータベースアカウントを入力します。権限要件については、「必要な権限」をご参照ください。
    データベースパスワードデータベースアカウントのパスワードを入力します。
    宛先データベース既存の接続の選択データベースインスタンスを DTS に登録済みの場合は、ドロップダウンリストから選択してください。DTS が自動的にデータベースパラメーターを入力します。それ以外の場合は、以下のパラメーターを手動で構成してください。
    データベースタイプSelectDB を選択します。
    アクセス方法Alibaba Cloud インスタンス を選択します。
    インスタンスリージョン宛先の SelectDB インスタンスが配置されるリージョンを選択します。
    Alibaba Cloud アカウント間でのデータ複製ソースおよび宛先データベースが同一の Alibaba Cloud アカウントに属する場合は、いいえ を選択します。
    インスタンス ID宛先の SelectDB インスタンスの ID を選択します。
    データベースアカウントデータベースアカウントを入力します。権限要件については、「必要な権限」をご参照ください。
    データベースパスワードデータベースアカウントのパスワードを入力します。
  3. 接続テストと続行 をクリックします。

    DTS サーバーの CIDR ブロックが、ソースおよびターゲットデータベースのセキュリティ設定に追加されていることを確認してください。詳細については、「DTS サーバーの IP アドレスをホワイトリストに追加する」をご参照ください。

ステップ 3:同期対象オブジェクトの構成

  1. オブジェクトの構成」ステップで、同期パラメーターを構成します。

    パラメーター説明
    同期タイプデフォルトでは、増分データ同期 が選択されています。また、スキーマ同期 および 完全データ同期 も選択してください。事前チェックが完了すると、DTS は継続的な増分同期の基盤となる既存データを同期します。
    重要

    PolarDB for PostgreSQL から SelectDB への同期では、データ型が変換されます。もし スキーマ同期 を選択しない場合は、対応する Unique または Duplicate モデルを使用して宛先テーブルを手動で作成してください。詳細については、「データ型マッピング」、「追加カラム情報」および「データモデル」をご参照ください。

    競合テーブルの処理モード事前チェックとエラー報告:DTS は、宛先データベースに同名のテーブルが存在するかどうかをチェックします。重複するテーブルが存在する場合、事前チェックは失敗し、タスクは開始されません。
    説明

    重複テーブルを削除または名前変更できない場合は、オブジェクト名マッピング機能を使用します。詳細については、「スキーマ、テーブル、および列名のマッピング」をご参照ください。[エラーを無視して続行]: DTS は重複テーブル名のチェックをスキップします。

    警告

    このオプションはデータの不整合を引き起こす可能性があります。テーブルスキーマが同一であり、レコードに一致するプライマリキーまたは一意キーがある場合、ソースレコードが宛先レコードを上書きします。スキーマが異なる場合、初期化が失敗したり、一部のカラムのみが同期されたりする可能性があります。

    宛先インスタンスにおけるオブジェクト名の大文字小文字表記宛先インスタンスにおけるデータベース名、テーブル名、および列名の大文字小文字のポリシー。デフォルト: [DTS デフォルトポリシー]。詳細については、「宛先インスタンスでのオブジェクト名の大文字小文字の指定」をご参照ください。
    ソースオブジェクト1 つ以上のオブジェクトを選択し、向右 アイコンをクリックして、選択したオブジェクト に移動します。スキーマ、テーブル、またはカラムレベルでオブジェクトを選択できます。
    選択したオブジェクト- 宛先オブジェクトの名前変更または受信オブジェクトの指定を行うには、選択したオブジェクトオブジェクト名のマッピング セクションで該当オブジェクトを右クリックします。詳細については、「」をご参照ください。 - 選択したオブジェクトを削除するには、該当オブジェクトをクリックしてから image アイコンをクリックします。 - bucket_count パラメーターをテーブルに設定する(スキーマ同期 が選択されており、かつオブジェクトがテーブルレベルで選択されている場合にのみ利用可能)には、テーブルを右クリックし、「パラメーター設定の有効化」を はいアラート通知設定 に設定し、値を入力して OK をクリックします。
    説明

    オブジェクト名マッピングを使用してオブジェクト名を変更すると、依存オブジェクトの同期が失敗する可能性があります。 WHERE 条件でデータをフィルターするには、テーブルを右クリックして条件を指定します。 詳細については、「フィルター条件を指定する」をご参照ください。 増分同期の SQL 操作を選択するには、オブジェクトを右クリックして操作を選択します。

  2. 次へ:高度な設定 をクリックし、以下のパラメーターを構成します。

    パラメーター説明
    タスクスケジューリング用の専用クラスターデフォルトでは、DTS はタスクを共有クラスターにスケジュールします。安定性を向上させるには、専用クラスターを購入してください。詳細については、「DTS 専用クラスターとは」をご参照ください。
    接続失敗時のリトライ時間接続失敗時のリトライ時間範囲です。有効値は 10~1440 分です。デフォルト値は 720 分です。30 分を超える値を設定してください。このウィンドウ内で DTS が再接続できた場合、タスクは再開されます。それ以外の場合は、タスクが失敗します。
    説明

    複数のタスクが同一のソースまたは宛先データベースを共有し、異なるリトライウィンドウを設定している場合、最も短いウィンドウが優先されます。リトライ中も DTS インスタンスの課金が発生します。

    その他の問題発生時のリトライ時間DDL または DML 操作失敗時のリトライ時間範囲です。有効値は 1~1440 分です。デフォルト値は 10 分です。10 分を超える値を設定してください。この値は、接続失敗時のリトライ時間 よりも小さくする必要があります。
    完全データ同期のスロットリング有効化完全データ同期のスロットリングを有効化して、ソースおよび宛先の負荷を軽減します。「ソースデータベースへのクエリ数(QPS)」、「完全データ移行の RPS」、および「完全移行のデータ移行速度(MB/s)」を構成します。完全データ同期 が選択されている場合にのみ利用可能です。
    増分データ同期のスロットリング有効化増分データ同期のスロットリングを有効化して、「増分データ同期の RPS」および「増分同期のデータ同期速度(MB/s)」を構成します。
    環境タグインスタンスを識別するための任意のタグです。
    ETL の構成抽出・変換・書き出し(ETL)機能を有効化するかどうかを指定します。はいデータ移行またはデータ同期タスクにおける ETL の設定 を選択すると、コードエディタでデータ処理ステートメントを入力できます。詳細については、「」をご参照ください。いいえ を選択すると、ETL 構成をスキップします。
    モニタリングとアラートアラートを設定するかどうかを指定します。[はい] を選択すると、アラートのしきい値と通知設定を構成できます。詳細については、「DTS タスクの作成時にモニタリングとアラートを設定する」をご参照ください。
  3. (任意)次へ:データベースおよびテーブルフィールドの構成 をクリックして、宛先テーブルの プライマリキーカラムディストリビューションキー、および エンジン を設定します。

    - このステップは、「スキーマ同期」が「同期タイプ」で選択されている場合にのみ利用可能です。定義ステータスすべて に設定すると、変更が可能になります。 - 複数のカラムを複合プライマリキーとして選択できます。プライマリキーカラム で選択したカラムのうち、少なくとも 1 つは ディストリビューションキー としても選択する必要があります。 - プライマリキーまたは UNIQUE 制約を持たないテーブルの場合は、エンジンduplicate に設定してください。そうしないと、同期が失敗したり、データが失われたりする可能性があります。

ステップ 4:事前チェックの実行

  1. 次へ:タスク設定の保存と事前チェック をクリックします。DTS は、同期タスクを開始する前に事前チェックを実行します。事前チェックが成功した場合にのみ、タスクが開始されます。

    この構成の API パラメーターを表示するには、次へ:タスク設定の保存と事前チェック の上にポインターを合わせ、OpenAPI パラメーターのプレビュー をクリックします。
  2. 事前チェックが失敗した場合、各失敗項目の横にある 詳細の表示 をクリックし、問題をトラブルシューティングして、再度事前チェックを実行してください。

  3. アラートがトリガーされた場合:

    • アラートを無視できない場合は、詳細の表示 をクリックし、問題を修正して、再度事前チェックを実行してください。

    • アラートを無視できる場合は、アラート詳細の確認 をクリックし、詳細の表示 ダイアログボックスで 無視 をクリックし、OK をクリックしてから、再び事前チェック をクリックしてください。

    アラートを無視すると、データの不整合が発生し、ビジネスにリスクを及ぼす可能性があります。

ステップ 5:インスタンスの購入

  1. 成功率100 % に達するまで待ち、その後 次へ:インスタンスの購入 をクリックします。

  2. 購入 ページで、以下のパラメーターを構成します。

    パラメーター説明
    課金方法サブスクリプション:固定期間の前払い方式。長期利用に適しており、コスト効率が優れています。従量課金:時間単位で課金されます。短期利用に適しています。不要になったらインスタンスをリリースして、コストを削減してください。
    リソースグループ設定同期インスタンスのリソースグループです。デフォルト値は デフォルトルソースグループ です。詳細については、「Resource Management とは
    インスタンスクラス同期速度レベルです。ビジネス要件に基づいて選択してください。詳細については、「データ同期インスタンスのインスタンスタイプ」をご参照ください。
    サブスクリプション期間サブスクリプション課金方法でのみ利用可能です。選択肢:1~9 か月、1 年、2 年、3 年、または 5 年です。
  3. Data Transmission Service(従量課金)サービス利用規約 を読み、チェックボックスをオンにしてください。

  4. 購入して開始 をクリックします。表示されたダイアログボックスで、OK をクリックします。

タスクがタスクリストに表示されます。そこから進行状況を監視できます。

データ型マッピング

以下の表は、PolarDB for PostgreSQL のデータ型と SelectDB のデータ型の対応関係を示しています。

カテゴリPolarDB for PostgreSQL のデータ型SelectDB のデータ型
数値SMALLINTSMALLINT
INTEGERINT
BIGINTBIGINT
DECIMALDECIMAL
NUMERICDECIMAL
REALDOUBLE
DOUBLEDOUBLE
SMALLSERIALSMALLINT
SERIALINT
BIGSERIALBIGINT
通貨MONEYSTRING
文字CHAR(n)、VARCHAR(n)VARCHAR。
重要

データ損失を防ぐため、CHAR(n) および VARCHAR(n) は VARCHAR(4×n) に変換されます。長さが指定されていない場合は、SelectDB のデフォルト値 VARCHAR(65533) が使用されます。長さが 65533 を超える場合は、データは STRING に変換されます。

TEXTSTRING
バイナリBYTEASTRING
日付および時刻TIMESTAMP [(P)] [WITHOUT TIME ZONE]DATETIMEV2
TIMESTAMP [(P)] WITH TIME ZONEDATETIMEV2
DATEDATEV2
TIME [(P)] [WITHOUT TIME ZONE]VARCHAR(50)
TIME [(P)] WITH TIME ZONEVARCHAR(50)
INTERVAL [FIELDS] [(P)]STRING
ブール値BOOLEANBOOLEAN
幾何学的POINT、LINE、LSEG、BOX、PATH、POLYGON、CIRCLESTRING
ネットワークアドレスCIDR、INET、MACADDR、MACADDR8STRING
テキスト検索TSVECTORSTRING
XMLXMLSTRING
JSONJSONJSON

追加カラム情報

Duplicate Key モデルを使用するテーブルについて、DTS は宛先テーブルに以下のカラムを自動的に追加または要求します。

カラム名データ型デフォルト値説明
_is_deletedInt0削除フラグ。INSERT: 0。UPDATE: 0。DELETE: 1
_versionBigint0完全データ同期: 0。増分データ同期: ソースデータベースのバイナリログからの対応するタイムスタンプ(秒単位)。
_record_idBigint0完全データ同期: 0。増分データ同期: 増分ログからのレコード ID(ログエントリを一意に識別)。値は一意であり、インクリメントされます。