リストア(psql、pg_restor)の方法【PostgreSQL】

PostgreSQLその他

リストア(psql、pg_restor)の方法

このページではバックアップしたファイルをDBとして復元(リストア)する方法を解説します。

 

バックアップの方法

バックアップを行う方法についてはこちらで解説していますので参考にしていただけると幸いです。

 

 

 

リストア方法

リストアを行うためには、「psql」コマンドまたは、「pg_restore」コマンドを使用します。2つのコマンドはバックアップをした方法によりどちらを使うかが変わってきます。format=p(SQL文のテキストファイル)でバックアップした場合は「psql」、それ以外(format=c , format=t , format=d)は「pg_restore」を使用します。ここからはそれぞれのコマンド例を紹介します。

 

① format=p(SQL文のテキストファイル)のバックアップとリストア

1つ目は、format=pでバックアップをした場合のリストアコマンドです。ここだけpsqlを使用します。

# バックアップ
# pg_dump -U ユーザー名 --format=p --file=バックアップファイルパス 対象のDB
pg_dump -U postgres --format=p --file=C:\script\test1.sql testdb1

# リストア
createdb -U postgres newdb  # リストア先のDBを先に作成する
psql -h ホスト名 -U ユーザー名 -d リストア先のDB -f .sqlファイルのパス
psql -h localhost -U postgres -d newdb -f C:\script\test1.sql

オプションについて

-U … コマンドを実行するユーザー名を指定。

-d … データベース名を指定。

-h … ホスト名を指定。192.16.xx.yy等設定可能。localhostは省略可。

 

 

② format=c(カスタム形式)のバックアップとリストア

format=cでバックアップをした場合のリストアコマンドです。

# バックアップ
pg_dump -U postgres --format=c --file=C:\script\test2.custom testdb2

# リストア
createdb -U postgres newdb2  # リストア先のDBを先に作成する
pg_restore -h localhost -U postgres -d newdb2 C:\script\test2.custom

 

 

③ format=t(tar形式)のバックアップとリストア

format=tでバックアップをした場合のリストアコマンドです。

# バックアップ
pg_dump -U postgres --format=t --file=C:\script\test3.tar testdb3

# リストア
createdb -h localhost -U postgres newdb3  # リストア先のDBを先に作成する
pg_restore -h localhost -U postgres -d newdb3 C:\script\test3.tar

 

 

④ format=d(ディレクトリ形式)のバックアップとリストア

format=dでバックアップをした場合のリストアコマンドです。

# バックアップ
pg_dump -U postgres --format=d --file=C:\script\test4 testdb4

# リストア
createdb -h localhost -U postgres newdb4  # リストア先のDBを先に作成する
pg_restore -h localhost -U postgres -d newdb4 C:\script\test4