このトピックでは、pg_dump ユーティリティを使用して ApsaraDB RDS for PostgreSQL インスタンスの論理バックアップを作成し、バックアップファイルをローカルストレージにエクスポートする方法について説明します。
背景情報
PostgreSQL に付属の pg_dump ユーティリティは、個々のデータベースをバックアップするために使用されます。詳細については、「pg_dump」をご参照ください。
前提条件
Elastic Compute Service (ECS) インスタンスまたはオンプレミスホストの IP アドレスが、RDS インスタンスのホワイトリストに追加されていること。詳細については、「IP アドレスホワイトリストを設定する」をご参照ください。
ECS インスタンスまたはオンプレミスホストで、RDS インスタンスと同じバージョンの PostgreSQL が実行されていること。
説明このトピックでは、CentOS 7 と PostgreSQL 15 を使用しています。
使用上の注意
RDS インスタンスの特権アカウントを使用して論理バックアップを作成することをお勧めします。特権アカウントの作成方法の詳細については、「アカウントを作成する」をご参照ください。
データベースをバックアップする
ECS インスタンスまたはオンプレミスホストにログオンします。次に、次のコマンドを実行して、RDS インスタンスのデータベースをバックアップします。
pg_dump -h '<hostname>' -U <username> -p <port> -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 '<hostname>' -U <username> -p <port> -t <Schema>.<table> -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
バックアップするテーブルのスキーマ。このパラメーターのデフォルト値は [パブリック] です。テーブルのスキーマがパブリックの場合は、このパラメーターを指定する必要はありません。
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 インスタンスまたはオンプレミスホストにログオンします。次に、次のコマンドを実行して、RDS インスタンスから 1 つ以上のテーブルを除外してデータベースをバックアップします。
pg_dump -h '<hostname>' -U <username> -p <port> -T <table> -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 '<hostname>' -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 インスタンスに障害が発生し、インスタンスのデータを復元する必要がある場合は、「論理バックアップファイルからデータを復元する」に記載されている手順に従ってください。