★悩み★
・PostgreSQLをリストアする手順を知りたいな。
・PostgreSQLのリストアにはpg_restoreコマンドを使えばいいのかな?
・リストアコマンドとして、pg_restoreとpsqlがあるけど使い分けは?
こういった「悩み」に答えます。
★本記事の内容★
① PostgreSQLのリストアコマンド「pg_restore」の概要を紹介
② PostgreSQLをpsql/pg_restoreコマンドでリストアするための準備を紹介
③ PostgreSQLをpsql/pg_restoreコマンドでリストアする手順を紹介
これからご紹介する「PostgreSQLのリストア手順【psql/pg_restoreコマンドを利用】」を実践したことで、30分以内で「psql/pg_restoreコマンドを用いてPostgreSQLをリストア」できました。
記事の前半では「PostgreSQLのリストアコマンドであるpg_restoreの概要」を解説しつつ、記事の後半では「psqlとpg_restoreコマンドを用いたPostgreSQLのリストア手順」を紹介します。
この記事を読み終えることで、「PostgreSQLをリストアできる」状態になります。
ちなみに、pg_dumpコマンドを利用したPostgreSQLのバックアップ手順を知りたい方は、以下の記事をご覧ください。
PostgreSQLのリストアコマンド「pg_restore」の概要
「PostgreSQLのリストアコマンド「pg_restore」の概要」に関してご紹介します。
★PostgreSQLのリストアコマンド「pg_restore」に関するご紹介事項★
・PostgreSQLのリストアコマンド「pg_restore」とは?
・「pg_restoreコマンド」と「psqlコマンドによるリストア」の違い
以降で、上記「PostgreSQLのリストアコマンド「pg_restore」に関するご紹介事項」の各項目に関してご説明します。
PostgreSQLのリストアコマンド「pg_restore」とは?
「PostgreSQLのリストアコマンド「pg_restore」とは?」に関してご説明します。
pg_restoreは、PostgreSQL専用のコマンドです。PostgreSQLをインストールすることで、利用できるコマンドです。
pg_dumpコマンドなどで作成したPostgreSQLのバックアップファイルをリストアするコマンドとして、「pg_restore」コマンドがあります。
PostgreSQLをインストールすることで、下記のPATHに「pg_restore」コマンドが格納されます。
【Windowsの場合】
C:\Program Files\PostgreSQL\XX\bin\pg_restore.exe
※PostgreSQLのインストール先をデフォルト状態にした場合(XXは、PostgreSQLのバージョン名)
【Linux系の場合】
/usr/pgsql-13/bin/pg_restore
※PostgreSQLのインストール先をデフォルト状態にした場合(13は、PostgreSQLのバージョン名)
【ubuntの場合】
/usr/lib/postgresql/XX/bin/pg_restore
※PostgreSQLのインストール先をデフォルト状態にした場合(XXは、PostgreSQLのバージョン名)
【macosの場合】
/Library/PostgreSQL/XX/bin/pg_restore
※PostgreSQLのインストール先をデフォルト状態にした場合(XXは、PostgreSQLのバージョン名)
pg_restoreコマンドのコマンドリファレンス(引数などのオプション)は、以下の公式サイトをご覧ください。または、「pg_restore help」コマンドを実行してください。
>> PostgreSQLのリストアコマンド「pg_restore」のコマンドリファレンス
以上が、「PostgreSQLのリストアコマンド「pg_restore」とは?」となります。
「pg_restoreコマンド」と「psqlコマンドによるリストア」の違い
「pg_restoreコマンド」と「psqlコマンドによるリストア」の違いに関して、ご説明します。
psqlコマンドを利用することでもPostgreSQLのリストアができます。
PostgreSQLをインストールすることで、下記のPATHに「psql」コマンドが格納されます。
【Windowsの場合】
C:\Program Files\PostgreSQL\XX\bin\psql.exe
※PostgreSQLのインストール先をデフォルト状態にした場合(XXは、PostgreSQLのバージョン名)
【Linux系の場合】
/usr/pgsql-13/bin/psql
※PostgreSQLのインストール先をデフォルト状態にした場合(13は、PostgreSQLのバージョン名)
【ubuntの場合】
/usr/lib/postgresql/XX/bin/psql
※PostgreSQLのインストール先をデフォルト状態にした場合(XXは、PostgreSQLのバージョン名)
【macosの場合】
/Library/PostgreSQL/XX/bin/psql
※PostgreSQLのインストール先をデフォルト状態にした場合(XXは、PostgreSQLのバージョン名)
psqlコマンドを利用することで、pg_dumpで作成したアーカイブ形式(例: tarなど)ではないバックアップファイルをリストアできます。
★pg_restoreコマンドとpsqlコマンドによるリストアの違い★
・pg_restore
→ pg_dumpで作成したアーカイブ形式のバックアップファイルを
リストアする際に利用する
・psql
→ 上記以外のバックアップファイルをリストアする際に利用する
psqlコマンドのコマンドリファレンス(引数などのオプション)は、以下の公式サイトをご覧ください。
>> PostgreSQLのリストアコマンド「psql」のコマンドリファレンス
以上が、「pg_restoreコマンド」と「psqlコマンドによるリストア」の違いとなります。
pg_dumpコマンドで作成したバックアップファイルをリストアしたい場合、pg_restoreコマンド、または、psqlコマンドを使用しましょう。
PostgreSQLをpsql/pg_restoreコマンドでリストアするための準備
「PostgreSQLをpsql/pg_restoreコマンドでリストアするための準備」に関してご紹介します。
★PostgreSQLをpsql/pg_restoreコマンドでリストアするための準備★
手順1:PostgreSQLのインストール
手順2:PostgreSQLのバックアップ
上記の流れで、「PostgreSQLをpsql/pg_restoreコマンドでリストアするための準備」ができます。
上記の各手順は、以下の日時と環境で動作確認済みです。
動作確認済み日時:2021年7月19日
動作確認済み環境:CentOS Linux release 7.7.1908 (Core)
以降で、上記「PostgreSQLをpsql/pg_restoreコマンドでリストアするための準備」の各手順に関してご説明します。
手順1:PostgreSQLのインストール
「手順1:PostgreSQLのインストール」に関してご説明します。
PostgreSQLのリストアコマンド「pg_restore/psql」を実行するためにも、PostgreSQLをインストールしましょう。
「PostgreSQLのインストール手順」に関しては、以下の記事をご覧ください。
>>【Ubuntu向け】PostgreSQL15を4手順でインストールする方法
>>【コピペOK】PostgreSQL15を5手順でインストールする方法
>>【5分でわかる】Windows版PostgreSQLのインストール方法
>> PostgreSQL Operator(Zalando)をKubernetesで使う手順
以上で、「手順1:PostgreSQLのインストール」は完了です。
手順2:PostgreSQLのバックアップ【pg_dumpコマンドを利用】
「手順2:PostgreSQLのバックアップ」に関してご説明します。
pg_restore/psqlコマンドでPostgreSQLをリストアするためにも、pg_dumpコマンドでPostgreSQLのバックアップファイルを作成しましょう。
「pg_dumpコマンドでPostgreSQLをバックアップする手順」に関しては、以下の記事をご覧ください。
以上で、「手順2:PostgreSQLのバックアップ」は完了です。
上記の流れで、「PostgreSQLをpsql/pg_restoreコマンドでリストアするための準備」が完了しました。
PostgreSQLをpsql/pg_restoreコマンドでリストアする手順
「PostgreSQLをpsql/pg_restoreコマンドでリストアする手順」に関してご紹介します。
★PostgreSQLをpsql/pg_restoreコマンドでリストアするまでの流れ★
手順1:pg_restore/psqlコマンドを実行
手順2:pg_restore/psqlコマンドの実行結果を確認
上記の流れで、「PostgreSQLをpsql/pg_restoreコマンドでリストア」できます。
上記の各手順は、以下の日時と環境で動作確認済みです。
動作確認済み日時:2021年7月19日
動作確認済み環境:CentOS Linux release 7.7.1908 (Core)
以降で、psqlとpg_restoreコマンドの使い方をサンプルを用いて解説します。
手順1:pg_restore/psqlコマンドを実行【リストアの実施】
「手順1:pg_restore/psqlコマンドを実行」に関してご説明します。
pg_dumpコマンドで作成したPostgreSQLのバックアップファイルをpg_restore/psqlコマンドでリストアしてみましょう。
「端末」または「コマンドプロンプト」を起動し、以下のpg_restoreコマンド、またはpsqlコマンドを実行してください。コマンド内の「<>」と書いてある部分は、自分用に書き換えてください。
【バックアップファイルがアーカイブ形式な場合】
# pg_restore -U <PostgreSQL内のユーザ名> <バックアップファイル>
例
# pg_restore -U postgres testdb.dump
# echo $?
0
【バックアップファイルがアーカイブ形式ではない場合】
# psql -U <PostgreSQL内のユーザ名> \
-d <リストア先にしたいデータベース名> < <バックアップファイル>
例
# psql -U postgres -d testdb < postgresql_backup.sql
# echo $?
0
コマンド実行後、「0」が表示された場合、「pg_restore/psqlコマンドを利用してPostgreSQLのリストアが正常にできた」と判断できます。
以上で、「手順1:pg_restore/psqlコマンドを実行」は完了です。
手順2:pg_restore/psqlコマンドの実行結果を確認
「手順2:pg_restore/psqlコマンドの実行結果を確認」に関してご説明します。
pg_restore/psqlコマンドでリストアされたPostgreSQLのデータベースの中身を確認しましょう。
pg_restore/psqlコマンドでリストアされたPostgreSQLのデータベースの中身を確認するために、以下のコマンドを実行してください。
# psql \
-U <PostgreSQL内のユーザ名> -d <リストア先に指定したデータベース名>
# ¥dt
testdb=# \dt
リレーション一覧
スキーマ | 名前 | 型 | 所有者
----------+----------------+----------+----------
public | album | テーブル | postgres
public | album_data | テーブル | postgres
public | photo | テーブル | postgres
コマンド実行後、「テーブル一覧」が表示された場合、「pg_restore/psqlコマンドを利用して正常にPostgreSQLのリストアができた」と判断できます。
以上で、「手順2:pg_restore/psqlコマンドの実行結果を確認」は完了です。
上記の流れで、pg_restore/psqlコマンドでPostgreSQLのデータベースをリストアできました。
ちなみに、「PostgreSQLのアーキテクチャを体系的に学びたい」や「その他のPostgreSQLのコマンドを知りたい」方は、以下の参考書がオススメです。
【まとめ】PostgreSQLのリストア手順【psql/pg_restoreコマンドを利用】
今回の記事を通して、「PostgreSQLのリストア手順【psql/pg_restoreコマンドを利用】」をご紹介することで、以下の悩みを解消しました。
★悩み★
・PostgreSQLをリストアする手順を知りたいな。
・PostgreSQLのリストアにはpg_restoreコマンドを使えばいいのかな?
・リストアコマンドとして、pg_restoreとpsqlがあるけど使い分けは?
「PostgreSQLをリストアする手順は?」や「pg_restoreコマンドとpsqlによるリストアの違いは?」で悩んでいるあなたにこの記事が少しでも役に立てれば幸いです。
コメント