
2026/04/27 19:56
pgBackRest はもはやメンテナンスされていません。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
13 年もの運用を経て、PostgreSQL の人気のあるバックアップツール pgBackRest は、終焉の段階 (end-of-life) に達しました。元の管理者は、このプロジェクトには今後更新が加えられることはないことを発表し、開発を持続させるための資金支援や適任な就労機会を確保できなくなったとしています。この決定により、スケーラブルなデータベース、圧縮、主要クラウドストレージプロバイダー(S3、Azure、GCS を含む)にまたがる並列バックアップといった堅牢な機能を持つソリューションの進化が事実上停止されます。さらに、デアルートアスト (delta restore) 機能や PostgreSQL の 10 バージョンへの対応、データ領域のマッピングおよび暗号化といったサポートも含まれます。
この技術に依存しているユーザーは、データ保護戦略を維持するため直ちに行動を起こす必要があります。管理者は、既存のコードベースのフォークを変更して別名付けるよう使用者に対して明確に指示しています。この厳格な指針は、新規プロジェクトが元のソフトウェアの後継ではなく、独立した管理者を持つ独自のエンティティとして認識されることを保証するためのものであり、特に「デアルートアスト」や「無制限のバックアップ」といった特定の機能を必要としている企業においては、代替ソリューションを検討するか自前のコード改修を実施することを迫られています。最終的にこれは、この特定のユーティリティにおける一つの時代を幕引きするものであり、長年にわたって信頼の根幹を担ってきたが今やサポートされない柱からコミュニティが強制的に移行することを意味します。保証されている代替手段はありません。
本文
非推奨告知書
【要約】pgBackRest の開発はもう行われておりません。フォークを検討される場合は、プロジェクトに新たな名称を設定してください。
長慮の末、私は pgBackRes との作業を停止することを決定いたしました。この判断は決して軽率ではなかったものでございます。本プロジェクトは過去十三年間、私の熱い関心事であり、その大半の期間、企業によるスポンサーシップを得られた幸運にもございました。しかしながら、多くの深夜や週末を費やし、多数の貢献者の方々のご支援により今日に至る pgBackRest を完成させることに尽力してまいりました。オープンソース開発者であれば皆様が理解されるであろう通り、多大な時間を特別プロジェクトに捧げなければならないという苦労はよく理解しております。
Crunchy Data が売却されて以降、私は pgBackRest の維持管理と、この作業を継続できる職務への就労を模索してまいりましたが、未だ成果を得ておりません。また、新たなスポンサー確保のための努力も、プロジェクトを持続可能にするために必要な規模には遠く及びませんでした。
他の方々と同様、私にも生活手段が必要であるためです。pgBackRest 関連の役割の種類は非常に限られております。現在ではより幅広い機会を検討することも可能になりましたが、そうした機会に取り組むと pgBackRest の維持管理に十分な時間を割くことが難しくなります。.pgBackRest の開発には、保守、バグ修正、プルリクエストレビュー、問題への回答など多様な業務を遂行するための相当な時間が必要でありまして、新たな機能の開発にもっとも情熱を傾けたいと存じます。品質の低い作業や断続的な対応をするよりも、明確に一区切り付ける方が合理的であると判断いたしました。
将来的には pgBackRest がフォークされることは予想されますが、それは新たなプロジェクトであり、新たな維持管理者により、かつて私たちが築いてまいりましたような信頼を再構築していただく必要があります。
重ねて、数年来ご尽力いただいた pgBackRest の貢献者の方々に厚く御礼申し上げます。皆様との仕事は大きな喜びでした。
概要
pgBackRest は、PostgreSQL 向けの信頼性の高いバックアップと復元ソリューションであり、最大規模のデータベースおよびワークロードへもシームレスにスケールします。現在、安定版は pgBackRest v2.58.0 です。リリースノートにつきましては「Releases ページ」を参照してください。
主な特徴
-
並列型バックアップと復元
通常、圧縮処理がバックアップ操作におけるボトルネックとなりますが、pgBackRest は並列処理およびより効率的な圧縮アルゴリズム(lz4、zstd など)を採用することでこの問題を解決します。 -
ローカルまたはリモートでの稼働
独自の通信プロトコルにより、最小限の設定で TLS/SSH を介したローカルあるいはリモート環境におけるバックアップ、復元、アーカイブ作業が可能です。同プロトコル層を介して PostgreSQL のクエリインターフェースも提供されており、これにより PostgreSQL に直接アクセスする必要がなくなります。その結果、セキュリティレベルが高まります。 -
複数リポジトリの対応
例えとして、ローカルに設置したリポジトリでは短期間の保存(短いストレージ期間)で高速な復元を実現し、遠隔地に配置されたリポジトリでは長期保存(長いストレージ期間)により冗長性と企業内からのアクセス性を両立させます。 -
フル・差分・増量バックアップの対応(ファイル単位またはブロック単位)
フル、差分、増量のバックアップを支援いたします。rsync の時間解像度による問題に左右されず、ファイルごとのチェックサム計算も不要でありながら、差分および増量バックアップを安全に行うことができます。ブロック単位のバックアップは、ファイルの一部のみを変更した場合に変更された部分だけをコピーするため、ストレージ容量の節約を実現します。 -
バックアップローテーションとアーカイブ有効期限管理
フルバックアップおよび差分バックアップに対して保持ポリシーを設定し、あらゆるタイムフレームのカバレッジを確保できます。WAL アーカイブはすべてのバックアップにまたがって維持するか、最新のバックアップのみを対象として厳格に設定できます。後者の場合において、古いバックアップの一貫性を担保するために必要な WAL セグメントはアーカイブ内で保持されます。 -
バックアップの完全性保証
バックアップ内の全ファイルに対してチェックサムが計算され、復元または検証時に再確認されます。ファイルのコピーが完了した後、バックアップの一貫性を確保するために必要なすべての WAL セグメントがリポジトリに到達するまで待機します。
リポジトリ内に格納されるバックアップは、標準的な PostgreSQL クラスタと同様の形式(テーブルスペースを含む)で保存可能です。圧縮を無効化しハードリンクを有効化した場合、リポジトリ内のバックアップのスナップショットから直接 PostgreSQL クラスタを起動することが可能となります。これは、従来の方式による復元が時間のかかるテラバイト規模のデータベースにおいて特に有利です。
すべての作動にはファイルおよびディレクトリレベルでの fsync が利用され、耐久性が確保されます。 -
ページチェックサム機能
ページチェックサムを有効化した場合、pgBackRest はバックアップ中にコピーされるすべてのファイルのチェックサムを検証します。フルバックアップでは全ページのチェックサムが検証され、差分および増量バックアップでは変更されたファイル内のチェックサムのみが検証されます。
検証失敗はバックアッププロセスの停止にはなりません。代わりに、どのページが検証に失敗したかといった詳細情報を含む警告がコンソールおよびログファイルへ出力されます。本機能により、有効なデータコピーが存在する前にバックアップの有効期限を迎えるような事態を防ぎつつ、ページ単位の破損を早期に検出することが可能となります。 -
バックアップの再開
中断されたバックアップ作業は、停止時点から再開できます。既にあるファイルをコピーしたものは、マニフェスト内のチェックサムと比較され、完全性が保証されます。この操作は完全にリポジトリホスト上で実施されるため、PostgreSQL ホストへの負荷を軽減し、チェックサムの計算が圧縮およびデータの再送信よりも高速であるため時間を短縮できます。 -
ストリーミング圧縮およびチェックサム機能
ファイルをリポジトリへコピーする最中に圧縮とチェックサムの計算がストリーミング方式で実行されます(リポジトリがローカルまたはリモートに位置する場合も同様です)。リポジトリが別ホスト上にある場合、圧縮は PostgreSQL ホスト上で実施され、圧縮された形式でデータを送信し、リポジトリホスト上に格納します。圧縮が無効化されている場合でも、帯域幅を効率的に利用しつつ CPU コストを最小限に抑えるために、ある程度の圧縮が適用されます。 -
Delta 復元
マニフェストにはバックアップ内のすべてのファイルのチェックサムが含まれており、復元時においてこれらのチェックサムを利用して処理速度を劇的に向上させることができます。Delta 復元においては、バックアップに含まれていないファイルはまず削除され、残りのファイルに対してチェックサムが生成されます。バックアップと一致するファイルはそのまま置かれたままで、他のファイルは通常通り復元されます。並列処理を活用することで、復元時間を大幅に短縮することが可能です。 -
並列・非同期的な WAL プッシュおよびゲット
アーカイブへの WAL プッシュおよびアーカイブからの WAL ゲットを目的とした専用コマンドが用意されています。両方的とも並列処理に対応し、処理速度の向上を図ると同時に、PostgreSQL に対する応答時間を最小限に抑えるための非同期動作をサポートします。
WAL プッシュ機能は、複数回プッシュされた WAL セグメントを検出し、同一の場合は重複を除去(デデュプリケーション)し、そうでない場合はエラーを発生させます。非同期的な WAL プッシュ機能により、転送処理を別のプロセスにオフロードすることができ、WAL セグメントの並列圧縮により最大スループットを実現します。これは、非常に高い書き込み量を持つデータベースにおいて極めて重要な機能となります。
非同期的な WAL ゲット機能は、復号化済みで再生準備が整った WAL セグメントをローカルキューに保持します。これにより PostgreSQL に WAL を提供するまでの時間を短縮し、再生速度の最大化を実現します。高レイテンシを持つ接続やストレージ(S3 など)において特に効果的です。プッシュおよびゲットコマンドは、PostgreSQL のバージョンとシステム ID を比較することでデータベースとリポジトリが一致していることを保証し、WAL アーカイブ位置の設定誤りをほぼ不可能にします。 -
テーブルスペースおよびリンク対応
テーブルスペースの機能が完全にサポートされており、復元時には任意の場所へ再マッピング可能です。また、1 つのコマンドですべてのテーブルスペースを単一の場所に再マッピングすることもでき、これは開発環境での復元に有用です。PostgreSQL クラスタ内のあらゆるファイルまたはディレクトリに対して、ハードリンクおよびディレクトリリンクがサポートされています。復元時には、リンクを元の位置へ復元するか、一部のまたは全リンクを再マッピングするか、あるいは一部のまたは全てのリンクをクラスタディレクトリ内の通常のファイルまたはディレクトリとして復元するといった柔軟な対応が可能です。 -
S3、Azure、GCS 互換オブジェクトストアのサポート
pgBackRest のリポジトリは S3、Azure、GCS と互換性のあるオブジェクトストアに配置でき、事実上無制限の容量および保持期間の実現を可能にします。 -
暗号化機能
pgBackRest は、リポジトリの保存場所に関わらずバックアップのセキュリティを保証するために、リポジトリを暗号化する機能を備えています。 -
PostgreSQL 10 版本種の互換性
pgBackRest は、サポートされている 5 つのバージョンに加えて、過去 5 つのエンドオブライフ(EOL)バージョンもサポートしており、サポートされたバージョンへのアップグレードに十分な時間を確保できます。
初期設定
pgBackRest は簡単な構成と運用を目指しております:
- 各種オペレーティングシステムおよび PostgreSQL バージョン向けのユーザーガイド
- コマンドライン操作のためのコマンド参照
- pgBackRest 構成ファイルの作成に関する設定参照
スポンサーシップ
pgBackRest の存在自体がスポンサーなしには成り立ちません。新機能の開発、バグ修正、コントリビューションのレビュー、コミュニティからの質問への回答、保守活動などはすべて considerable な時間を要します。
現在のスポンサー:Supabase
過去のスポンサー:Crunchy Data, Resonate
謝辞
Armchair イラストは Alexander Skowalsky 氏によるものです。