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

AnalyticDB:Greenplum クラスターから AnalyticDB for PostgreSQL への移行

最終更新日:Mar 28, 2026

AnalyticDB for PostgreSQL は、Alibaba Cloud が Greenplum を基に最適化したサービスです。AnalyticDB for PostgreSQL は、マルチコーディネーター構成でベクター演算およびトランザクション処理をサポートします。また、Greenplum Community Edition と同じ API オペレーションを採用しているため、移行が容易です。本トピックでは、移行方法の選定から結果検証まで、一連の移行プロセスを順に説明します。

移行前の確認事項

移行を開始する前に、以下の制約事項をご確認ください。

  • 単方向移行のみ対応。 データ移行は継続的な同期をサポートしていません。移行中に書き込み操作が継続される場合、移行完了後に新規データをバックフィルしてください。パフォーマンス低下やデータ欠損を防ぐため、移行中は書き込み操作を一時停止してください。

  • 移行後の統計情報収集。 移行後、AnalyticDB for PostgreSQL はクエリプランニングのため、ANALYZE を実行して統計情報を収集します。この際、コーディネーターノードの CPU 負荷がデータ量に応じて一時的に上昇します。

  • ノード数。 ソースとなる Greenplum クラスターと同等以上のコンピュートノード数を持つ AnalyticDB for PostgreSQL インスタンスを作成してください。gpcopy を使用する場合は、ノード数を一致させることで、最も高い移行スループットが得られます。

  • 拡張機能。 自己管理型 Greenplum クラスターで使用している拡張機能が、AnalyticDB for PostgreSQL でサポートされているかを確認してください。サポート拡張機能の一覧については、「拡張機能の管理」をご参照ください。

  • 構文互換性。 AnalyticDB for PostgreSQL は Greenplum 4X の構文と一部互換性がありません。移行前に影響を受ける SQL を確認・修正してください。

  • パーティションテーブルおよび継承テーブル。 親テーブルではなく、子テーブル単位で移行してください。

移行の概要

移行は以下の 4 段階で実施します。

  1. 移行リスクの評価および移行方法の選定。

  2. テスト用 AnalyticDB for PostgreSQL インスタンスの購入および移行手法の検証。

  3. 本番用 AnalyticDB for PostgreSQL インスタンスの購入および本番データの移行。

  4. アプリケーションを本番インスタンスに接続し、移行結果の検証。

移行方法の選択

方法使用タイミング
gpcopy自己管理型 Greenplum クラスターから AnalyticDB for PostgreSQL インスタンスへネットワーク接続が可能である場合
gptransferAnalyticDB for PostgreSQL インスタンスは、セルフマネージド Greenplum クラスターに直接接続できます。
OSS 外部テーブル自己管理型 Greenplum クラスターと AnalyticDB for PostgreSQL インスタンスが相互にネットワーク接続できない場合
gpcopy は、弾力的ストレージモード (V7.0) またはサーバーレスモードのインスタンスをサポートしていません。これらのインスタンスタイプには、gptransfer または OSS 外部テーブル方式をご利用ください。

移行には、 Alibaba Cloud DataWorks (データ統合) も使用できます。詳細については、「データ統合を使用してデータを移行およびバッチ同期する」をご参照ください。

gpcopy を使用したデータ移行

前提条件

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

  • 自己管理型 Greenplum クラスターから AnalyticDB for PostgreSQL インスタンスへネットワーク経由で到達可能であること。

  • Greenplum クラスターにスーパーユーザーアカウントが存在すること。

  • AnalyticDB for PostgreSQL インスタンスが弾力的ストレージモード (V7.0) またはサーバーレスモードでないこと。gpcopy はこれらのインスタンスタイプをサポートしていません。

ステップ 1:Alibaba Cloud テクニカルサポートへのお問い合わせ

チケットを起票チケットを起票し、以下の情報を提供してください。

  • AnalyticDB for PostgreSQL インスタンスのインスタンス ID

  • 自己管理型 Greenplum クラスターの IP アドレスおよびポート番号

  • Greenplum クラスターのスーパーユーザーアカウント

  • Greenplum クラスターが配置されているサーバーの IP アドレス

Alibaba Cloud テクニカルサポートが、ご利用の AnalyticDB for PostgreSQL インスタンスに gpcopy をダウンロード・インストールします。チケットを起票

ステップ 2:IP アドレスホワイトリストの更新

外部アクセスを許可するため、AnalyticDB for PostgreSQL インスタンスの IP アドレスホワイトリストに 0.0.0.0/0 を追加してください。

警告

0.0.0.0/0 はすべての IP アドレスからのアクセスを許可します。移行完了直後に、このエントリを削除し、必要な特定の IP アドレスのみを許可するホワイトリストに復元してください。

