このページでは、 pg_dumpall pg_dump 、および pg_restore コマンドを実行して、ユーザーが作成した PostgreSQL データベースから POLARDB for PostgreSQL にデータを移行する方法について説明します。

ApsaraDB RDS for PostgreSQL データベースからデータを移行する方法の詳細については、「ApsaraDB RDS for PostgreSQL から POLARDB for PostgreSQL へのデータ移行」をご参照ください。

前提条件

POLARDB for PostgreSQL インスタンスのストレージ容量は、ユーザー作成 PostgreSQL データベースのストレージ容量よりも大きい必要があります。

注意事項

これはフル移行です。 データの不一致を避けるために、移行前にユーザー作成データベースに関連したサービスを停止し、データの書き込みを停止することを推奨します。

準備

  1. Linux ECS インスタンスを作成します。 この例では、64 ビットUbuntu 16.04 を実行する ECS インスタンスを使用しています。 詳細は、「ECS インスタンスの作成」をご参照ください。
    • ECS インスタンスと移行先 POLARDB for PostgreSQLインスタンスは、同じ VPC 内にある必要があります。
    • 従量課金の ECS インスタンスを作成し、移行後にリリースできます。
  2. ECS インスタンスにPostgreSQL をインストールして、データ復元コマンドを実行します。 詳細は、「PostgreSQL 公式ドキュメント」をご参照ください。
    インストールされている PostgreSQL データベースのバージョンが、ユーザーが作成した PostgreSQL データベースのバージョンと同じであることを確認してください。

手順 1:ユーザー作成 PostgreSQL データベースをバックアップする

これはフル移行です。 データの不一致を避けるために、移行前にユーザー作成データベースに関連したサービスを停止し、データの書き込みを停止することを推奨します。

  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 情報が含まれていない場合、この手順をスキップできます。
    示例图
  4. 次のコマンドを実行して、ユーザー作成 PostgreSQL データベースのデータをバックアップします。
    pg_dump -U <username> -h <hostname> -p <port> <dbname> -Fd -j <njobs> -f <dumpdir>

    パラメーターの説明

    • <username>:ユーザー作成 PostgreSQL データベースのログインに使用されるアカウント。
    • <hostname>:ユーザー作成 PostgreSQL データベースのエンドポイント。 localhost は、ローカルホストに使用できます。
    • <port>:データベースサービスのポート番号。
    • <dbname>:バックアップするデータベースの名前。
    • <njobs>:同時バックアップジョブの数。
      • <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. バックアップが完了するまでお待ちください。 PostgreSQL データベースのデータは、指定されたディレクトリにバックアップされます。 この例では、データは postgresdump ディレクトリに格納されています。

手順 2:データをPOLARDB for PostgreSQL に移行する

  1. バックアップファイルのディレクトリを ECS インスタンスにアップロードします。
    バックアップファイルには、ロール情報バックアップファイルとデータベースバックアップファイルが含まれています。
  2. ECS インスタンスで次のコマンドを実行して、バックアップファイルのロール情報を POLARDB for PostgreSQL インスタンスに移行します。
    psql -U <username> -h <hostname>  -p <port> -d <dbname>  -f <filename>

    パラメーターの説明

    • <username>:POLARDB for PostgreSQL データベースのログインに使用されるアカウント。
    • <hostname>:POLARDB for PostgreSQL インスタンスのプライマリエンドポイント (プライベートネットワーク)。
    • <port>:データベースサービスのポート番号。 デフォルト値は 1921 です。
    • <database>:接続するデータベースの名前。 デフォルト値は、postgres です。
    • <filename>:ロール情報バックアップファイルの名前。
    psql -U gctest -h pc-xxxxxxxx.pg.polardb.cn-qd-pldb1.rds.aliyuncs.com -d postgres -p 1921 -f roleinfo.sql
  3. Password: プロンプトにパスワードを入力し、ロール情報のインポートを開始します。
  4. ECS インスタンスで次のコマンドを実行して、POLARDB for PostgreSQL インスタンスにデータを復元します。
    pg_restore -U <username> -h <hostname> -p <port> -d <dbname> -j <njobs> <dumpdir>

    パラメーターの説明

    • <username>:POLARDB for PostgreSQL データベースのログインに使用されるアカウント。
    • <hostname>:POLARDB for PostgreSQL インスタンスのプライマリエンドポイント (プライベートネットワーク)。 詳細については、「接続エンドポイントの表示」をご参照ください。
    • <port>:データベースサービスのポート番号。 デフォルト値は 1921 です。
    • <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 プロンプトにパスワードを入力し、データ移行を開始します。
    パスワードを忘れた場合のパスワードの変更方法については、「 データベースアカウントのパスワードをリセット」をご参照ください。

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