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

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

最終更新日:Aug 29, 2026

DTS、DataWorks、Flink CDC、および Catalog を使用して、セルフマネージド PostgreSQL、ApsaraDB RDS for PostgreSQL、PolarDB for PostgreSQL などの PostgreSQL ソースからApsaraDB for SelectDB にデータを移行することができます。データ量とビジネスシナリオに基づいて、適切な移行方法を選択できます。

移行ソリューション

DTS、DataWorks、Flink CDC、カタログはいずれも、PostgreSQL から SelectDB にデータを移行するために使用できますが、各方法でサポートされるデータは異なります。ビジネスシナリオに基づいて、適切な移行方法を選択できます。

ソリューション

履歴データ移行

増分データ同期

スキーマ移行

データベース移行

増分 DDL 同期

データ検証

DTS

✔️

✔️

✔️

✔️

✔️

✔️

DataWorks

✔️

✔️

✔️

✔️

✔️

❌

Flink CDC

✔️

✔️

✔️

✔️

✔️

❌

カタログ

✔️

❌

❌

❌

❌

❌

前提条件

  • PostgreSQL インスタンスと SelectDB インスタンスの間のネットワーク接続性を確保してください。

操作手順

DTS を使用した移行

DTS は、PostgreSQL から SelectDB への履歴データ移行と増分データ同期をサポートするほか、スキーマ移行、DDL 同期、データ検証などの機能もサポートしています。

DataWorks を使用した移行

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

データ同期タスクを開発する場合、DataWorks で PostgreSQL と SelectDB のデータソースを作成する必要があります。

  1. PostgreSQL データソースを作成してください。

  2. SelectDB データソースを作成します。詳細については、「データソース管理」をご参照ください。SelectDB データソースの一部の設定パラメーターは次のとおりです:

    パラメーター

    説明

    [データソース名]

    データソースの名前。

    [JDBC URL]

    JDBC 接続文字列 jdbc:mysql://:/。

    SelectDB コンソールのインスタンスの詳細 > ネットワーク情報 ページで、VPC アドレス (または インターネットアドレス) と MySQL プロトコルポート を見つけます。

    例: jdbc:mysql://selectdb-cn-4xl3jv1****.selectdbfe.rds.aliyuncs.com:9030/test_db

    [FE HTTP エンドポイント]

    HTTP アクセス URL は <ip>:<port> です。

    SelectDB コンソールの インスタンスの詳細 > ネットワーク情報 ページで、VPC アドレス (または インターネットアドレス) と HTTP プロトコルポート を確認します。

    例: selectdb-cn-4xl3jv1****.selectdbfe.rds.aliyuncs.com:8080

    [ユーザー名]

    SelectDB インスタンスのユーザー名。

    [パスワード]

    SelectDB インスタンスのユーザーのパスワード

ステップ2:データ同期の設定

次のいずれかの方法でデータ同期タスクを設定してください。

Flink CDC を使用した移行

Flink は Flink CDC を使用して、PostgreSQL から SelectDB にデータを移行します。Flink CDC は、履歴データの移行と増分データの同期の両方をサポートし、スキーマとテーブルの移行や DDL 同期などの包括的な機能を提供します。

環境の準備

Flink 環境をセットアップしてください。 この例では、Flink 1.16 スタンドアロン環境を使用します。

  1. flink-1.16.3-bin-scala_2.12.tgz パッケージをダウンロードして展開してください。 利用可能な他のバージョンについては、「Apache 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
  2. FLINK_HOME/lib ディレクトリに移動し、flink-sql-connector-postgres-cdc-2.4.2 と flink-doris-connector-1.16-1.5.2 をダウンロードしてください。 次のサンプルコードは参考用です。

    説明

    データベース移行は Flink 1.15 以降でサポートされています。 Flink のバージョンごとに Flink Doris Connector をダウンロードする方法については、「Flink Doris Connector」をご参照ください。

    cd flink-1.16.3
    cd lib/
    wget https://repo.maven.apache.org/maven2/org/apache/flink/flink-sql-connector-postgres-cdc/2.4.2/flink-sql-connector-postgres-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. テストデータベースとテストテーブルを作成してください。

    1. テストデータベースを作成してください。

      CREATE DATABASE test_db;
    2. テストテーブルを作成してください。

      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 ジョブの送信

次の構文を使用して 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

はい

Flink のチェックポイント間隔。 データ同期の頻度に影響します。 10s を推奨します。

parallelism.default

いいえ

Flink ジョブの並列度。 並列度を上げることで、データ同期の速度を向上させることができます。

database

はい

SelectDB に同期するデータベース名。

including-tables

いいえ

同期する PostgreSQL テーブル。

パイプ (|) を使用して複数のテーブル名を区切ることができます。 正規表現がサポートされています。

例えば、--including-tables table1|tbl.* は table1 と tbl で始まるすべてのテーブルを同期します。

excluding-tables

いいえ

除外するテーブル。 このパラメーターは including-tables と同じ方法で設定されます。

postgres-conf

はい

Postgres CDC ソースの設定。設定の詳細については、「Postgres CDC コネクタ」をご参照ください。この設定では hostname、username、password、database-name、table-name、および schema-name が必須です。

sink-conf

はい

Doris Sink の設定。 詳細については、「Flink を使用したデータのインポート」をご参照ください。

table-conf

いいえ

ApsaraDB for SelectDB テーブルの設定。 これらは、ApsaraDB for SelectDB テーブルを作成する際に指定されるプロパティです。

カタログを使用した移行

SelectDB のカタログ機能を使用すると、フェデレーテッドクエリで PostgreSQL にアクセスし、PostgreSQL から SelectDB に履歴データを簡単かつ迅速に移行できます。

  1. SelectDB インスタンスに接続します。 詳細については、「インスタンスに接続する」をご参照ください。

    説明

    DMS を使用してログインすると、SWITCH コマンドは失敗します。MySQL クライアントを使用して接続することをお勧めします。

  2. PostgreSQL JDBC カタログを作成してください。

    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"
    );

    パラメーター

    パラメーター

    必須

    説明

    user

    はい

    データベースアカウントのユーザー名。

    password

    はい

    データベースアカウントのパスワード。

    jdbc_url

    はい

    JDBC 接続文字列。

    driver_url

    はい

    JDBC ドライバーの JAR ファイル名。

    driver_class

    はい

    JDBC ドライバーのクラス名。

    lower_case_table_names

    いいえ

    外部 JDBC データソースからデータベース名とテーブル名を小文字で同期するかどうかを指定します。

    デフォルト値: "false"

    only_specified_database

    いいえ

    指定されたデータベースのみを同期するかどうかを指定します。

    デフォルト値:"false"

    include_database_list

    いいえ

    only_specified_database=true の場合、同期する複数のデータベースをカンマ (,) で区切って指定します。データベース名では大文字と小文字が区別されます。

    デフォルト値: ""

    exclude_database_list

    いいえ

    only_specified_database=true の場合、同期するデータベースを指定します。複数のデータベース名はコンマ (,) で区切ります。データベース名では大文字と小文字が区別されます。

    デフォルト値: ""

    詳細については、「JDBC データソース」をご参照ください。

  3. SelectDB でテーブルを作成した後、インデータベース ETL 構文 insert into select を使用してデータを同期できます。 insert into の詳細については、「INSERT INTO」をご参照ください。

    # テーブルを作成します。
    CREATE TABLE selectdb_table ...
    
    # データを移行します。
    INSERT INTO selectdb_table SELECT * FROM jdbc_postgresql.pg_database.pg_table;