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

ApsaraDB for SelectDB:PostgreSQL データソースからのデータ移行

最終更新日:Mar 29, 2026

ApsaraDB for SelectDB では、PostgreSQL ソースからデータをロードするための以下の 4 つの方法がサポートされています:Data Transmission Service (DTS)、DataWorks、Flink 変更データキャプチャ (CDC)、およびカタログ。PostgreSQL ソースは、自主管理 PostgreSQL データベース、ApsaraDB RDS for PostgreSQL インスタンス、または PolarDB for PostgreSQL クラスターのいずれかになります。

移行ソリューションの比較

ソリューション既存データの移行増分同期スキーマ移行データベース移行DDL 操作の増分同期データ検証
DTSはいはいはいはいはいはい
DataWorksはいはいはいはいはいいいえ
Flink CDCはいはいはいはいはいいいえ
カタログはいいいえいいえいいえいいえいいえ

移行ソリューションの選択

  • DTS:リアルタイム同期、DDL の伝搬、エンドツーエンドのデータ検証を必要とする本番ワークロードに最適です。DTS では、最小限の手動設定で完全な移行ライフサイクルを処理できます。

  • DataWorks:チームがすでに DataWorks をデータ統合ワークフローに使用しており、スケジューリング対応のバッチ同期が必要な場合に適しています。

  • Flink CDC:既存の Flink インフラストラクチャを有し、並列度のカスタマイズやテーブルフィルターなど、同期パイプラインに対して詳細な制御を必要とするチームに適しています。

  • カタログ:一度限りの既存データロード向けの軽量ソリューションです。JDBC カタログを使用してフェデレーテッドクエリ経由で PostgreSQL データをクエリし、INSERT INTO SELECT を用いて SelectDB へコピーします。

前提条件

開始前に、以下の点を確認してください。

  • PostgreSQL ソースと SelectDB インスタンスがネットワーク上で通信可能である。

  • PostgreSQL ソースの IP アドレスが、SelectDB インスタンスの IP アドレスホワイトリストに登録されている。詳細については、「IP アドレスホワイトリストの設定」をご参照ください。

  • PostgreSQL ソースが IP アドレスホワイトリストをサポートしている場合、SelectDB インスタンスの CIDR ブロックをそのホワイトリストに登録してください。

    • SelectDB インスタンスの VPC IP アドレスを確認するには、SelectDB コンソールに移動し、[インスタンスの詳細] ページを開き、[ネットワーク情報] セクションを確認します。詳細については、「ApsaraDB SelectDB インスタンスが属する VPC 内の IP アドレスを確認する方法は?」をご参照ください。

    • SelectDB インスタンスのパブリック IP アドレスを確認するには:パブリックエンドポイントに対して ping コマンドを実行します。

DTS を使用したデータ移行

DTS では、既存データの移行、増分同期、スキーマ移行、DDL 操作の同期、およびデータ検証がサポートされています。

PostgreSQL ソースの種類に応じて、以下の DTS ガイドを参照してください。

データ同期:

データ移行:

DataWorks を使用したデータ移行

ステップ 1:データソースの追加

DataWorks に PostgreSQL データソースおよび SelectDB データソースを追加します。

  1. PostgreSQL データソースを追加します。詳細については、「PostgreSQL データソース」をご参照ください。

  2. SelectDB データソースを追加します。詳細については、「データソースの追加と管理」をご参照ください。SelectDB データソースを追加する際には、以下のパラメーターを使用します。

    パラメーター説明
    データソース名このデータソース接続の名前。selectdb_prod
    ホストアドレス/IP アドレスjdbc:mysql://<ip>:<port>/<dbname> 形式の JDBC URL。SelectDB コンソールの「ネットワーク情報」セクション(「インスタンスの詳細」ページ内)から、VPC エンドポイントまたはパブリックエンドポイントと MySQL ポートを取得します。jdbc:mysql://selectdb-cn-4xl3jv1****.selectdbfe.rds.aliyuncs.com:9030/test_db
    HTTP 接続アドレス<ip>:<port> 形式の HTTP エンドポイント。SelectDB コンソールの「ネットワーク情報」セクション(「インスタンスの詳細」ページ内)から、VPC エンドポイントまたはパブリックエンドポイントと HTTP ポートを取得します。selectdb-cn-4xl3jv1****.selectdbfe.rds.aliyuncs.com:8080
    ユーザー名SelectDB インスタンスの所有者アカウントのユーザー名。admin
    パスワードSelectDB インスタンスの所有者アカウントのパスワード。

