この記事では、PostgreSQLを使用したバックアップとリストアについてまとめています。
紹介しているのは次の項目です。
・ファイル形式(スクリプト形式とアーカイブ形式)とリストアの関係
・pg_dumpとpg_dumpallの違い
・具体的なバックアップとリストアの実行例
ファイル形式とリストアの関係
PostgreSQLでは、バックアップをダンプする形式として
・スクリプト形式(テキストファイル)
・アーカイブ形式
を使用することが出来ます。
ダンプを作成するには、pg_dump、pg_dumpallを使用しますが、pg_dumpallではスクリプト形式でしかダンプできません。
そして、ダンプしたファイル形式によってリストアする方法が異なります。
ダンプ形式 | リストアコマンド |
スクリプト形式 | psql |
アーカイブ形式 | pg_restore |
pg_dumpとpg_dumpallの違い
PostgreSQLでバックアップとしてダンプファイルを作成する際に使用できるのは、pg_dumpとpg_dumpallです。
この2つについて簡単に整理しておきます。
pg_dump
pg_dumpでは、データベースのテーブルのみをダンプしたり、スクリプト形式、アーカイブ形式のどちらでもダンプできるなど融通が利きます。
ダンプするファイル形式は -Fオプションで指定できます。
-Fp : スクリプト形式(default)
-Fc : カスタム形式アーカイブ
pg_dumpall
pg_dumpallの特徴は次の2つです。
1 ダンプ形式はスクリプト形式のみ。
2 ロールやテーブル空間など、クラスタ内の全データベースに共通のグローバルオブジェクトもダンプできる。
具体的なバックアップとリストアの実行例
今回は例として、次のデータベースとテーブルを使用します。
データベース名:ubuntu
テーブル名:test_t
実行例(pg_dump、pg_restore)
スクリプト形式でのダンプ、リストア
# 特定のテーブルをスクリプト形式でダンプする
pg_dump -t test_t ubuntu > /home/ubuntu/db_dump/test_t_txt.dump
# スクリプト形式をリストア(事前にテーブルを削除しておく必要がある)
psql ubuntu < /home/ubuntu/db_dump/test_t_txt.dump
アーカイブ形式でのダンプ、リストア
# 特定のテーブルをアーカイブ形式でダンプする
pg_dump -Fc -t test_t ubuntu > /home/ubuntu/db_dump/test_t_arc.dump
# アーカイブ形式をリストア
pg_restore -cd ubuntu < /home/ubuntu/db_dump/test_t_arc.dump
実行例(pg_dumpall)
# ダンプ
pg_dumpall > /home/ubuntu/db_dump/dumpall.dump
# リストア
psql -f /home/ubuntu/db_dump/dumpall.dump ubuntu
以上です。参考になればうれしいです。
コメント