postgresqlのバックアップ/リストア(実機)

表題について、実機で確認しながら勉強。

以下、メモと理解。

 

○バックアップ(スクリプト形式)
-----
pg_dump postgres > dump_postgres_`date +%Y%m%d_%H%M%S`
pg_dumpall > dump_all_`date +%Y%m%d_%H%M%S`
-----

○バックアップ(アーカイブ形式)
-----
pg_dump -Fc db3 > dump_db3_Fc_`date +%Y%m%d_%H%M%S`
-----

○リストア
-----
・成功
pg_restore -v -C -d postgres dump_db3_Fc_20161010_222326
    -v:進捗状況を詳細表示
    -C:リストア前にDBを作成する。
    -d:DB作成の際に接続するDBを指定する(作成するDBを指定するのではない。)
・失敗
-bash-4.1$ pg_restore -C -d db3 dump_db3_Fc_20161010_222326
pg_restore: [アーカイバ(db)] データベース"db3"への接続が失敗しました: FATAL:  データベース"db3"は存在しません
-----


○「pg_dump
・データベースを指定してダンプする。
スクリプト形式(デフォルト)
    テキスト形式。SQL文。psqlでのみリストア可能。dbはcreateされない?。
アーカイブ形式
    バイナリ形式。pg_restoreでのみリストア可能。

○「pg_dumpall」
・データベースクラスタ全体をダンプする。

スクリプト形式のみ。アーカイブ形式はない。

○テンプレートDBは削除できない。
template0とtemplate1は、createdbやcreate databaseをした時のひな形として利用されるそう。
-----
postgres=# DROP DATABASE template1;
ERROR:  テンプレートデータベースを削除できません

postgres=#  DROP DATABASE template0;
ERROR:  テンプレートデータベースを削除できません
-bash-4.1$ dropdb template0
dropdb: データベースの削除に失敗しました: ERROR:  テンプレートデータベースを削除できません
-bash-4.1$ dropdb template1
dropdb: データベースの削除に失敗しました: ERROR:  テンプレートデータベースを削除できません
-----


○DB作成、削除に専用コマンドがある。
テンプレートを指定するオプションがある。デフォルトは「template1」
-----
-bash-4.1$ createdb --template template0 db3;
-bash-4.1$
-bash-4.1$ dropdb db3
-bash-4.1$
-----

次回、pg_basebackupコマンドについて。

今回実施したpg_dumpやpg_dumpallとの違いについて調べたいです。

 

 

■参考にさせていただいたもの

PostgreSQL/template0とtemplate1の違いについて - 調べる.db

 

qiita.com

 

qiita.com