ステップ 2:データ同期タスクの構成

ビジュアルエディタまたはコードエディタのいずれかを使用して、バッチ同期タスクを作成します。

Flink CDC を使用したデータ移行

Flink CDC では、既存データの移行、増分同期、スキーマ移行、および DDL 操作の同期がサポートされています。

環境のセットアップ

以下の手順では、Flink バージョン 1.16 のスタンドアロンクラスターをデプロイします。

  1. Flink パッケージをダウンロードして展開します。

    wget https://archive.apache.org/dist/flink/flink-1.16.3/flink-1.16.3-bin-scala_2.12.tgz
    tar -zxvf flink-1.16.3-bin-scala_2.12.tgz

    バージョン 1.16.3 が利用不可の場合、Apache Flink のダウンロードページから後続のバージョンをダウンロードしてください。

  2. CDC コネクタおよび SelectDB コネクタを lib/ ディレクトリにダウンロードします。

    完全データ同期には Flink 1.15 以降が必要です。その他のコネクタバージョンについては、「Maven 上の org/apache/doris」をご参照ください。
    cd flink-1.16.3/lib/
    wget https://repo1.maven.org/maven2/com/ververica/flink-sql-connector-mysql-cdc/2.4.2/flink-sql-connector-mysql-cdc-2.4.2.jar
    wget https://repo.maven.apache.org/maven2/org/apache/doris/flink-doris-connector-1.16/1.5.2/flink-doris-connector-1.16-1.5.2.jar
  3. Flink スタンドアロンクラスターを起動します。

    bin/start-cluster.sh
  4. SelectDB インスタンスを作成します。詳細については、「インスタンスの作成」をご参照ください。

  5. MySQL プロトコル経由で SelectDB インスタンスに接続します。詳細については、「インスタンスへの接続」をご参照ください。

  6. SelectDB にテスト用データベースおよびテーブルを作成します。

    CREATE DATABASE test_db;
    
    USE test_db;
    CREATE TABLE employees (
        emp_no       int NOT NULL,
        birth_date   date,
        first_name   varchar(20),
        last_name    varchar(20),
        gender       char(2),
        hire_date    date
    )
    UNIQUE KEY(`emp_no`)
    DISTRIBUTED BY HASH(`emp_no`) BUCKETS 1;

Flink CDC ジョブの送信

以下のコマンドは、PostgreSQL ソースから指定されたフィルターに一致するすべてのテーブルを同期し、SelectDB データベース db1 に書き込む Flink CDC ジョブを送信します。

<FLINK_HOME>/bin/flink run \
    -Dexecution.checkpointing.interval=10s \
    -Dparallelism.default=1 \
    -c org.apache.doris.flink.tools.cdc.CdcTools \
    lib/flink-doris-connector-1.16-1.5.2.jar \
    postgres-sync-database \
    --database db1 \
    --postgres-conf hostname=127.0.0.1 \
    --postgres-conf port=5432 \
    --postgres-conf username=postgres \
    --postgres-conf password="123456" \
    --postgres-conf database-name=postgres \
    --postgres-conf schema-name=public \
    --postgres-conf slot.name=test \
    --postgres-conf decoding.plugin.name=pgoutput \
    --including-tables "tbl1|test.*" \
    --sink-conf fenodes=selectdb-cn-****.selectdbfe.rds.aliyuncs.com:8080 \
    --sink-conf username=admin \
    --sink-conf password=****

