このトピックでは、pg_dumpユーティリティを使用してApsaraDB RDS for PostgreSQLインスタンスの論理バックアップを作成し、バックアップファイルをコンピューターにエクスポートする方法について説明します。
背景情報
PostgreSQLに付属のpg_dumpユーティリティを使用して、個々のデータベースをバックアップします。 詳細については、「pg_dump」をご参照ください。
前提条件
ECS (Elastic Compute Service) インスタンスまたはオンプレミスホストのIPアドレスがRDSインスタンスのホワイトリストに追加されます。 詳細については、「IPアドレスホワイトリストの設定」をご参照ください。
ECSインスタンスまたはオンプレミスホストは、RDSインスタンスと同じバージョンのPostgreSQLを実行します。
説明このトピックでは、CentOS 7とPostgreSQL 15を使用します。
使用上の注意
RDSインスタンスの特権アカウントを使用することを推奨します。 これにより、必要なすべての権限が確保されます。
データベースのバックアップ
ECSインスタンスまたはオンプレミスホストにログインします。 次に、次のコマンドを実行して、RDSインスタンスのデータベースをバックアップします。
pg_dump -h '<ホスト名>' -U <ユーザー名> -p <ポート> -Fc <dbname> > <dumpdir>
パラメーター
説明
hostname
RDSインスタンスへの接続に使用されるエンドポイント。
説明内部エンドポイントを使用してECSインスタンスをRDSインスタンスに接続する場合は、ECSインスタンスとRDSインスタンスが同じネットワークタイプを使用していることを確認してください。 両方のインスタンスが仮想プライベートクラウド (VPC) ネットワークタイプを使用している場合は、同じVPCに存在することを確認してください。 詳細については、「ApsaraDB RDS For PostgreSQLインスタンスのエンドポイントとポート番号の表示と変更」をご参照ください。
パブリックエンドポイントを使用してオンプレミスホストまたはECSインスタンスをRDSインスタンスに接続する場合は、パブリックエンドポイントがRDSインスタンスに割り当てられていることを確認してください。 詳細については、「ApsaraDB RDS For PostgreSQLインスタンスのエンドポイントとポート番号の表示と変更」および「ApsaraDB RDS for PostgreSQLインスタンスのパブリックエンドポイントの申請またはリリース」をご参照ください。
username
RDSインスタンスの特権アカウントのユーザー名。
port
RDSインスタンスへの接続に使用されるポート。
-Fc
出力ファイルの形式です。
-Fc
は、カスタム形式の使用を指定します。 この形式は、pg_restoreを使用して論理バックアップファイルをインポートし、データベースを復元する場合に最適です。 詳細については、「pg_dump」をご参照ください。dbname
バックアップするデータベースの名前。
dumpdir
エクスポートする論理バックアップファイルのディレクトリと名前。
例:
pg_dump -h 'pgm -bpxxxxxx.pg.rds.aliyuncs.com ' -U zht -p 5432 -Fc zht01 > /tmp/testdb.dump
CLIに
password:
が表示されている場合は、RDSインスタンスの特権アカウントのパスワードを入力し、Enterキーを押します。ll /tmp/testdb.dump
コマンドを実行して、バックアップファイルが生成されているかどうかを確認できます。
1つ以上のテーブルをバックアップする
ECSインスタンスまたはオンプレミスホストにログインします。 次に、次のコマンドを実行して、RDSインスタンスのデータベースから1つ以上のテーブルをバックアップします。
pg_dump -h '<ホスト名>' -U <ユーザー名> -p <ポート> -t <スキーマ>.<テーブル> -Fc <dbname> > <dumpdir>
パラメーター
説明
hostname
RDSインスタンスへの接続に使用されるエンドポイント。
説明内部エンドポイントを使用してECSインスタンスをRDSインスタンスに接続する場合は、ECSインスタンスとRDSインスタンスが同じネットワークタイプを使用していることを確認してください。 両方のインスタンスがVPCネットワークタイプを使用する場合は、同じVPCに存在することを確認してください。 詳細については、「ApsaraDB RDS For PostgreSQLインスタンスのエンドポイントとポート番号の表示と変更」をご参照ください。
パブリックエンドポイントを使用してオンプレミスホストまたはECSインスタンスをRDSインスタンスに接続する場合は、パブリックエンドポイントがRDSインスタンスに割り当てられていることを確認してください。 詳細については、「ApsaraDB RDS For PostgreSQLインスタンスの内部およびパブリックエンドポイントとポート番号の表示と変更」および「ApsaraDB RDS for PostgreSQLインスタンスのパブリックエンドポイントの申請またはリリース」をご参照ください。
username
RDSインスタンスの特権アカウントのユーザー名。
port
RDSインスタンスへの接続に使用されるポート。
Schema
バックアップするテーブルのスキーマ。 このパラメーターのデフォルト値はPublicです。 テーブルのスキーマがPublicの場合、このパラメーターを指定する必要はありません。
table
バックアップするテーブルの名前。 -t <Schema>.<table> を使用して、複数のテーブルを指定できます。
-Fc
出力ファイルの形式です。
-Fc
は、カスタム形式の使用を指定します。 この形式は、pg_restoreを使用して論理バックアップファイルをインポートし、データベースを復元する場合に最適です。 詳細については、「pg_dump」をご参照ください。dbname
バックアップするデータベースの名前。
dumpdir
エクスポートする論理バックアップファイルのディレクトリと名前。
例:
pg_dump -h 'pgm -bpxxxxxx.pg.rds.aliyuncs.com ' -U zht -p 5432 -t zhttest0808 -Fc zht01 > /tmp/testdb2.dump
CLIに
password:
が表示されている場合は、RDSインスタンスの特権アカウントのパスワードを入力し、Enterキーを押します。ll /tmp/testdb2.dump
コマンドを実行して、バックアップファイルが生成されているかどうかを確認できます。
1つ以上のテーブルを除外したデータベースのバックアップ
ECSインスタンスまたはオンプレミスホストにログインします。 次に、次のコマンドを実行して、1つ以上のテーブルを除外したRDSインスタンスからデータベースをバックアップします。
pg_dump -h '<ホスト名>' -U <ユーザー名> -p <ポート> -T <テーブル> -Fc <dbname> > <dumpdir>
パラメーター
説明
hostname
RDSインスタンスへの接続に使用されるエンドポイント。
説明内部エンドポイントを使用してECSインスタンスをRDSインスタンスに接続する場合は、ECSインスタンスとRDSインスタンスが同じネットワークタイプを使用していることを確認してください。 両方のインスタンスがVPCネットワークタイプを使用する場合は、同じVPCに存在することを確認してください。 詳細については、「ApsaraDB RDS For PostgreSQLインスタンスのエンドポイントとポート番号の表示と変更」をご参照ください。
パブリックエンドポイントを使用してオンプレミスホストまたはECSインスタンスをRDSインスタンスに接続する場合は、パブリックエンドポイントがRDSインスタンスに割り当てられていることを確認してください。 詳細については、「ApsaraDB RDS For PostgreSQLインスタンスの内部およびパブリックエンドポイントとポート番号の表示と変更」および「ApsaraDB RDS for PostgreSQLインスタンスのパブリックエンドポイントの申請またはリリース」をご参照ください。
username
RDSインスタンスの特権アカウントのユーザー名。
port
RDSインスタンスへの接続に使用されるポート。
table
除外するテーブルの名前。
-T <table>
を使用して、複数のテーブルを除外できます。-Fc
出力ファイルの形式です。
-Fc
は、カスタム形式の使用を指定します。 この形式は、pg_restoreを使用して論理バックアップファイルをインポートし、データベースを復元する場合に最適です。 詳細については、「pg_dump」をご参照ください。dbname
バックアップするデータベースの名前。
dumpdir
エクスポートする論理バックアップファイルのディレクトリと名前。
例:
pg_dump -h 'pgm -bpxxxxxx.pg.rds.aliyuncs.com ' -U zht -p 5432 -T zhttest0808 -Fc zht01 > /tmp/testdb3.dump
CLIに
password:
が表示されている場合は、RDSインスタンスの特権アカウントのパスワードを入力し、Enterキーを押します。ll /tmp/testdb3.dump
コマンドを実行して、バックアップファイルが生成されているかどうかを確認できます。
データが除外されたデータベースのスキーマのバックアップ
ECSインスタンスまたはオンプレミスホストにログインします。 次に、次のコマンドを実行して、RDSインスタンスからデータベースのスキーマをバックアップします。
pg_dump -h '<ホスト名>' -U <username> -p <port> -s -Fc <dbname> > <dumpdir>
パラメーター
説明
hostname
RDSインスタンスへの接続に使用されるエンドポイント。
説明内部エンドポイントを使用してECSインスタンスをRDSインスタンスに接続する場合は、ECSインスタンスとRDSインスタンスが同じネットワークタイプを使用していることを確認してください。 両方のインスタンスがVPCネットワークタイプを使用する場合は、同じVPCに存在することを確認してください。 詳細については、「ApsaraDB RDS For PostgreSQLインスタンスの内部およびパブリックエンドポイントとポート番号の表示と変更」をご参照ください。
パブリックエンドポイントを使用してオンプレミスホストまたはECSインスタンスをRDSインスタンスに接続する場合は、パブリックエンドポイントを申請またはリリースします。
username
RDSインスタンスの特権アカウントのユーザー名。
port
RDSインスタンスへの接続に使用されるポート。
-s
データベースのスキーマのみをバックアップするように指定します。 データベースのデータはバックアップされません。 詳細については、「pg_dump」をご参照ください。
-Fc
出力ファイルの形式です。
-Fcは、カスタム形式の使用を指定します。 この形式は、pg_restoreを使用して論理バックアップファイルをインポートし、データベースを復元する場合に最適です。
詳細については、「pg_dump」をご参照ください。dbname
バックアップするデータベースの名前。
dumpdir
エクスポートする論理バックアップファイルのディレクトリと名前。
例:
pg_dump -h 'pgm -bpxxxxxx.pg.rds.aliyuncs.com ' -U zht -p 5432 -s -Fc zht01 > /tmp/testdb4.dump
CLIに
password:
が表示されている場合は、RDSインスタンスの特権アカウントのパスワードを入力し、Enterキーを押します。ll /tmp/testdb4.dump
コマンドを実行して、バックアップファイルが生成されているかどうかを確認できます。
参考資料
RDSインスタンスに障害があり、インスタンスのデータを復元する場合は、「論理バックアップファイルからデータを復元」の手順に従ってください。