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

AnalyticDB:自己管理型GreenplumクラスターからAnalyticDB for PostgreSQLインスタンスへのデータの移行

最終更新日:Sep 24, 2024

AnalyticDB for PostgreSQLは、Greenplumに基づいてAlibaba Cloudによって最適化されています。 AnalyticDB for PostgreSQLは、マルチコーディネーターアーキテクチャでのベクトルコンピューティングとトランザクション処理をサポートしています。 AnalyticDB for PostgreSQLは、Greenplum Community Editionと同じAPI操作を使用します。 このトピックでは、自己管理型GreenplumクラスターからAnalyticDB for PostgreSQLインスタンスにデータを移行する方法について説明します。

移行プロセス

  1. 移行リスクを評価し、移行ソリューションを選択します。

  2. AnalyticDB for PostgreSQLテストインスタンスを購入し、移行ソリューションを使用してアプリケーションとデータを移行できるかどうかを確認します。

  3. AnalyticDB for PostgreSQL運用インスタンスを購入し、自己管理型GreenplumクラスターからAnalyticDB for PostgreSQLインスタンスに運用ライブラリを移行します。

  4. アプリケーションをAnalyticDB for PostgreSQL本番インスタンスに接続し、アプリケーションとデータがインスタンスに移行されているかどうかを確認します。

使用上の注意

  • データは移行できますが、同期できません。 データ移行中に新しいデータが書き込まれた場合は、データ移行後にデータをバックフィルする必要があります。

  • 書き込み操作が一時停止されている場合は、データを移行することを推奨します。 そうしないと、サービスのパフォーマンスが低下し、データ移行が遅くなります。

  • データ移行後、AnalyticDB for PostgreSQLインスタンスはANALYZEステートメントを実行して統計を収集し、最適な実行計画を生成します。 ANALYZEステートメントが実行されると、データ量に基づいてコーディネータノードのCPUワークロードが一時的に増加します。

  • 計算ノードの数が自己管理型Greenplumクラスター内のノードの数以上であるAnalyticDB for PostgreSQLインスタンスを作成することを推奨します。 gpcopyを使用してデータを移行する場合、同じ数のノードが最適な移行速度を提供します。

  • 自己管理型GreenplumクラスターとAnalyticDB for PostgreSQLインスタンスでサポートされている拡張機能の違いを確認します。 AnalyticDB For PostgreSQLでサポートされている拡張機能については、「拡張機能の管理」をご参照ください。

  • AnalyticDB for PostgreSQLの構文は、Greenplum 4Xの構文と部分的に互換性がありません。 構文に合わせて変更する必要があります。

  • 自己管理型Greenplumクラスターにパーティションテーブルまたは継承テーブルが含まれている場合は、子テーブルに基づいてデータを移行することを推奨します。

移行方法の選択

移行方法

シナリオ

gpcopyを使用したデータの移行

自己管理型Greenplumクラスターは、AnalyticDB for PostgreSQLインスタンスに接続できます。

重要

gpcopyユーティリティは、elastic storageモード (V7.0) またはServerlessモードのAnalyticDB for PostgreSQLインスタンスのデータを移行するためにサポートされていません。

gptransferを使用したデータの移行

AnalyticDB for PostgreSQLインスタンスは、自己管理型Greenplumクラスターに接続できます。

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

自己管理型GreenplumクラスターとAnalyticDB for PostgreSQLインスタンスは相互に接続できません。

