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

PolarDB:自主管理 PostgreSQL データベースから PolarDB for PostgreSQL への移行

最終更新日:Mar 29, 2026

pg_dumpallpg_dump、および pg_restore を使用して、中間の Elastic Compute Service (ECS) インスタンスを経由し、自主管理 PostgreSQL データベースから PolarDB for PostgreSQL クラスターへ完全なオフライン移行を実行します。

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

仕組み

この移行は、以下の 4 つのステップで実行されます。

  1. 移行先クラスターと同じ仮想プライベートクラウド (VPC) 内に ECS インスタンスを準備します。

  2. ソース PostgreSQL データベースからロール情報およびデータベースデータをバックアップします。

  3. バックアップファイルを ECS インスタンスにアップロードし、PolarDB for PostgreSQL クラスターに復元します。

  4. データが正常に移行されたことを確認します。

前提条件

開始する前に、以下の条件を満たしていることを確認してください。

  • ソースデータベースのサイズよりも大きなストレージ容量を備えた PolarDB for PostgreSQL クラスター

  • 移行先クラスターと同じ VPC 内で動作する Linux ECS インスタンス(64 ビット Ubuntu 16.04)。移行完了後にリリース可能な従量課金インスタンスでも構いません。

  • ECS インスタンスにインストールされた PostgreSQL クライアント。このクライアントは、ソースデータベースの**メジャーバージョンと一致する**必要があります。インストール手順については、「PostgreSQL ドキュメント」をご参照ください。

重要

クライアントのバージョン不一致は、移行失敗の主な原因です。クライアントのバージョンがソースデータベースのバージョンと一致することを必ず確認してください。

ECS インスタンスの作成方法については、「ECS インスタンスの作成」をご参照ください。

注意事項

本手順では、**完全なデータ移行**を実行します。移行を開始する前に、ソースデータベースに対するすべての書き込み操作を停止し、移行中は読み取り専用状態を維持してください。これにより、データの不整合を防止できます。

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

以下のコマンドを、自主管理 PostgreSQL データベースをホストするサーバー上で実行します。

ロール情報のバックアップ

pg_dump はロールをエクスポートしません。すべてのロール定義を個別にバックアップするには、pg_dumpall -r を使用します。

pg_dumpall -U <username> -h <hostname> -p <port> -r -f <filename>
パラメーター説明
<username>ソースデータベースにログインするために使用するアカウント
<hostname>ソースデータベースのエンドポイント。同一サーバー上でコマンドを実行する場合は localhost を指定します。
<port>データベースサービスのポート番号
<filename>ロールバックアップの出力ファイル名

例:

pg_dumpall -U postgres -h localhost -p 5432 -r -f roleinfo.sql

Password: のプロンプトが表示されたら、データベースのパスワードを入力してバックアップ処理を開始します。

SUPERUSER を polar_superuser に置き換え

PolarDB for PostgreSQL では、標準 PostgreSQL の SUPERUSER 特権の代わりに polar_superuser を使用します。ロールを復元する前に、バックアップファイルをこの差異に合わせて更新してください。

vim コマンドを実行し、ロール情報のバックアップファイル内の SUPERUSERpolar_superuser に置き換えます。

バックアップファイルに SUPERUSER のエントリが含まれていない場合は、本ステップをスキップしてください。

Example of SUPERUSER replacement in the role backup file

データベースデータのバックアップ

pg_dump -U <username> -h <hostname> -p <port> <dbname> -Fd -j <njobs> -f <dumpdir>
パラメーター説明
<username>ソースデータベースにログインするために使用するアカウント
<hostname>ソースデータベースのエンドポイント。同一サーバー上でコマンドを実行する場合は localhost を指定します。
<port>データベースサービスのポート番号
<dbname>バックアップ対象のデータベース名
<njobs>同時実行するバックアップジョブ数。ジョブ数を増やすとバックアップ時間が短縮されますが、サーバー負荷が高まります。
<dumpdir>バックアップファイルの出力ディレクトリ
ソース PostgreSQL データベースのバージョンが 9.2 より前の場合、--no-synchronized-snapshots フラグを追加してください。

例:

pg_dump -U postgres -h localhost -p 5432 mytestdata -Fd -j 5 -f postgresdump

バックアップファイルは、指定したディレクトリ(本例では postgresdump)に保存されます。

Password: のプロンプトが表示されたら、データベースのパスワードを入力してバックアップ処理を開始します。

ステップ 2:PolarDB for PostgreSQL クラスターへのデータ移行

以下のコマンドを ECS インスタンス上で実行します。

バックアップファイルの ECS インスタンスへのアップロード

ロールのバックアップファイルおよびデータベースのバックアップディレクトリを ECS インスタンスにアップロードします。

ロール情報の復元

psql -U <username> -h <hostname> -p <port> -d <dbname> -f <filename>
パラメーター説明
<username>PolarDB for PostgreSQL クラスターにログインするために使用するアカウント
<hostname>クラスターのプライマリプライベートエンドポイント。詳細については、「エンドポイントの表示または申請
<port>データベースサービスのポート番号。詳細については、「エンドポイントおよびポート番号の表示
<dbname>送信先データベース名
<filename>ロールバックアップファイル名

例:

psql -U gctest -h pc-xxxxxxxx.pg.polardb.cn-qd-pldb1.rds.aliyuncs.com -d testdb -p 1921 -f roleinfo.sql

Password: のプロンプトが表示されたら、データベースのパスワードを入力してデータ移行を開始します。

データベースデータの復元

pg_restore -U <username> -h <hostname> -p <port> -d <dbname> -j <njobs> <dumpdir>
パラメーター説明
<username>PolarDB for PostgreSQL クラスターにログインするために使用するアカウント
<hostname>クラスターのプライマリプライベートエンドポイント。詳細については、「エンドポイントの表示または申請
<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
データベースアカウントのパスワードを再設定する必要がある場合は、「データベースアカウントの管理」をご参照ください。

移行が完了するまで、次のステップに進まないでください。

次のステップ

  • アプリケーションの接続文字列を PolarDB for PostgreSQL クラスターのエンドポイントに変更することで、書き込み操作を再開します。

  • 本移行のために従量課金 ECS インスタンスを作成した場合は、課金を停止するためにリリースしてください。