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

PostgreSQL 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は比較的簡単にできるダンプ方法ですので実践してみてください。

PostgreSQL
スポンサーリンク
この記事が気に入ったら
いいね!しよう
最新情報をお届けします。
この記事を書いた人

スパイスファクトリー株式会社 Webエンジニア。フロントエンドやWebサイトの高速化が得意です。インフラ・バックエンドも一通りやってます。
個人的なお仕事のご依頼や情報交換などはお問い合わせまたはTwitterにメンションをお願いします。

ShoheiTaiをフォローする
このエントリーが役に立ったらシェアをお願いします!
イケてないコード – Webエンジニアのブログ

コメント

タイトルとURLをコピーしました