pgBackRest は、大規模なデータベースとワークロードにシームレスにスケールアップできる、PostgreSQL 向けの信頼性の高いバックアップおよび復元ソリューションです。
pgBackRest v2.54.0 が現在の安定版リリースです。リリース ノートはリリース ページにあります。
pgBackRest が気に入ったら、GitHub で私たちを見つけてスターを付けてください。
通常、バックアップ操作中のボトルネックは圧縮であるため、pgBackRest は並列処理と、lz4 や zstd などのより効率的な圧縮アルゴリズムを使用してこの問題を解決します。
カスタム プロトコルを使用すると、pgBackRest は最小限の構成でローカルまたは TLS/SSH 経由でリモートでバックアップ、復元、アーカイブできます。 PostgreSQL をクエリするためのインターフェイスもプロトコル層経由で提供されるため、PostgreSQL へのリモート アクセスは不要となり、セキュリティが強化されます。
複数のリポジトリを使用すると、たとえば、迅速な復元のために保持期間を最小限に抑えたローカル リポジトリと、冗長性と企業全体のアクセスのために保持期間を長くしたリモート リポジトリが可能になります。
完全バックアップ、差分バックアップ、増分バックアップがサポートされています。 pgBackRest は rsync の時間解決の問題の影響を受けにくいため、各ファイルのチェックサムを必要とせずに差分バックアップと増分バックアップを安全に実行できます。ブロックレベルのバックアップでは、ファイルの変更された部分のみをコピーすることでスペースを節約します。
完全バックアップおよび差分バックアップに対して保持ポリシーを設定して、任意の期間の範囲を作成できます。 WAL アーカイブは、すべてのバックアップに対して保持することも、厳密に最新のバックアップに対して保持することもできます。後者の場合、古いバックアップの一貫性を保つために必要な WAL はアーカイブに維持されます。
チェックサムはバックアップ内のすべてのファイルに対して計算され、復元または検証中に再チェックされます。バックアップはファイルのコピーを完了した後、バックアップの一貫性を保つために必要なすべての WAL セグメントがリポジトリに到達するまで待機します。
リポジトリ内のバックアップは、標準の PostgreSQL クラスター (テーブルスペースを含む) と同じ形式で保存できます。圧縮が無効でハード リンクが有効な場合は、リポジトリ内のバックアップのスナップショットを作成し、そのスナップショット上で PostgreSQL クラスターを直接起動することができます。これは、従来の方法では復元に時間がかかるテラバイト規模のデータベースにとって有利です。
すべての操作ではファイルおよびディレクトリ レベルの fsync を利用して耐久性を確保します。
ページのチェックサムが有効になっている場合、pgBackRest はバックアップ中にコピーされるすべてのファイルのチェックサムを検証します。すべてのページのチェックサムは完全バックアップ中に検証され、変更されたファイルのチェックサムは差分バックアップおよび増分バックアップ中に検証されます。
検証が失敗してもバックアップ プロセスは停止しませんが、正確にどのページが検証に失敗したかの詳細を含む警告がコンソールとファイル ログに出力されます。
この機能により、データの有効なコピーを含むバックアップの有効期限が切れる前に、ページ レベルの破損を早期に検出できます。
中断されたバックアップは、停止した時点から再開できます。すでにコピーされているファイルはマニフェスト内のチェックサムと比較され、整合性が保証されます。この操作はリポジトリ ホスト上で完全に実行できるため、PostgreSQL ホストの負荷が軽減され、データの圧縮や再送信よりもチェックサムの計算の方が高速であるため、時間を節約できます。
リポジトリがローカルにあるかリモートにあるかに関係なく、ファイルがリポジトリにコピーされている間に、圧縮とチェックサムの計算がストリームで実行されます。
リポジトリがリポジトリ ホスト上にある場合、圧縮は PostgreSQL ホストで実行され、ファイルは圧縮形式で送信され、リポジトリ ホストに保存されます。圧縮を無効にすると、CPU コストを最小限に抑えながら、利用可能な帯域幅を効率的に使用するために、より低いレベルの圧縮が利用されます。
マニフェストにはバックアップ内のすべてのファイルのチェックサムが含まれているため、復元中にこれらのチェックサムを使用して処理を大幅に高速化できます。デルタ リストアでは、バックアップに存在しないファイルが最初に削除され、その後、残りのファイルに対してチェックサムが生成されます。バックアップと一致するファイルはそのまま残され、残りのファイルは通常どおり復元されます。並列処理により、復元時間の大幅な短縮につながる可能性があります。
WAL をアーカイブにプッシュしたり、アーカイブから WAL を取得したりするための専用コマンドが含まれています。どちらのコマンドも並列処理をサポートしているため、処理が高速化され、非同期で実行されるため、PostgreSQL への応答時間が最速になります。
WAL プッシュは、複数回プッシュされた WAL セグメントを自動的に検出し、セグメントが同一である場合は重複を排除します。そうでない場合はエラーが発生します。非同期 WAL プッシュにより、最大のスループットを得るために WAL セグメントを並行して圧縮する別のプロセスに転送をオフロードできます。これは、書き込み量が非常に多いデータベースにとって重要な機能となる可能性があります。
非同期 WAL get は、解凍されて再生の準備ができている WAL セグメントのローカル キューを維持します。これにより、WAL を PostgreSQL に提供するのに必要な時間が短縮され、再生速度が最大化されます。遅延が長い接続とストレージ (S3 など) が最もメリットをもたらします。
Push コマンドと get コマンドは両方とも、PostgreSQL のバージョンとシステム識別子を比較することによって、データベースとリポジトリが一致していることを確認します。これにより、WAL アーカイブの場所が誤って設定される可能性が事実上排除されます。
表領域は完全にサポートされており、復元時に表領域を任意の場所に再マップできます。単一のコマンドですべてのテーブルスペースを 1 つの場所に再マップすることも可能で、開発時のリストアに役立ちます。
ファイルとディレクトリのリンクは、PostgreSQL クラスター内のすべてのファイルまたはディレクトリに対してサポートされています。復元する場合、すべてのリンクを元の場所に復元したり、一部またはすべてのリンクを再マップしたり、一部またはすべてのリンクをクラスター ディレクトリ内の通常のファイルまたはディレクトリとして復元したりすることができます。
pgBackRest リポジトリは、S3、Azure、および GCS 互換のオブジェクト ストアに配置できるため、事実上無制限の容量と保持が可能になります。
pgBackRest はリポジトリを暗号化して、バックアップが保存されている場所に安全にバックアップできます。
pgBackRest には、PostgreSQL の 10 バージョン、サポートされている 5 バージョン、および最後の 5 つの EOL バージョンのサポートが含まれています。これにより、サポートされているバージョンにアップグレードするのに十分な時間が確保されます。
pgBackRest は、設定と操作が簡単になるように努めています。
さまざまなオペレーティング システムおよび PostgreSQL バージョンのユーザー ガイド。
コマンドライン操作のコマンドリファレンス。
pgBackRest 構成を作成するための構成リファレンス。
v1 のドキュメントはここにあります。 v2 には v1 のオプションおよびリポジトリとの下位互換性があるため、v1 についてはこれ以上のリリースは計画されていません。
pgBackRest への貢献はいつでも大歓迎です。機能、改善、問題を貢献する方法の詳細については、貢献ガイドラインをご覧ください。
pgBackRest は完全に無料で、MIT ライセンスに基づいたオープンソースです。個人目的でも商用目的でも、いかなる制限もなく使用することができます。バグ報告は非常に真剣に受け止められ、できるだけ早く対処されます。
適切なレプリケーションおよびバックアップ戦略を備えた堅牢な災害復旧ポリシーを作成することは、非常に複雑で困難な作業になる可能性があります。企業がスムーズに運営し続けるためには、アーキテクチャ段階でのサポートや継続的なサポートが必要な場合があります。
Crunchy Data は、主要なオペレーティング システム用の pgBackRest のパッケージ バージョンと、pgBackRest および PostgreSQL に関する専門家による完全なライフサイクル商用サポートを提供します。 Crunchy Data は、ベンダー ロックインのないオープン ソース ソリューションを提供することに尽力し、pgBackRest のコミュニティ バージョンとの相互互換性が常に厳密に維持されるようにします。
詳細については、Crunchy Data をご覧ください。
主に、pgBackRest の開発中に貴重なアドバイスと批判を行った Stephen Frost に感謝します。
Crunchy Data は pgBackRest に多大な時間とリソースを提供し、開発を積極的にサポートし続けています。 Resonate は pgBackRest の開発にも貢献し、初期の (十分にテストされた) バージョンを主要な PostgreSQL バックアップ ソリューションとしてインストールできるようにしました。
Sandor Szabo によるアームチェアのグラフィック。