PostgreSQL > バックアップの方法

更新日 2014-03-22
広告
pg_dumpを使ってバックアップを取る方法を紹介します。

サンプルデータベース testdb

サンプルとして、以下のデータベース「testdb」を用意しました。testdbは、2つのテーブル「testtable」「testtable2」を持っています。
testdb=# \d
           List of relations
 Schema |    Name    | Type  |  Owner   
--------+------------+-------+----------
 public | testtable  | table | postgres
 public | testtable2 | table | postgres
(2 rows)

バックアップ

pg_dumpを使って、testdbのバックアップを取ります。
~$ pg_dump -F p -f dumpfile.txt testdb

  • -Fは、バックアップのフォーマットを指定するオプションです。pを指定すると、非圧縮なテキストとしてバックアップを取ります。tを指定すると圧縮されます。
  • -fは、バックアップ結果を保存するファイル名を指定するオプションです。
  • 最期に、バックアップ対象のデータベース名「testdb」を指定します。
これで、testdbの内容が、dumpfile.txtに保存されます。フォーマットとして p を指定したので、エディタなどで内容を確認できるはずです。

あるテーブルのみをバックアップしたい場合は、-t オプションを利用します。以下の例では、テーブル「testtable」のみをバックアップします。

~$ pg_dump -F p -t testtable -f dumpfile.txt testdb
テーブル定義だけをバックアップしたい場合は、-s オプションを使います。 この場合、テーブルに格納されたデータはダンプされません。
$ pg_dump -h localhost -U postgres -F p -s -f dumpfile.txt test_db

ちなみに、-hはホストを指定するオプションです。-Uはログインユーザ名を指定するオプションです。

データのみをダンプしたい場合は、-a オプションを使います。

$ pg_dump -h localhost -U postgres -F p -a -f dumpfile.txt test_db

リストア

非圧縮バックアップを取った場合は、psqlコマンドでリストアできます(testdbデータベースは、あらかじめ作成しておく必要があります)。
~$ psql -f dumpfile.txt testdb
圧縮バックアップを取った場合は、pg_restoreコマンドを利用してリストアします。-d オプションでデータベース名を、リダイレクトでバックアップファイルを指定します。
postgres@mypc:~$ pg_restore -d testdb < dumpfile.txt 
広告
お問い合わせは sweng.tips@gmail.com まで。
inserted by FC2 system