PostgreSQLのリストア手順【psql/pg_restoreコマンドを利用】

 

★悩み★
・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によるリストアの違いは?」で悩んでいるあなたにこの記事が少しでも役に立てれば幸いです。
 

 


 

コメント