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

PolarDB:自己管理型PostgreSQLデータベースからPolarDB for PostgreSQLクラスターへのデータの移行

最終更新日:Aug 20, 2024

このトピックでは、pg_dumpallpg_dump、およびpg_restoreコマンドを使用して、セルフマネージド型PostgreSQLデータベースからPolarDB for PostgreSQLクラスターにデータを移行する方法について説明します。

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

前提条件

PolarDB for PostgreSQLクラスターの使用可能なストレージ容量は、自己管理型PostgreSQLデータベースの使用可能なストレージ容量よりも大きくなっています。

使用上の注意

この手順では、完全なデータが移行されます。 移行前と移行後のデータの不整合を防ぐため、移行中は業務活動を停止し、自己管理型PostgreSQLデータベースにデータを書き込まないでください。

準備

  1. Linux Elastic Compute Service (ECS) インスタンスを作成します。 この例では、64ビットUbuntu 16.04を実行するECSインスタンスが使用されています。 詳細については、次をご参照ください: ECS インスタンスを作成します

    説明
    • ECSインスタンスと移行先のPolarDB for PostgreSQLクラスターは、同じ仮想プライベートクラウド (VPC) に存在する必要があります。

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

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

    説明

    インストール済みのPostgreSQLクライアントがソースPostgreSQLデータベースのバージョンと一致していることを確認します。

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

この手順では、完全なデータが移行されます。 移行前と移行後のデータの不整合を防ぐため、移行中は業務活動を停止し、自己管理型PostgreSQLデータベースにデータを書き込まないでください。

  1. 自己管理サーバーが存在するサーバーで次のコマンドを実行して、データベース内のすべてのロール情報をバックアップします。

    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コマンドを実行して、ロール情報バックアップファイルのSUPERUSERpolar_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>:並行して実行するバックアップジョブの数。

      説明
      • バックアップジョブを同時に実行すると、データのバックアップに必要な時間を短縮できますが、データベースサーバーの負荷が増加します。

      • 自己管理型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>:データベースサービスのポート番号。 詳細については、「エンドポイントとポート番号の表示」をご参照ください。

    • <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インスタンスで次のコマンドを実行し、ソースデータベースから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>:データベースサービスのポート番号。 詳細については、「エンドポイントとポート番号の表示」をご参照ください。

    • <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: プロンプトが表示されたら、パスワードを入力してデータ移行を開始します。

    説明

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

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