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

PolarDB:ApsaraDB RDS for PostgreSQLインスタンスからPolarDB for PostgreSQLクラスターへのデータの移行

最終更新日:Aug 26, 2024

このトピックでは、pg_dumpおよびpg_restoreコマンドを使用して、ApsaraDB RDS for PostgreSQLインスタンスからPolarDB for PostgreSQLクラスターにデータを移行する方法について説明します。

自己管理型PostgreSQLデータベースからPolarDB for PostgreSQLクラスターにデータを移行するには、「自己管理型PostgreSQLデータベースからPolarDB for PostgreSQLクラスターへのデータの移行」をご参照ください。

前提条件

PolarDB for PostgreSQLクラスターの使用可能なストレージ容量は、ApsaraDB RDS for PostgreSQLインスタンスの使用可能なストレージ容量よりも大きくなっています。

使用上の注意

この手順では、完全なデータが移行されます。 移行の前後でデータの不整合を防ぐには、移行中にビジネスアクティビティを停止し、ApsaraDB RDS for PostgreSQLインスタンスにデータを書き込まないでください。

準備

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

    説明
    • ECSインスタンス、ソースApsaraDB RDS for PostgreSQLインスタンス、およびターゲットPolarDB for PostgreSQLクラスターは、同じ仮想プライベートクラウド (VPC) に存在する必要があります。

    • 従量課金制のLinux ECSインスタンスを作成し、移行後にリリースできます。

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

    説明

    インストール済みのPostgreSQLクライアントが、ソースApsaraDB RDS for PostgreSQLインスタンスおよびターゲットPolarDB for PostgreSQLクラスターのバージョンと一致していることを確認します。

手順1: ApsaraDB RDS for PostgreSQLインスタンスのデータをバックアップする

この手順では、完全なデータが移行されます。 移行の前後でデータの不整合を防ぐには、移行中にビジネスアクティビティを停止し、ApsaraDB RDS for PostgreSQLインスタンスにデータを書き込まないでください。

  1. ECSインスタンスで次のコマンドを実行して、ApsaraDB RDS for PostgreSQLインスタンスのデータをバックアップします。

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

    パラメーター:

    • <username>: ApsaraDB RDS for PostgreSQLインスタンスへのログインに使用されるアカウントのユーザー名。

    • <hostname>: ApsaraDB RDS for PostgreSQLインスタンスのエンドポイント。 データベースのエンドポイントを表示する方法については、「エンドポイントとポート番号の表示と変更」をご参照ください。

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

    • <dbname>: 接続するデータベースの名前。 デフォルト値: postgres

    • <njobs>:並行して実行するバックアップジョブの数。

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

      • ApsaraDB RDS for PostgreSQLインスタンスのバージョンが9.2より前の場合、-- no-synchronized-snapshotsパラメーターを指定する必要があります。

    • <dumpdir>: 生成されたバックアップファイルが格納されているディレクトリ。

    例:

    pg_dump -U postgres -h pgm-xxxxxxxxx.pg.rds.aliyuncs.com -p 5432 postgres -Fd -j 5 -f postgresdump
  2. Enter password: プロンプトが表示されたら、データベースのパスワードを入力してバックアッププロセスを開始します。

  3. バックアッププロセスが完了するまで待ちます。 ApsaraDB RDS for PostgreSQLインスタンスのデータは、指定されたディレクトリにバックアップされます。 この例では、データは postgresdump ディレクトリに格納されています。

手順2: PolarDB for PostgreSQLクラスターへのデータの移行

  1. 移行先のPolarDB for PostgreSQLクラスターにアカウントを作成します。 詳細については、「データベースアカウントの作成」および「アカウント権限」をご参照ください。

  2. 移行先のPolarDB for PostgreSQLクラスターにデータ復元用のデータベースを作成します。 データベースの所有者を、前の手順で作成したアカウントに設定します。 詳細については、「データベースの作成」をご参照ください。

  3. ECSインスタンスで次のコマンドを実行して、ApsaraDB RDS for PostgreSQLインスタンスから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 postgres -j 6 postgresdump
  4. Enter password: プロンプトが表示されたら、データベースのパスワードを入力してデータ移行を開始します。

    説明

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

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