このトピックでは、pg_dump および pg_restore コマンドを使用して、RDS PostgreSQL データベースから PolarDB for PostgreSQL クラスターにデータを移行する方法について説明します。
ソースが自主管理 PostgreSQL データベースの場合は、「自主管理 PostgreSQL データベースから PolarDB for PostgreSQL クラスターへのデータ移行」をご参照ください。
範囲
RDS PostgreSQL インスタンス: この移行方法では、サーバーレスインスタンスはサポートされていません。
ストレージ容量: PolarDB for PostgreSQL クラスターのストレージ容量は、RDS PostgreSQL データベースのストレージ容量よりも大きい必要があります。
使用上の注意
これは完全なデータ移行です。データの不整合を防ぐため、移行を開始する前に、RDS PostgreSQL データベースに接続されているすべてのサービスを停止し、データの書き込みを停止してください。
準備
Linux Elastic Compute Service (ECS) インスタンスを作成します。この例では、64 ビット Ubuntu 16.04 を実行する ECS インスタンスを使用します。詳細については、「ECS インスタンスの作成」をご参照ください。
説明ECS インスタンスは、ソース RDS PostgreSQL データベースおよびターゲット PolarDB for PostgreSQL クラスターへのネットワーク接続が必要です。
従量課金 ECS インスタンスを作成し、移行完了後にリリースできます。
データ復元コマンドを実行するために、ECS インスタンスに PostgreSQL クライアントをインストールします。詳細については、「PostgreSQL 公式ドキュメント」をご参照ください。
説明インストールされている PostgreSQL クライアントのバージョンが、ソース RDS PostgreSQL データベースおよびターゲット PolarDB for PostgreSQL クラスターのバージョンと互換性があることを確認してください。
ステップ 1: RDS PostgreSQL データベースのバックアップ
これは完全なデータ移行です。データの不整合を防ぐため、移行を開始する前に、RDS PostgreSQL データベースに接続されているすべてのサービスを停止し、データの書き込みを停止してください。
ECS インスタンスで、次のコマンドを実行してデータベースをバックアップします。
pg_dump -U <username> -h <hostname> -p <port> <dbname> -Fd -j <njobs> -f <dumpdir>パラメーター:
<username>: RDS PostgreSQL データベースへのログインに使用するデータベースアカウント。
<hostname>: RDS PostgreSQL データベースのエンドポイント。データベースのエンドポイントを表示するには、「エンドポイントとポート番号の表示または変更」をご参照ください。
<port>: データベースサービスのポート番号。
<dbname>: 接続するデータベースの名前。デフォルト値は postgres です。
<njobs>: 同時バックアップジョブの数。
説明<njobs> パラメーターはダンプ時間を短縮しますが、データベースサーバーの負荷を増加させます。
RDS 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 postgresdumpPassword:の入力を求められたら、データベースアカウントのパスワードを入力してバックアップを開始します。バックアップが完了するまで待ちます。RDS PostgreSQL データベースのデータは、指定されたディレクトリにバックアップされます。この例では、ディレクトリは postgresdump です。
ステップ 2: PolarDB for PostgreSQL クラスターへのデータ移行
ターゲット PolarDB for PostgreSQL クラスターにデータベースアカウントを作成します。詳細については、「データベースアカウントの作成」および「アカウントの権限」をご参照ください。
ターゲット PolarDB for PostgreSQL クラスターで、データ復元用のデータベースを作成します。前のステップで作成したアカウントをデータベース所有者として指定します。詳細については、「データベースの作成」をご参照ください。
ECS インスタンスで、次のコマンドを実行して、RDS 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 postgresdumpPassword:の入力を求められたら、データベースアカウントのパスワードを入力してデータ移行を開始します。説明パスワードを忘れた場合は、「データベースアカウントの管理」をご参照ください。
データ移行が完了するまで待ちます。