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

PolarDB:自主管理 PostgreSQL から PolarDB for PostgreSQL への移行

最終更新日:Jun 23, 2026

このトピックでは、pg_dumpall、pg_dump、pg_restore コマンドを使用して、自主管理 PostgreSQL データベースを に移行する方法について説明します。

ソースデータベースが ApsaraDB RDS for PostgreSQL インスタンスの場合は、「ApsaraDB RDS for PostgreSQL インスタンスから PolarDB for PostgreSQL クラスターへのデータ移行」をご参照ください。

前提条件

ターゲットの クラスターには、ご利用の自主管理 PostgreSQL データベースよりも多くのストレージ容量が必要です。

注意事項

これは完全なデータ移行です。データの不整合を防ぐため、移行を開始する前に、自己管理データベース上のすべてのサービスと書き込み操作を停止してください。

事前準備

  1. Linux を実行する Elastic Compute Service (ECS) インスタンスを作成します。このチュートリアルでは、64 ビット Ubuntu 16.04 を実行する ECS インスタンスを使用します。詳細については、「ECS インスタンスの作成」をご参照ください。

    説明
    • ECS インスタンスとターゲットの クラスターは、同じ VPC (Virtual Private Cloud) に属している必要があります。

    • 従量課金の ECS インスタンスを作成し、移行完了後にリリースすることができます。

  2. ECS インスタンスに PostgreSQL をインストールしてデータを復元します。詳細については、「PostgreSQL 公式ドキュメント」をご参照ください。

    説明

    インストールする PostgreSQL のバージョンが、ご利用の自主管理 PostgreSQL データベースのバージョンと同じであることを確認してください。

ステップ1:自己管理データベースのバックアップ

  1. ご利用の自主管理 PostgreSQL データベースサーバーで、次のコマンドを実行してすべてのロール情報をバックアップします。

    pg_dumpall -U <username> -h <hostname> -p <port> -r -f <filename>

    パラメーター:

    • <username>:自主管理 PostgreSQL データベースのログインアカウント。

    • <hostname>:自主管理 PostgreSQL データベースのエンドポイント。データベースサーバー上でコマンドを実行する場合は、localhost を使用します。

    • <port>:データベースのポート番号。

    • <filename>:出力バックアップファイルの名前。

    例:

    pg_dumpall -U postgres -h localhost -p 5432 -r -f roleinfo.sql
  2. Password: のプロンプトが表示されたら、データベースアカウントのパスワードを入力します。

  3. vim コマンドを使用して、ロール情報バックアップファイル内の SUPERUSER を polar_superuser に置き換えます。

    説明

    ロール情報バックアップファイルに SUPERUSER が含まれていない場合は、このステップをスキップできます。

    -- PostgreSQL データベースクラスターのダンプ
    --
    SET default_transaction_read_only = off;
    SET client_encoding = 'UTF8';
    SET standard_conforming_strings = on;
    --
    -- ロール
    --
    CREATE ROLE data1;
    ALTER ROLE data1 WITH NOSUPERUSER INHERIT CREATEROLE CREATEDB LOGIN NOREPLICATION NOBYPASSRLS PASSWORD 'md5xxx';
    CREATE ROLE manisha;
    ALTER ROLE manisha WITH NOSUPERUSER INHERIT NOCREATEROLE NOCREATEDB LOGIN NOREPLICATION NOBYPASSRLS PASSWORD 'mdxxx';
    CREATE ROLE postgres;
    ALTER ROLE postgres WITH SUPERUSER INHERIT CREATEROLE CREATEDB LOGIN REPLICATION BYPASSRLS PASSWORD 'md5xxx';
    CREATE ROLE testuser;
    ALTER ROLE testuser WITH NOSUPERUSER INHERIT NOCREATEROLE CREATEDB LOGIN NOREPLICATION NOBYPASSRLS;
    --
    -- PostgreSQL データベースクラスターのダンプ完了
  4. ご利用の自主管理 PostgreSQL データベースサーバーで、次のコマンドを実行してデータベースデータをバックアップします。

    pg_dump -U <username> -h <hostname> -p <port> <dbname> -Fd -j <njobs> -f <dumpdir>

    パラメーター:

    • <username>:自主管理 PostgreSQL データベースのログインアカウント。

    • <hostname>:自主管理 PostgreSQL データベースのエンドポイント。データベースサーバー上でコマンドを実行する場合は、localhost を使用します。

    • <port>:データベースのポート番号。

    • <dbname>:バックアップするデータベースの名前。

    • <njobs>:バックアップに使用する同時ジョブの数。

      説明
      • このパラメーターの値を大きくすると、ダンプ時間は短縮されますが、データベースサーバーへのロードも増加します。

      • ご利用の自主管理 PostgreSQL データベースのバージョンが 9.2 より前の場合は、--no-synchronized-snapshots パラメーターも指定する必要があります。

    • <dumpdir>:バックアップファイルの出力ディレクトリ。

    例:

    pg_dump -U postgres -h localhost -p 5432 mytestdata -Fd -j 5 -f postgresdump
  5. Password: のプロンプトが表示されたら、データベースアカウントのパスワードを入力します。

  6. バックアップが完了するまで待ちます。この例では、データは指定されたディレクトリ postgresdump にバックアップされます。

ステップ2: へのデータ移行

  1. バックアップファイルを含むディレクトリを ECS インスタンスにアップロードします。

    説明

    これには、ロール情報バックアップファイルとデータベースバックアップファイルが含まれます。

  2. ECS インスタンスで、次のコマンドを実行して、バックアップファイルから クラスターにロール情報をインポートします。

    psql -U <username> -h <hostname>  -p <port> -d <dbname>  -f <filename>

    パラメーター:

    • <username>: データベースのログインアカウント。

    • <hostname>: クラスターのプライマリプライベートエンドポイント。

    • <port>:データベースのポート番号。詳細については、「エンドポイントとポート番号の表示」をご参照ください。

    • <dbname>:接続するデータベースの名前。

    • <filename>:ロール情報バックアップファイルの名前。

    psql -U gctest -h pc-xxxxxxxx.pg.polardb.cn-qd-pldb1.rds.aliyuncs.com -d testdb -p 1921 -f roleinfo.sql
  3. Password: のプロンプトが表示されたら、データベースアカウントのパスワードを入力します。

  4. ECS インスタンスで、次のコマンドを実行して、データベースデータを クラスターに復元します。

    pg_restore -U <username> -h <hostname> -p <port> -d <dbname> -j <njobs> <dumpdir>

    パラメーター:

    • <username>: データベースのログインアカウント。

    • <hostname>: クラスターのプライマリプライベートエンドポイント。詳細については、「エンドポイントの表示または申請」をご参照ください。

    • <port>:データベースのポート番号。詳細については、「エンドポイントとポート番号の表示」をご参照ください。

    • <dbname>:データを復元するターゲットデータベースの名前。

      説明

      ターゲットデータベースは存在している必要があります。存在しない場合は、先に作成してください。

    • <njobs>:復元に使用する同時ジョブの数。

      説明

      このオプションは復元時間を短縮しますが、データベースサーバーへのロードも増加させます。

    • <dumpdir>:バックアップファイルを含むディレクトリ。

    例:

    pg_restore -U gctest -h pc-mxxxxxxxx.pg.polardb.cn-qd-pldb1.rds.aliyuncs.com -p 1921 -d mytestdata -j 6 postgresdump
  5. Password: のプロンプトが表示されたら、データベースアカウントのパスワードを入力します。

    説明

    パスワードを忘れた場合は、「データベースアカウントの管理」をご参照ください。

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