Amazon Relational Database Service (Amazon RDS) for PostgreSQL での復元操作が失敗したか、問題が発生しました。自動スナップショットの復元、ポイントインタイムリカバリ (PITR)、または PostgreSQL ネイティブツールの使用中に発生するエラーを解決したいと考えています。
解決策
Amazon RDS for PostgreSQL は次の復元方法をサポートしています。
- 自動または手動のデータベーススナップショット
- バックアップ保持期間内の PITR
- 論理バックアップ用の pg_dump や pg_restore などの PostgreSQL ネイティブツール
復元の問題の種類に応じて、次のセクションを使用してトラブルシューティングを行ってください。
pg_restore バージョンの互換性を確認する
pg_restore ユーティリティのバージョンが、バックアップの作成に使用されたバージョンと互換性がない場合は、次のエラーメッセージのいずれかが表示されることがあります。
"Unsupported version (1.15) in file header"
"Could not find header for file 'toc.dat' in tar archive"
PostgreSQL ユーティリティにおいて、pg_dump バックアップ作成ツールと pg_restore 復元ツール間のバージョン調整が必要な場合は、これらのエラーメッセージのいずれかが表示されます。
この問題を解決するには、pg_restore のバージョンを確認してください。PostgreSQL クライアントユーティリティがインストールされているオペレーティングシステム (OS) で次のコマンドを実行します。
pg_restore --version
pg_restore のバージョンが、バックアップの作成に使用した pg_dump のバージョンと同じか、それより新しくなるようにしてください。必要に応じて、pg_restore ユーティリティをバックアップバージョンと同じかそれ以上にアップグレードします。詳細については、「PostgreSQL pg_dump and pg_restore utility」(PostgreSQL の pg_dump および pg_restore ユーティリティ) を参照してください。
バックアップ形式の不一致を解決する
pg_restore をプレーンテキストの SQL バックアップファイルで使用すると、次のエラーメッセージが表示されることがあります。
"Input file appears to be a text format dump.Please use psql"
この問題を解決するには、pg_restore の代わりに psql ユーティリティを使用してバックアップファイルをインポートします。詳細については、「Amazon RDS の PostgreSQL にデータをインポートする」を参照してください。
注: 今後バックアップを作成するときにこの問題を回避するには、バックアップの作成時に正しい形式を指定してください。pg_restore で復元する場合は、pg_dump でカスタム形式の -Fc、または tar 形式の -Ft オプションを使用してください。
復元のパフォーマンスを監視する
スナップショットの復元または PITR 操作中、データベースインスタンスはレイジーローディングを使用します。データブロックは、アクセスされたときにオンデマンドでロードされます。頻繁にアクセスされるデータがキャッシュされるまで、インスタンスのパフォーマンスが低速になる可能性があります。
復元の進行状況を監視するには、次のコマンドを実行します。
aws rds describe-db-instances --db-instance-identifier instance-id
注: instance-id をデータベースインスタンス識別子に置き換えてください。
復元操作後のパフォーマンスを向上させるための情報については、「PostgreSQL を使用するためのベストプラクティス」を参照してください。
データベースエンドポイントを管理する
復元操作後に同じエンドポイント名を維持する必要がある場合は、データベースインスタンスの名前を変更できます。
リードレプリカを使用する場合は、復元操作後に必ず設定を更新してください。
関連情報
DB インスタンスへの復元
Amazon RDS の DB インスタンスを特定の時点に復元する
Best practices for migrating PostgreSQL databases to Amazon RDS and Amazon Aurora (PostgreSQL データベースを Amazon RDS と Amazon Aurora に移行するためのベストプラクティス)