1つのPostgresサーバー(Win7 64)の1時間ごとの増分バックアップを実行しようとしています。
postgresql.conf
に次の設定があります:
max_wal_senders = 2
wal_level = archive
archive_mode = on
archive_command = 'copy "%p" "c:\\postgres\\foo\\%f"'
(再起動)
pg_basebackup -U postgres -D ..\foo -F t -x
でベースバックアップを行いました
これにより、foo
フォルダーに大きなbase.tar
ファイルが作成され、16,384 KBのファイルがいくつか追加されました。
私が理解していないのはfoo
のWALが変更されない理由です。 data/pg_xlog
のWALが変更されました。 pgはそれらをコピーすることになっていますか?どのようにして決定するのですか?
おそらくarchive_timeout=3600
を設定する必要がありますか?
Pg_start_backup()とpg_stop_backup()を呼び出す必要があると言うサイト(pgのメーリングリスト、baculaのpostgresページ)をいくつか見ましたが、これらは必須ではないと思います。本当?
二次質問:
data/pg_xlog
のWALはどのくらいの頻度で書き込まれますか?何が書き込みをトリガーしますか?
DMLを実行してからPSQLで\q
を実行すると、WALが更新されるようです。または、pgAdminでテーブルを編集してウィンドウを閉じます。私はそれがコミット時に書き込むと考えました。
ベストプラクティス? pg_basebackupは週に1回ですか? WALをPGと同じマシンまたはリモートマシンにアーカイブしますか?
アーカイブフォルダのリモートストレージへの増分バックアップを実行したい。
バックアップから復元する必要がある場合の基本的なシナリオは、開始点としてのベースバックアップと、開始点とクラッシュの間に発生したトランザクションアクティビティを再生するためにアーカイブフォルダーの内容全体が必要になることです。
また、アーカイブフォルダー内のファイルが永遠に蓄積されないようにするために、時々新しいベースバックアップを実行し、新しいベースバックアップの前にアーカイブされたファイルを削除します。
非常に役立つ既存のツール WAL-E があります。 archive_command
およびrestore_command
S3へのPITRの場合。
noコマンドを実行するincrementalまたは差分論理バックアップ。 pg_dump
は増分または差分を取ることはできません。これを行う唯一の方法は、ログのアーカイブを使用することです。
理論的には、新しい完全バックアップを取り、それと最後のバックアップとの間でバイナリ差分を行い、差分をアップロードすることができます。これは、物事を行うための脆弱で非効率的な方法だと私は思いますが、私は本当にそれをお勧めしません。
さらに、PgBarmanはフックスクリプトを介してS3との統合をサポートし、バックアップのローテーションと管理の多くを自動化します。繰り返しますが、これはWindowsのオプションではない可能性があります。