参考
https://www.fujitsu.com/jp/products/software/resources/feature-stories/postgres/backup-recovery/
https://www.postgresql.jp/document/9.1/html/continuous-archiving.html
https://qiita.com/bwtakacy/items/65260e29a25b5fbde835
https://lets.postgresql.jp/documents/technical/backup/3
→詳しくて分かり易い
自分の解釈
・論理と物理バックアップがあり。
・論理はpg_dumpとか
・物理はファイルシステムバックアップ
・物理バックアップの場合、バックアップ所要時間があり、整合性を確保する仕組みが必要。
・それを継続的アーカイブで実現するのがオンラインバックアップ
・継続的アーカイブは以下
WALはテーブルスペースに反映されたら、適当なタイミングで削除される。
削除されるタイミングで、アーカイブする。
※別ディレクトリにコピー。postgres機能でやってくれる。
archive_command = 'cp %p /archive/%f'
# WALアーカイブ処理時に使われるコマンド
上記が継続的アーカイブの設定
・継続的アーカイブによるオンラインバックアップの流れ
※事前に継続的アーカイブ設定済みである必要あり。
1.バックアップモード(PG_START_BACKUP)にする。
※バックアップモードにするとチェックポイント(未反映WALのテーブルスペースへの反映)が作成される。
2.DB止めずにデータディレクトリをcpコマンドとかでバックアップ
3.バックアップモードを解除
https://www.postgresql.jp/document/9.1/html/continuous-archiving.html
より引用
postgreSQLは常に、クラスタのデータディレクトリ以下のpg_xlog/ディレクトリ内で先行書き込みログ(WAL)を管理しています。 このログはデータベースのデータファイルに行われた全ての変更を記録します。 このログは主にクラッシュ時の安全性を目的としています。 システムがクラッシュしたとしても、最後のチェックポイント以降に作成されたログ項目を"やり直し"することで、データベースを整合性を維持した状態にリストアすることができます。
https://lets.postgresql.jp/documents/technical/backup/3
より引用
1. PG_START_BACKUP()の発行
本節の冒頭で述べたとおり、オンライン・バックアップで取得したベースバックアップには、取得中に発生したWALも必要になります。どこからどこまでのWALが必要になるのかを、PostgreSQLに教える関数を発行する必要があります。これを行うのが、pg_start_backup() 及び pg_stop_backup() 関数です。それぞれ、ベースバックアップの取得前後に発行することになります。ベースバックアップの取得前に発行するpg_start_backup() 関数には、バックアップを示すラベルを指定します。ラベルはユーザの任意で自由に記述できます。典型的には、"いつ"バックアップが開始されたかを示す時間を打つと良いでしょう。