web-dev-qa-db-ja.com

PostgreSQLの増分バックアップの最適な方法

現在、pg_dumpgzipにパイプされ、splitにパイプされています。しかし、これに関する問題は、すべての出力ファイルが常に変更されることです。そのため、チェックサムベースのバックアップは常にすべてのデータをコピーします。

バックアップデータから完全なデータベースを復元できるPostgreSQLデータベースの増分バックアップを実行する他の良い方法はありますか?

たとえば、pg_dumpですべてを完全に順序付けることができる場合、すべての変更はダンプの終わりなどでのみ適用されます。

55
Dennis Thrysøe

更新:Barmanをチェックアウト バックアップ用のWALアーカイブを設定する簡単な方法。

PostgreSQLの連続WALアーカイブ メソッドを使用できます。最初に_wal_level=archive_を設定し、次にファイルシステムレベルの完全なバックアップ(pg_start_backup()pg_stop_backup()コマンドの発行の間)を実行し、次に、新しいWALファイルを_archive_command_オプション。

利点:

  • 増分、WALアーカイブには、データベースの現在の状態を復元するために必要なすべてが含まれます
  • ほとんどオーバーヘッドなし、WALファイルのコピーは安価です
  • any point in timeでデータベースを復元できます(この機能はPITRまたはPoint-in-Timeリカバリと呼ばれます)

短所:

  • Pg_dumpよりもセットアップが複雑
  • 完全なバックアップは、すべての内部テーブル構造とインデックスが含まれているため、pg_dumpよりもはるかに大きくなります
  • リカバリには長い時間がかかるため、書き込みが多いデータベースではうまく機能しません。

pitrtoolsomnipitr などのツールがあり、これらの構成のセットアップと復元を簡素化できます。しかし、私はそれらを自分で使用していません。

55
intgr

また、チェックアウト http://www.pgbackrest.org

pgBackrestは、PostgreSQLをサポートする別のバックアップツールであり、評価する必要があります。

  • 並列バックアップ(32コアまでほぼ直線的にスケールするようにテストされていますが、さらに遠くまで進むことができます。)
  • 圧縮圧縮バックアップ
  • 増分および差分(圧縮!)バックアップ
  • ストリーミング圧縮(データはソースで1回だけ圧縮され、ネットワーク経由で転送されて保存されます)
  • 並列、デルタ復元(古いコピーを最新に更新する機能)
  • テーブルスペースを完全にサポート
  • バックアップローテーションとアーカイブの有効期限
  • 何らかの理由で失敗したバックアップを再開する機能
  • などなど。
8
Stephen Frost

別の方法は、プレーンテキストにバックアップし、rdiffを使用して差分差分を作成することです。

1
Scott Marlowe