このエントリーが役に立ったらシェアをお願いします!

PostgreSQLでバックアップ・リストアする方法

このエントリーが役に立ったらシェアをお願いします!

今回はPostgreSQLでデータベースをダンプする方法についてご紹介します。
データベースをコピーしたり、バックアップを取ったりする時に使用することになるかと思います。
PostgreSQLではダンプをするのにpg_dumpとpg_dumpallコマンドを使用します。これらのコマンドはPostgresの稼働中に実行可能で、ユーザからのアクセスに影響は与えません。

以下、実行環境です。

$ psql --version
psql (PostgreSQL) 9.3.5

$ pg_ctl status -D ./data
pg_ctl: server is running (PID: 2168)
/usr/pgsql-9.3/bin/postgres "-D" "./data"
スポンサーリンク

データベースを指定してダンプする – pg_dump

データベース単位でダンプをする場合はpg_dumpを使用します。
pg_dumpはオプションでダンプの形式を3種類指定することができます。

-Fp
plain形式(SQL)でのダンプ。
-Fc
カスタム形式でのダンプ。実際にバックアップを取る場合はカスタム形式が一般的かと思います。
-Ft
tar形式でのダンプ。

下記の例ではデータベースクラスタ内のtestdbを平文形式でダンプしています。

$ pg_dump testdb

オプションを指定しない場合は-Fpオプションがデフォルトで使用されます。
ダンプのファイルを作成する場合は-fオプション、または>によるリダイレクトを使用します。
カスタム形式、tar形式の場合も同様です。

$ pg_dump -Fp testdb -f testdb.sql
$ pg_dump -Fp testdb > testdb.sql

以下、カスタム形式とtar形式によるダンプです。

$ pg_dump -Fc testdb -f testdb.dump
$ pg_dump -Ft testdb -f testdb.tar

データベースクラスタ全体をダンプする – pg_dumpall

データベースクラスタ内全てのデータベースをダンプする場合はpg_dumpallを使用します。
pg_dumpallを使用する場合は形式を指定することができません。全て平文形式でのダンプになります。

$ pg_dumpall -f all.sql

ダンプしたデータベースをリストアする

pg_dump -Fp、pg_dumpallで平文形式にダンプしたファイルは通常のSQLとなるので、psqlコマンドによりリストアすることができます。

$ psql -f testdb.sql

pg_dump -Fcによるカスタム形式やpg_dump -Ftのtar形式の場合はpg_restoreコマンドを使用してリストアします。
-dオプションでリストア先のデータベースを指定し、実行します。

$ pg_restore -d hogedb testdb.dump

以上、いかがでしたか。
他にもバックアップ方法はありますが、pg_dumpは比較的簡単にできるダンプ方法ですので実践してみてください。

スポンサーリンク

このエントリーが役に立ったらシェアをお願いします!

1この記事を書いた人
ShoheiTai
フロントエンド志向のWebエンジニア。
HTML5やWeb高速化、SEO等のフロントエンド開発が大好物。
バックエンドではCakePHP,Wordpress開発を主戦場としています。
Web開発のスパイスファクトリー株式会社創業メンバー。

イケてないコード - Webエンジニアのブログの
最新情報をいいねしてチェックしよう!