gpcopyを使用したデータの移行

  1. チケットを起票 AnalyticDB for PostgreSQLインスタンスのID、自己管理型GreenplumクラスターのIPアドレスとポート番号、データを移行するためのスーパーユーザー権限を持つGreenplumクラスターのアカウント、およびGreenplumクラスターが存在するサーバーのIPアドレス。

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

    警告

    0.0.0.0/0では、すべてのIPアドレスがAnalyticDB for PostgreSQLインスタンスにアクセスできるように指定されています。 データ移行後、IPアドレスホワイトリストをタイムリーに変更します。

  3. 自己管理型Greenplumクラスターが存在するサーバーにgpcopyをダウンロードします。 AnalyticDB for PostgreSQLインスタンスにgpcopyをダウンロードしてインストールするには、Alibaba Cloudテクニカルサポートにお問い合わせください。

    説明

    このトピックでは、gpcopy 2.3.2が使用されます。 gpcopy 2.3.xを使用してデータを移行することを推奨します。 gpcopy 2.4.xを使用してデータを移行する場合は、SSL暗号化を有効にする必要があります。 詳細については、「SSL暗号化の設定」をご参照ください。

  4. 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"
  5. 次のコマンドを実行して、データを移行します。

    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

    下表に、各パラメーターを説明します。

    パラメーター

    説明

    -- フル

    自己管理型Greenplumクラスターの全データを移行します。

    自己管理されたGreenplumクラスターの1つのデータベースのみを移行する場合は、このパラメーターを -d <database name> に置き換えることができます。

    -仕事

    同時に移行できるテーブルの数。 デフォルト値: 4。

    このパラメーターは、ビジネス要件に基づいて設定できます。 このパラメーターの値は、次の式を使用して計算することを推奨します。2 × 接続数 + 1。

    <ソースホスト>

    自己管理型Greenplumクラスターが存在するサーバーのIPアドレス。

    自己管理型Greenplumクラスターが存在するサーバーで移行コマンドを実行する場合、このパラメーターをlocalhostに置き換えることができます。

    <ソース>

    自己管理型Greenplumクラスターのポート番号。 デフォルト値: 5432

    自己管理型Greenplumクラスターが存在するサーバーでgpstate -sコマンドを実行して、実際のポート番号を照会できます。

    <ソースユーザー>

    スーパーユーザー権限を持つ自己管理されたGreenplumクラスターのアカウント。

    <DESTHOST>

    AnalyticDB for PostgreSQLインスタンスのコーディネーターノードのIPアドレス。 詳細については、Alibaba Cloudテクニカルサポートにお問い合わせください。

    <DESTPORT>

    AnalyticDB for PostgreSQLインスタンスのコーディネーターノードのポート番号。 ポート番号を取得するには、Alibaba Cloudテクニカルサポートにお問い合わせください。

    <DESTUSER>

    スーパーユーザー権限を持つAnalyticDB for PostgreSQLインスタンスのアカウント。 アカウントを取得するには、Alibaba Cloudテクニカルサポートにお問い合わせください。

  6. データの移行後、AnalyticDB for PostgreSQLインスタンスのIPアドレスホワイトリストを0.0.0.0/0からビジネスに必要なIPアドレスに変更します。 スーパーユーザーアカウント、セキュリティグループ、pg_hbaパスワードなしログインの設定を復元するには、Alibaba Cloudテクニカルサポートにお問い合わせください。

gptransferを使用したデータの移行

  1. AnalyticDB for PostgreSQLインスタンスの特権アカウントを作成します。 詳細については、「データベースアカウントの作成」トピックの「特権アカウントの作成」セクションをご参照ください。

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

    警告

    0.0.0.0/0では、すべてのIPアドレスがAnalyticDB for PostgreSQLインスタンスにアクセスできるように指定されています。 データ移行後、IPアドレスホワイトリストをタイムリーに変更します。

  3. AnalyticDB for PostgreSQLインスタンスを最新のマイナーバージョンに更新します。 マイナーバージョンの表示と更新方法については、「マイナーエンジンバージョンの表示」および「マイナーエンジンバージョンの更新」をご参照ください。

  4. チケットを起票してAlibaba Cloudテクニカルサポートに連絡し、AnalyticDB for PostgreSQLインスタンスのID、自己管理型GreenplumクラスターのIPアドレスとポート番号、データを移行する権限を持つGreenplumクラスターのアカウント、Greenplumクラスターが存在するサーバーのIPアドレスを提供します。

  5. データの移行が完了するまで待ちます。

  6. AnalyticDB for PostgreSQLインスタンスのIPアドレスホワイトリストを0.0.0.0/0からビジネスに必要なIPアドレスに変更し、データがインスタンスに移行されているかどうかを確認します。 データが移行されたことを確認したら、アプリケーションをAnalyticDB for PostgreSQLインスタンスに接続します。

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

