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