このトピックでは、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インスタンスにデータを書き込まないでください。
準備
Linux Elastic Compute Service (ECS) インスタンスを作成します。 この例では、64ビットUbuntu 16.04を実行するECSインスタンスが使用されています。 詳細については、次をご参照ください: ECS インスタンスを作成します。
説明ECSインスタンス、ソースApsaraDB RDS for PostgreSQLインスタンス、およびターゲットPolarDB for PostgreSQLクラスターは、同じ仮想プライベートクラウド (VPC) に存在する必要があります。
従量課金制のLinux ECSインスタンスを作成し、移行後にリリースできます。
Linux ECSインスタンスにPostgreSQLクライアントをインストールして、データ復元コマンドを実行します。 詳細は、「PostgreSQL 公式ドキュメント」をご参照ください。
説明インストール済みのPostgreSQLクライアントが、ソースApsaraDB RDS for PostgreSQLインスタンスおよびターゲットPolarDB for PostgreSQLクラスターのバージョンと一致していることを確認します。
手順1: ApsaraDB RDS for PostgreSQLインスタンスのデータをバックアップする
この手順では、完全なデータが移行されます。 移行の前後でデータの不整合を防ぐには、移行中にビジネスアクティビティを停止し、ApsaraDB RDS for PostgreSQLインスタンスにデータを書き込まないでください。
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
Enter password:
プロンプトが表示されたら、データベースのパスワードを入力してバックアッププロセスを開始します。バックアッププロセスが完了するまで待ちます。 ApsaraDB RDS for PostgreSQLインスタンスのデータは、指定されたディレクトリにバックアップされます。 この例では、データは postgresdump ディレクトリに格納されています。
手順2: PolarDB for PostgreSQLクラスターへのデータの移行
移行先のPolarDB for PostgreSQLクラスターにアカウントを作成します。 詳細については、「データベースアカウントの作成」および「アカウント権限」をご参照ください。
移行先のPolarDB for PostgreSQLクラスターにデータ復元用のデータベースを作成します。 データベースの所有者を、前の手順で作成したアカウントに設定します。 詳細については、「データベースの作成」をご参照ください。
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
Enter password:
プロンプトが表示されたら、データベースのパスワードを入力してデータ移行を開始します。説明データベースのパスワードを忘れた場合は、「データベースアカウントの管理」をご参照ください。
データの移行が完了するまで待ちます。