スキーマの移行

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

    export PGHOST=<IP address of the self-managed Greenplum cluster>
    export PGPORT=<Port number of the self-managed Greenplum cluster>
    export PGUSER=<Superuser account of the self-managed Greenplum cluster>
    export PGPASSWORD=<Password of the superuser account>
    
    #-- Export the full schema for a Greenplum 4X cluster. 
    pg_dumpall -s -q --gp-syntax  > full_schema.sql
    
    #-- Export the full schema for a Greenplum 5X or 6X cluster. 
    pg_dumpall -s --gp-syntax  > full_schema.sql
  2. psqlを使用して、自己管理型Greenplumクラスターにログインします。 次のステートメントを実行して、カスタムライブラリが存在するかどうかを確認します。 カスタムライブラリが存在する場合は、AnalyticDB for PostgreSQLインスタンスにスキーマを手動で作成する必要があります。

    SELECT * FROM pg_catalog.pg_library;
  3. AnalyticDB for PostgreSQLインスタンスにログインし、DDLスキーマを実行します。 次の例では、Bashコマンドを使用します。

    export PGHOST=<IP address of the AnalyticDB for PostgreSQL instance>
    export PGPORT=<Port number of the AnalyticDB for PostgreSQL instance>
    export PGUSER=<Privileged account of the AnalyticDB for PostgreSQL instance>
    export PGPASSWORD=<Password of the privileged account>
    
    psql postgres -f full_schema.sql > psql.log 2>&1 &

    bashコマンドの実行中に、psql.logでエラーメッセージを確認します。 エラーメッセージが存在する場合は、エラーの原因を分析し、問題のトラブルシューティングを行います。 ほとんどのエラーメッセージは、特にGreenplum 4XのSQL構文に関連しています。 互換性のない項目については、「AnalyticDB For PostgreSQL V4.3とV6.0の互換性の比較」および「AnalyticDB for PostgreSQL V4.3とV6.0の互換性の確認」をご参照ください。

テーブルデータ移行

  1. COPY TOステートメントまたはgpfdist外部テーブルを使用して、セルフマネージドGreenplumクラスターからテーブルデータをエクスポートします。

    • コピー先

      psqlクライアントでCOPY TOステートメントを実行して、テーブルデータをエクスポートします。 サンプル文:

      • Greenplum 4X、5X、または6Xからテーブルデータをエクスポートします。

        COPY public.t1 TO '/data/gpload/public_t1.csv' FORMAT CSV ENCODING 'UTF8';
      • ON SEGMENTを使用して、Greenplum 5Xまたは6Xからテーブルデータをエクスポートします。

        COPY public.t1 TO '<SEG_DATA_DIR>/public_t1_<SEGID>.csv' FORMAT CSV ENCODING 'UTF8' 
        ON SEGMENT;
        説明

        <SEGID> 文字列は変更しないでください。 システムは、エクスポート中に対応する <SEGID> を自動的に生成します。 <SEG_DATA_DIR> 文字列は変更しないか、絶対パスをカスタマイズできます。

    • gpfdist外部テーブル

      1. Greenplumスタートアッププログラムのbinディレクトリに格納されているgpfdistサービスを起動します。 次の例では、Bashコマンドを使用します。

        mkdir -p /data/gpload
        gpfdist -d /data/gpload -p 8000 & 
      2. psqlを使用して自己管理型Greenplumクラスターに接続し、クラスターからテーブルデータをエクスポートします。 サンプル文:

        -- public.t1 specifies the table to be migrated.
        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 an external table.
        INSERT INTO ext_w_t1 SELECT * FROM public.t1;
  2. エクスポートしたデータをObject Storage Service (OSS) バケットにアップロードします。 詳細については、「オブジェクトのアップロード」をご参照ください。

    説明

    関連するOSSバケットは、AnalyticDB for PostgreSQLインスタンスと同じリージョンに存在する必要があります。

  3. OSS外部テーブルを使用して、OSSバケットからAnalyticDB for PostgreSQLインスタンスにデータをインポートします。 詳細については、「データレイク分析にOSS外部テーブルを使用する」トピックの「OSSデータをAnalyticDB For PostgreSQLテーブルにインポートする」セクションをご参照ください。

データチェック

AnalyticDB for PostgreSQLインスタンスと自己管理型Greenplumクラスター間でデータとビジネスが一貫しているかどうかを確認します。 データチェックには、データ整合性チェックとビジネス整合性チェックがあります。

  • データ整合性チェック: 完全データまたはサンプルデータを比較してデータ整合性を確認できます。 サンプル比較を使用する場合は、表のデータ量と数値フィールドの集計結果を調べて、データが一貫しているかどうかを確認します。

  • ビジネス整合性チェック: アプリケーションをAnalyticDB for PostgreSQLインスタンスに接続し、ビジネスクエリが正常に実行され、期待される応答が返されるかどうかを確認します。

その他の移行方法

Alibaba Cloud DataWorksを使用してデータを移行することもできます。 詳細については、「Data Integrationを使用したデータの移行とバッチ同期」をご参照ください。