パラメーターのリファレンス:

パラメーター必須説明
execution.checkpointing.intervalはいチェックポイント間隔。同期頻度を制御します。10s
parallelism.defaultいいえFlink ジョブの並列度。この値を増やすことで同期を高速化できます。1
databaseはいSelectDB インスタンス内のターゲットデータベース名。db1
including-tablesいいえ同期対象の PostgreSQL テーブル。複数のテーブル名は | で区切ります。正規表現が使用可能です。table1|tbl.*
excluding-tablesいいえ除外対象のテーブル。構文は including-tables と同一です。tmp.*
postgres-confはいPostgres CDC ソースの構成。必須パラメーターは hostnameusernamepasswordtable-nameschema-namedatabase-name です。全パラメーター一覧については、「Postgres CDC コネクタ」をご参照ください。
sink-confはいDoris sink の構成。詳細については、「Flink を使用したデータのインポート」をご参照ください。
table-confいいえターゲットテーブル作成時に適用される SelectDB テーブルのプロパティ。

カタログを使用したデータ移行

カタログ方式では、JDBC カタログを用いてフェデレーテッドクエリ経由で PostgreSQL データをクエリし、INSERT INTO SELECT を使用して SelectDB へコピーします。この方式は、一度限りの既存データロードに適しています。

この手順では、Data Management (DMS) を使用して SelectDB インスタンスに接続しないでください。SWITCH 文は DMS セッション内で無効になります。代わりに MySQL クライアントをご使用ください。
  1. SelectDB インスタンスに接続します。詳細については、「インスタンスへの接続」をご参照ください。

  2. PostgreSQL ソース用の JDBC カタログを作成します。

    パラメーター:

    パラメーター必須説明
    userはいPostgreSQL ソースへの接続に使用するアカウント。root
    passwordはいアカウントのパスワード。123456
    jdbc_urlはいPostgreSQL ソースの JDBC URL。jdbc:postgresql://127.0.0.1:5432/demo
    driver_urlはいJDBC ドライバー JAR のファイル名。postgresql-42.5.1.jar
    driver_classはいJDBC ドライバーのクラス名。org.postgresql.Driver
    lower_case_table_namesいいえデータベースおよびテーブル名を小文字で同期するかどうか。デフォルト値:falsefalse
    only_specified_databaseいいえ特定のデータベースのみを移行するかどうか。デフォルト値:falsefalse
    include_database_listいいえ移行対象のデータベースをカンマ区切りで指定します。only_specified_database=true の場合にのみ有効です。データベース名は大文字小文字を区別します。デフォルト値:""db1,db2
    exclude_database_listいいえ除外対象のデータベースをカンマ区切りで指定します。only_specified_database=true の場合にのみ有効です。データベース名は大文字小文字を区別します。デフォルト値:""tmp_db
    CREATE CATALOG jdbc_postgresql PROPERTIES (
        "type"="jdbc",
        "user"="root",
        "password"="123456",
        "jdbc_url" = "jdbc:postgresql://127.0.0.1:5432/demo",
        "driver_url" = "postgresql-42.5.1.jar",
        "driver_class" = "org.postgresql.Driver",
        "checksum" = "20c8228267b6c9ce620fddb39467d3eb"
    );

    カタログ構成の完全なリファレンスについては、「JDBC データソース」をご参照ください。

  3. SelectDB にテーブルを作成し、INSERT INTO SELECT を使用して PostgreSQL ソースからデータをコピーします。

    -- ターゲットテーブルの作成
    CREATE TABLE selectdb_table ...
    
    -- PostgreSQL ソースからのデータ移行
    INSERT INTO selectdb_table SELECT * FROM jdbc_postgresql.pg_database.pg_table;

    INSERT INTO 構文の詳細については、「INSERT INTO を使用したデータのインポート」をご参照ください。