この章では、PPAS の RDS インスタンスからの論理バックアップおよびリカバリの手順について説明します。
操作手順
PPAS プログラムをインストールします。
注意:エクスポートには PPAS バイナリシステムを使用する必要があります。PostgreSQL コミュニティバイナリシステムを使用すると、エラーが発生します。
すべてのロールの権限をロールに付与する(データをエクスポートする)。
たとえば、ロール A を使用してデータをエクスポートするが、データベースに B と C の 2 つの他のロールがある場合は、次のコマンドを実行してロール A にロール B とロール C の権限を付与する必要があります。
-- Use Role B for logon to run the following command:
grant B to A;
-- Then use Role A for logon to run the following command:
grant C to A;
このようにして、ロール A はロール B とロールCのすべてのデータテーブルにアクセスする権限を持ちます。
pg_dump があるディレクトリで、次のバックアップコマンドを実行します。
./pg_dump -h <host> -p <port> -U <user> -f dump.sql <dbname>
リカバリが必要な場合は、psql があるディレクトリで次のコマンドを実行できます。
./psql -h <host> -p <port> -U <user> -d postgres -c "drop database <dbname>"
./psql -h <host> -p <port> -U <user> -d postgres -c "create database <dbname>"
./psql -h <host> -p <port> -U <user> -f dump.sql -d <dbname>
よくある質問
PPAS からデータをエクスポートすると、次のエラーが発生します。
ERROR: permission denied for relation product_component_version
LOCK TABLE sys.product_component_version IN ACCESS SHARE MODE
解決策:このエラーの原因は、PG の pg_dump プログラムを使用してPPAS からデータをエクスポートしたことです。PPAS バイナリシステムを使用してデータをエクスポートすることができます。PPAS のダウンロード方法については、手順を参照してください。
PPAS からデータをエクスポートすると、次のエラーが発生します。
ERROR: permission denied for relation <user table>.
解決策:このエラーの原因は、データのエクスポートに使用されたアカウントに他のロールのデータにアクセスする権限がないことです。ロールに受け入れられれば、ロールに他のロールの権限を与え、このロールを使用してデータをエクスポートする、つまり次のコマンドを実行することができます。
GRANT ROLE <other roles>,<other roles> to <user for pg_dump>
pg_dump を使用すると、次のエラーが発生します。
pgdump -U xxx -h yyy -p3433 <dbname> -f my.sql
pg_dump: too many parameters (the first one is ”-f) in the command line
解決策:Windows プラットフォームで pg_dump を実行する場合、他のすべてのパラメータに
<dbname>
を付加します。pg_dump を使用すると、パラメータエラーが発生します。
解決策:考えられる原因は、指定されたパラメータが間違っていることです。たとえば、
pg_dump -Uxxx -h yyy
のようになります。このパラメータは、-U の隣に空白が必要であるため(他のパラメータもこのスタイルに従うため)、使用できません。