ステップ 3:Greenplum サーバーへの gpcopy のインストール

  1. 自己管理型 Greenplum クラスターが配置されているサーバーで、gpcopy をダウンロードしてください。

    本トピックでは gpcopy 2.3.2 を使用します。移行には gpcopy 2.3.x をご使用ください。gpcopy 2.4.x を使用する場合は SSL 暗号化が必要です — 使用する場合は、「SSL 暗号化の設定」をご参照ください。
  2. gpcopy パッケージが配置されたディレクトリで、以下のスクリプトを実行して gpcopy をインストールしてください。

    #!/bin/bash
    
    tar xzvf gpcopy-2.3.2.tar.gz
    
    cd gpcopy-2.3.2/
    cp gpcopy $GPHOME/bin
    cp gpcopy_helper $GPHOME/bin
    chmod 755 $GPHOME/bin/gpcopy
    chmod 755 $GPHOME/bin/gpcopy_helper
    
    host_sql=`psql -A -t -c "select address from gp_segment_configuration where role = 'p' and content >= 0 group by address"`
    host=(${host_sql})
    host_len=${#host[@]}
    
    host_str=""
    for ((i=0; i<$host_len; ++i)); do
        host_str=$host_str" -h "${host[$i]}
    done
    
    gpscp $host_str gpcopy_helper =:$GPHOME/bin
    gpssh $host_str -e "chmod 755 $GPHOME/bin/gpcopy_helper"

ステップ 4:移行の実行

以下のコマンドを実行してデータを移行します。

gpcopy --full \
  --source-host <SOURCEHOST> \
  --source-port <SOURCEPORT> \
  --source-user <SOURCEUSER> \
  --dest-host <DESTHOST> \
  --dest-port <DESTPORT> \
  --dest-user <DESTUSER> \
  --jobs 4 \
  --drop \
  --validate count

プレースホルダーを実際の値に置き換えてください。

プレースホルダー説明備考
<SOURCEHOST>Greenplum サーバーの IP アドレスGreenplum サーバー上でコマンドを実行する場合は localhost を使用してください
<SOURCEPORT>Greenplum クラスターのポート番号デフォルト値:5432gpstate -s を実行して実際のポートを確認してください
<SOURCEUSER>Greenplum スーパーユーザーアカウント
<DESTHOST>AnalyticDB for PostgreSQL コーディネーターノードの IP アドレスAlibaba Cloud テクニカルサポートにお問い合わせください
<DESTPORT>コーディネーターノードのポート番号Alibaba Cloud テクニカルサポートにお問い合わせください
<DESTUSER>AnalyticDB for PostgreSQL スーパーユーザーアカウントAlibaba Cloud テクニカルサポートにお問い合わせください

主なオプション:

オプション説明
--fullすべてのユーザーデータベースを移行します。単一データベースのみを移行する場合は、-d <database name> に置き換えてください
--jobs並列で移行するテーブル数です。デフォルト値:4。ビジネス要件に応じて設定してください。推奨値は「2 × 接続数 + 1」の数式で算出してください
--validate countソーステーブルと送信先テーブルの行数を比較することで、移行の妥当性を検証します

ステップ 5:アクセス制御の復元

移行完了後:

  1. IP アドレスホワイトリストを 0.0.0.0/0 から、ビジネス運用に必要な IP アドレスに更新してください。

  2. Alibaba Cloud テクニカルサポートに連絡し、スーパーユーザーアカウントの構成、セキュリティグループ、および pg_hba によるパスワード不要ログイン設定を復元してください。

gptransfer を使用したデータ移行

前提条件

移行を開始する前に、以下の点をご確認ください。

  • AnalyticDB for PostgreSQL インスタンスは、自己管理型 Greenplum クラスターにネットワークを介して接続できます。

  • AnalyticDB for PostgreSQL インスタンスに特権アカウントが存在すること。存在しない場合は、「データベースアカウントの作成」をご参照のうえ、作成してください。

手順

  1. 必要に応じて、AnalyticDB for PostgreSQL インスタンス用の特権アカウントを作成してください。

  2. 外部アクセスを許可するため、AnalyticDB for PostgreSQL インスタンスの IP アドレスホワイトリストに 0.0.0.0/0 を追加してください。

    警告

    0.0.0.0/0 はすべての IP アドレスからのアクセスを許可します。移行完了直後に、このエントリを削除してください。

  3. AnalyticDB for PostgreSQL インスタンスを最新のマイナーエンジンバージョンに更新してください。「マイナーエンジンバージョンの確認」および「マイナーエンジンバージョンの更新」をご参照ください。

  4. チケットを起票チケットを起票し、インスタンス ID、自己管理型 Greenplum クラスターの IP アドレスおよびポート番号、データ移行権限を持つ Greenplum クラスターのアカウント、およびサーバーの IP アドレスを提供してください。

  5. 移行が完了するまでお待ちください。

  6. IP アドレスホワイトリストを 0.0.0.0/0 から、ビジネス運用に必要な IP アドレスに更新してください。データを検証した後、アプリケーションをインスタンスに接続してください。

OSS 外部テーブルを使用したデータ移行

Greenplum クラスターと AnalyticDB for PostgreSQL インスタンスが直接接続できない場合に、この方法をご利用ください。プロセスは、スキーマ移行、テーブルデータ移行、データ検証の 3 段階で構成されます。

スキーマ移行

  1. 自己管理型 Greenplum クラスターのマスターノードで、pg_dumpall を使用して DDL スキーマをエクスポートします。

    export PGHOST=<自己管理型 Greenplum クラスターの IP アドレス>
    export PGPORT=<自己管理型 Greenplum クラスターのポート番号>
    export PGUSER=<自己管理型 Greenplum クラスターのスーパーユーザーアカウント>
    export PGPASSWORD=<スーパーユーザーアカウントのパスワード>
    
    # Greenplum 4X の場合
    pg_dumpall -s -q --gp-syntax > full_schema.sql
    
    # Greenplum 5X または 6X の場合
    pg_dumpall -s --gp-syntax > full_schema.sql
  2. カスタムライブラリの有無を確認します。psql を使用して Greenplum クラスターに接続し、以下のコマンドを実行してください。

    SELECT * FROM pg_catalog.pg_library;

    カスタムライブラリが存在する場合、AnalyticDB for PostgreSQL インスタンス上で対応するスキーマを手動で作成したうえで、次のステップに進んでください。

  3. DDL スキーマを AnalyticDB for PostgreSQL インスタンスに適用します。

    export PGHOST=<AnalyticDB for PostgreSQL インスタンスの IP アドレス>
    export PGPORT=<AnalyticDB for PostgreSQL インスタンスのポート番号>
    export PGUSER=<AnalyticDB for PostgreSQL インスタンスの特権アカウント>
    export PGPASSWORD=<特権アカウントのパスワード>
    
    psql postgres -f full_schema.sql > psql.log 2>&1 &

    psql.log」を確認してエラーを調べます。ほとんどのエラーは、SQL 構文の違い、特に Greenplum 4X に関連しています。互換性に関する詳細については、「AnalyticDB for PostgreSQL V4.3 と V6.0 の互換性比較」および「AnalyticDB for PostgreSQL V4.3 と V6.0 の非互換性の確認」をご参照ください。

テーブルデータ移行

ステップ 1:Greenplum クラスターからのデータエクスポート

以下のいずれかのエクスポート方法を選択してください。

オプション A:COPY TO

psql クライアントで COPY TO 文を実行します。

-- Works with Greenplum 4X, 5X, and 6X
COPY public.t1 TO '/data/gpload/public_t1.csv' FORMAT CSV ENCODING 'UTF8';

Greenplum 5X または 6X の場合、ON SEGMENT を使用して並列エクスポートが可能です。

COPY public.t1 TO '<SEG_DATA_DIR>/public_t1_<SEGID>.csv' FORMAT CSV ENCODING 'UTF8' ON SEGMENT;
<SEGID> プレースホルダーは変更しないでください — システムがエクスポート時に自動的に置き換えます。<SEG_DATA_DIR> はそのまま使用するか、絶対パスに置き換えてください。

オプション B:gpfdist 外部テーブル

  1. gpfdist サービスを起動します。

    mkdir -p /data/gpload
    gpfdist -d /data/gpload -p 8000 &
  2. psql を使用して Greenplum クラスターに接続し、データをエクスポートします。

    -- Create a writable external table for public.t1
    CREATE WRITABLE EXTERNAL TABLE ext_w_t1 (LIKE public.t1)
    LOCATION ('gpfdist://<IP address of the self-managed Greenplum cluster>:8000/public_t1.csv')
    FORMAT 'CSV' ENCODING 'UTF8';
    
    -- Write the table data to the external table
    INSERT INTO ext_w_t1 SELECT * FROM public.t1;

ステップ 2:Object Storage Service (OSS) へのデータアップロード

エクスポートされたファイルを OSS バケットにアップロードします。このバケットは、AnalyticDB for PostgreSQL インスタンスと同じリージョン内にある必要があります。詳細については、「オブジェクトのアップロード」をご参照ください。

ステップ 3:AnalyticDB for PostgreSQL へのデータインポート

OSS 外部テーブルを使用して、OSS から AnalyticDB for PostgreSQL インスタンスにデータを読み込みます。詳細については、「OSS データを AnalyticDB for PostgreSQL テーブルにインポート」をご参照ください。

移行結果の検証

以下の両方のチェックを実行し、移行が完了したことを確認してください。

  • データ整合性チェック。 ソースと送信先のテーブル間で行数および数値フィールドの集計値を比較します。大規模なテーブルの場合、サンプリングによる比較でも構いません。

  • 業務整合性チェック。 アプリケーションを AnalyticDB for PostgreSQL インスタンスに接続し、業務クエリが正しく実行され、期待通りの結果が返されることを確認してください。

次のステップ