PostgreSQLバックアップとリストア:エラー「input file appears to be a text format dump. Please use psql」の解決策
PostgreSQLのバックアップとリストア:エラー「input file appears to be a text format dump. Please use psql」解説
PostgreSQLでpg_restoreを使ってバックアップをリストアしようとすると、"input file appears to be a text format dump. Please use psql"というエラーが発生することがあります。これは、入力ファイルがテキスト形式のダンプファイルであることを意味し、pg_restoreで直接リストアできないためです。
原因
このエラーが発生する理由は、以下の2つが考えられます。
- ダンプファイル形式が不正
pg_dumpコマンドでバックアップを取得する際に、--format=custom
オプションを指定してテキスト形式でダンプファイルを作成した場合、pg_restoreで直接リストアすることはできません。
pg_dumpコマンドで作成したダンプファイルを gzip や bzip2 などの圧縮形式で圧縮した場合、pg_restoreで直接リストアすることはできません。
解決策
このエラーを解決するには、以下のいずれかの方法でダンプファイルをリストアする必要があります。
- psqlコマンドを使用する
psqlコマンドは、PostgreSQLデータベースに直接接続して、SQLコマンドを実行することができます。psqlコマンドを使用してテキスト形式のダンプファイルをリストアするには、以下のコマンドを実行します。
psql -d <データベース名> < <ダンプファイル名>
- pg_restoreコマンドオプションを使用する
pg_restoreコマンドには、--format
オプションを使用して、入力ファイルの形式を指定することができます。テキスト形式のダンプファイルをリストアするには、以下のコマンドを実行します。
pg_restore --format=text <ダンプファイル名>
- 圧縮ファイルを解凍してからリストアする
圧縮形式で圧縮されたダンプファイルをリストアするには、まず圧縮ファイルを解凍してから、pg_restoreコマンドでリストアする必要があります。
補足
- テキスト形式のダンプファイルは、人間が読める形式で作成されますが、リストア処理に時間がかかる場合があります。
- pg_restoreコマンドは、バイナリ形式のダンプファイルの方が高速にリストアすることができます。
- 詳細については、PostgreSQL公式ドキュメントの「pg_restore」を参照してください。
用語解説
- PostgreSQL: オープンソースのオブジェクトリレーショナルデータベース管理システム
- pg_dump: PostgreSQLデータベースのバックアップを取得するためのコマンド
- テキスト形式ダンプ: 人間が読める形式で作成されたダンプファイル
- psql: PostgreSQLデータベースに直接接続して、SQLコマンドを実行するためのコマンド
テキスト形式ダンプファイルのリストア
# psqlコマンドを使用してテキスト形式のダンプファイルをリストア
psql -d my_database < my_dump.sql
# pg_restoreコマンドオプションを使用してテキスト形式のダンプファイルをリストア
pg_restore --format=text my_dump.sql
圧縮ファイルのリストア
# gzip形式で圧縮されたダンプファイルをリストア
gunzip < my_dump.sql.gz | pg_restore
# bzip2形式で圧縮されたダンプファイルをリストア
bunzip2 < my_dump.sql.bz2 | pg_restore
- 上記のサンプルコードは、PostgreSQL 14.5を想定しています。
- データベース名やダンプファイル名は、実際の環境に合わせて変更する必要があります。
PostgreSQLのバックアップとリストア:その他の方法
pgAdmin IIIなどのGUIツールを使用する
pgAdmin IIIは、PostgreSQLデータベースを管理するためのGUIツールです。pgAdmin IIIを使用すると、グラフィカルな操作で簡単にバックアップとリストアを行うことができます。
WALバックアップは、PostgreSQLのトランザクションログをバックアップする方法です。WALバックアップを使用すると、データベースをポイントインタイムまで復元することができます。
クラウドサービスを使用する
Amazon RDS for PostgreSQLなどのクラウドサービスを使用すると、データベースのバックアップとリストアを簡単に実行することができます。
各方法のメリットとデメリット
方法 | メリット | デメリット |
---|---|---|
psqlコマンド | シンプルで使いやすい | コマンド操作に慣れないと難しい |
pg_restoreコマンドオプション | 高速なリストアが可能 | コマンド操作に慣れないと難しい |
pgAdmin IIIなどのGUIツール | 簡単操作で使いやすい | ツールのインストールが必要 |
WALバックアップ | ポイントインタイム復元が可能 | 設定や運用が複雑 |
クラウドサービス | 簡単操作で使いやすい | コストがかかる |
postgresql backup pg-restore