531
558

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PostgreSQLのbackup, restore方法まとめ

Last updated at Posted at 2014-05-25

(1) PostgreSQLのダンプツールを利用したバックアップ

pg_dumpコマンド

DBを運用しながらでも使えるbackupコマンド

中ではトランザクションブロック内でSELECT文を発行し、取得したデータを出力形式に合わせて整形した腕標準出力に出力

するらしい。

pg_dumpの出力形式

  • スクリプト形式(デフォルト)
  • アーカイブ形式

が選択できる。

スクリプト形式
スクリプト形式の出力は、リストアに必要なSQL文の羅列が出る。
ので、psqlコマンドでリストアする。
スクリプト形式の場合はプレーンテキストなので、リストアの際にエラーが出たら、中を見れるという利点がある。

アーカイブ形式
バイナリの形で出力される。リストアはpsqlコマンドでなくpg_restoreコマンドで行う。
アーカイブ形式の利点は、 「指定したtableのみを選択してリストアできる」ことらしい。

また、アーカイブ形式には

  • custom形式
  • tar形式

の2種類がある。custom形式はデフォで圧縮されるのでファイルサイズが小さい。

pg_dumpの使い方からリストアの方法まで

スクリプト形式
バックアップをとる

$ pg_dump database名 > backup_file名

また、pg_dumpはローカルだけでなくリモートからも実行できる

$ pg_dump -h hostname -p port database名 > backup_file名

リストアは次のように行う

$ psql database名 < backup_file名

アーカイブ形式
バックアップをとる

$ pg_dump -Fc database名 > backup_file名 

-Fオプションを付ければ良い。
-cはcustom形式を表す。-tとするとtar形式になる

リストアは次のように行う

$ pg_restore -C -d postgres バックアップファイル名

 -C オプションを付けるとリストア前にデータベースを作成し、-d オプションは、その際に接続するデータベース名を指定

[使用例]
pg_restore -d support -Ft -c ./support.tar

pg_dumpallの使い方

pg_dumpコマンドでは、globalデータと呼ばれるロールやテーブルスペースなどの情報はバックアップされないが、pg_dumpallを使えばそれらも全てコピーする。ただし、 -Fオプションは使えない。常にスクリプト形式となる。

詳細

[pg_dumpの主なオプション]
-a データのみをダンプ
-b ラージオブジェクトもダンプする。(注: デフォルトではダンプされません)
-d INSERTコマンドにてダンプ(通常はCOPYコマンド)
-D カラム名を含めたINSERTコマンドにてダンプ
-s テーブルのみダンプ
-t 特定のテーブルのみダンプ
-F アウトプットファイルの形式を指定(cがカスタム、tがtar、pがテキスト)
[pg_restoreの主なオプション]
-c データベースの作成前にテーブルなどをドロップする。
-F バックアップファイルの形式を指定(cがカスタム、tがtar、pがテキスト)
-d データベース名を指定

参考サイト

使えば分かるPostgreSQL運用&チューニング(4):PostgreSQLのバックアップ&リストア手法その1 (2/3) - @IT

531
558
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
531
558

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?