本文へ移動

これはセクションの複数ページ印刷用ビューです。 .

このページの通常のビューに戻る.

pgBackRest 2.59.3 ドキュメント

信頼性の高いPostgreSQLのバックアップとリストア — pgBackRestのドキュメントとリファレンス。

はじめに

pgBackRestは、最大規模のデータベースやワークロードにもシームレスに対応できる、PostgreSQL向けの信頼性の高いバックアップとリストアのソリューションです。

このドキュメントミラーはpgBackRest v2.59.3 を対象としています。リリースノートはリリース ページにあります。

2.59.3では、脆弱な暗号化サブキーやソルトが生成される可能性がある問題が修正されました。アップグレードしても、スタンザの既存の脆弱なサブキーは置き換わりません。確認手順と対処方法は脆弱な暗号化サブキーとソルト を参照してください。

pgBackRestを気に入っていただけたら、GitHub でスターを付けてください!


ニュース

2026年10月4日 - 脆弱な暗号化サブキーとソルト

2026年10月4日 - pgBackRest 2.59.3をリリース

2026年9月27日 - pgBackRest 2.59.2をリリース


スポンサー

pgBackRestはスポンサーの支援なしには存在し得ません。新機能の開発、バグの修正、コントリビューションのレビュー、コミュニティからの質問への回答、保守には、いずれも多くの時間がかかります。企業でpgBackRestを使用している場合は、スポンサーとしての支援 をご検討ください。

スポンサー:AWS 、Supabase 、pgEdge 、Tiger Data 、Percona 、Eon 、Xata 、Dalibo 、Data Egret 。

PostgreSQLコミュニティ全体に役立つオープンソースのインフラストラクチャーへの投資に、心より感謝いたします。

過去のスポンサー:Crunchy Data 、Resonate 。


機能

並列バックアップとリストア

バックアップ処理では通常、圧縮がボトルネックになります。pgBackRestは、並列処理と、lz4やzstdなどのより効率的な圧縮アルゴリズムによってこの問題を解決します。

ローカルまたはリモートでの操作

独自のプロトコルにより、最小限の構成で、ローカルまたはTLS/SSH経由のリモートでバックアップ、リストア、アーカイブを実行できます。プロトコル層にはPostgreSQLにクエリーを実行するインターフェースも用意されているため、PostgreSQLへのリモートアクセスは一切不要となり、セキュリティが向上します。

複数のリポジトリ

複数のリポジトリを使用すると、たとえば、高速なリストアのために保持期間を最小限にしたローカルリポジトリと、冗長性および企業全体からのアクセスのために保持期間を長くしたリモートリポジトリを併用できます。

フル・差分・増分バックアップ(ファイル単位またはブロック単位)

フルバックアップ、差分バックアップ、増分バックアップをサポートしています。pgBackRestはrsyncの時刻分解能の問題の影響を受けないため、各ファイルのチェックサムを計算しなくても、差分バックアップと増分バックアップを安全に実行できます。ブロック単位のバックアップでは、ファイルの変更された部分だけをコピーすることで容量を節約します。

バックアップの世代管理とアーカイブの期限切れ処理

フルバックアップと差分バックアップの保持ポリシーを設定し、任意の期間をカバーできます。WALアーカイブは、すべてのバックアップに対して保持することも、直近のバックアップだけに限定して保持することもできます。後者の場合でも、古いバックアップの整合性を確保するために必要なWALはアーカイブに保持されます。

バックアップの整合性

バックアップ内のすべてのファイルについてチェックサムを計算し、リストアまたは検証時に再確認します。バックアップのファイルコピーが完了すると、バックアップの整合性を確保するために必要なすべてのWALセグメントがリポジトリに到着するまで待機します。

リポジトリ内のバックアップは、テーブルスペースを含む標準的なPostgreSQLクラスターと同じ形式で保存できます。圧縮を無効にし、ハードリンクを有効にすると、リポジトリ内のバックアップのスナップショットを作成し、そのスナップショット上でPostgreSQLクラスターを直接起動できます。これは、従来の方法ではリストアに時間がかかるテラバイト規模のデータベースに有用です。

すべての操作でファイルとディレクトリ単位のfsyncを使用し、永続性を確保します。

ページチェックサム

ページチェックサムが有効な場合、pgBackRestはバックアップ中にコピーするすべてのファイルのチェックサムを検証します。フルバックアップではすべてのページチェックサムを検証し、差分バックアップと増分バックアップでは変更されたファイルのチェックサムを検証します。

検証に失敗してもバックアップ処理は停止しませんが、検証に失敗したページを特定する詳細な警告をコンソールとファイルログに出力します。

この機能により、正常なデータのコピーを含むバックアップの保持期限が切れる前に、ページ単位の破損を早期に検出できます。

バックアップの再開

中断されたバックアップは、停止した時点から再開できます。すでにコピーされたファイルをマニフェスト内のチェックサムと比較し、整合性を確認します。この操作はリポジトリホスト内だけで完結できるため、PostgreSQLホストの負荷を軽減できます。また、チェックサムの計算はデータの圧縮と再転送より速いため、時間も短縮できます。

ストリーミング圧縮とチェックサム

リポジトリがローカルとリモートのどちらにある場合でも、ファイルをリポジトリにコピーする際に、ストリーム内で圧縮とチェックサムの計算を実行します。

リポジトリがリポジトリホスト上にある場合は、PostgreSQLホストで圧縮を実行し、圧縮形式でファイルを転送します。リポジトリホストではそのまま保存するだけです。圧縮が無効な場合は、CPUの負荷を最小限に抑えながら利用可能な帯域幅を効率的に使うため、低い圧縮レベルを使用します。

差分リストア

マニフェストにはバックアップ内のすべてのファイルのチェックサムが含まれているため、リストア時にこれらを利用して処理を大幅に高速化できます。差分リストアでは、まずバックアップに存在しないファイルを削除し、残ったファイルのチェックサムを計算します。バックアップと一致するファイルはそのまま残し、それ以外のファイルは通常どおりリストアします。並列処理により、リストア時間を大幅に短縮できます。

WALの並列・非同期送信と取得

WALをアーカイブへ送信する専用コマンドと、アーカイブから取得する専用コマンドを備えています。両コマンドとも、処理を高速化するための並列処理をサポートし、PostgreSQLへの応答時間を可能な限り短縮するため非同期に動作します。

WALの送信では、複数回送信されたWALセグメントを自動的に検出し、同一のセグメントであれば重複を排除し、異なる場合はエラーを返します。非同期のWAL送信では、転送を別のプロセスに任せ、そのプロセスでWALセグメントを並列に圧縮してスループットを最大化できます。これは、書き込み量が極めて多いデータベースにとって重要な機能となり得ます。

非同期のWAL取得では、展開済みで再生可能なWALセグメントのローカルキューを維持します。これにより、PostgreSQLにWALを提供するまでの時間を短縮し、再生速度を最大化します。レイテンシーの高い接続やストレージ(S3など)で特に効果があります。

送信コマンドと取得コマンドは、いずれもPostgreSQLのバージョンとシステム識別子を比較し、データベースとリポジトリが一致することを確認します。これにより、WALアーカイブの保存先を誤って設定する可能性をほぼ排除できます。

テーブルスペースを完全にサポートし、リストア時には任意の場所に再配置できます。単一のコマンドですべてのテーブルスペースを一か所に再配置することもでき、開発用のリストアに便利です。

PostgreSQLクラスター内の任意のファイルやディレクトリに対するリンクをサポートしています。リストア時には、すべてのリンクを元の場所に復元する、一部またはすべてのリンクを再配置する、あるいは一部またはすべてのリンクをクラスターのディレクトリ内の通常のファイルやディレクトリとしてリストアすることができます。

S3、Azure、GCS互換オブジェクトストアのサポート

pgBackRestのリポジトリは、S3、Azure、GCS互換のオブジェクトストアに配置でき、事実上無制限の容量と保持期間を実現できます。

暗号化

pgBackRestはリポジトリを暗号化でき、保存場所にかかわらずバックアップを保護します。

ランサムウェアとマルウェアからの保護

リポジトリがバージョニングを有効にしたオブジェクトストレージに保存されている場合、pgBackRestは特定時点の状態のリポジトリを読み取ることができます。誤操作、マルウェア、ランサムウェアによってバックアップが削除または破損した場合は、対象時刻を指定し、被害が発生する前のデータをリカバリーできます。

バージョニングはS3、Azure、GCS互換のオブジェクトストアでサポートされています。S3のオブジェクトロックや、GCSまたはAzureの論理削除によって、改ざんに対する保護をさらに強化できます。

PostgreSQLの10バージョンとの互換性

pgBackRestは、サポート対象の5バージョンと、直近のサポート終了済み5バージョン、計10バージョンのPostgreSQLをサポートしています。これにより、サポート対象のバージョンへアップグレードするための十分な時間を確保できます。


使い始めるには

pgBackRestは、簡単に構成して運用できることを目指しています。


コントリビューション

pgBackRestへのコントリビューションは常に歓迎しています。機能の追加、改善、問題の報告については、コントリビューションガイドライン をご覧ください。


サポート

pgBackRestは、MIT ライセンスのもとで公開されている、完全に無償のオープンソースソフトウェアです。個人利用でも商用利用でも、一切の制限なく使用できます。バグ報告は重く受け止め、可能な限り速やかに対応します。バグはこちら から報告してください。

適切なレプリケーションとバックアップ戦略を備えた堅牢な災害復旧ポリシーの策定は、非常に複雑で困難な作業となる場合があります。アーキテクチャーの設計段階で支援が必要になったり、企業の円滑な運営を継続するために継続的なサポートが必要になったりすることもあります。

スポンサー は、pgBackRestのサポートを含む製品やサービスを提供しており、災害復旧のニーズに応じた支援を受けられます。

1 - ニュース

pgBackRestプロジェクトの公式ニュース、リリース案内、保守に関する最新情報。

脆弱な暗号化サブキーとソルト

2026年10月4日

2.59.3より前のpgBackRestは、暗号化用のランダムデータを生成する際にエラーを確認していませんでした。OpenSSLがオペレーティングシステムからランダムデータを取得できない場合、メモリ内に既に存在するデータから暗号化サブキーとソルトが生成され、エラーは報告されませんでした。暗号化されていないリポジトリは影響を受けません。

このエラーが発生することはまれと考えられます。原因として、getrandom()システムコールをブロックするサンドボックスやseccompポリシー、無効なOpenSSL設定などが考えられます。

主に問題となるのは、archive.infoとbackup.info内のサブキーです。これらはstanza-createで一度だけ生成され、スタンザの存続期間を通して使用されるため、アップグレードしても脆弱なサブキーは置き換わりません。バックアップ用の脆弱なサブキーとソルトは、バックアップとWALの有効期限が切れるにつれて削除されます。

影響

WALのサブキーはarchive.infoに、マニフェストのサブキーはbackup.infoに保存されます。脆弱なサブキーはランダムなサブキーより推測しやすく、推測に成功すると、repo-cipher-passなしで、そのサブキーで暗号化されたファイルを復号できます。推測の容易さはメモリ内のデータに依存し、プラットフォームやビルドによって異なります。archive.infoのサブキーが脆弱だと、リポジトリ内のすべてのWALが漏えいの危険にさらされます。backup.infoのサブキーが脆弱だと、すべてのバックアップが漏えいの危険にさらされます。マニフェストはそのサブキーで暗号化され、各マニフェストには対応するバックアップのファイル用サブキーが保存されているためです。これにはアップグレード後に追加されたWALとバックアップも含まれます。

バックアップ内のファイル用サブキーは、完全バックアップごとに生成され、その完全バックアップに基づく差分バックアップと増分バックアップでも使用されます。バックアップ用サブキーが脆弱だと、これらのバックアップ内のファイルが漏えいの危険にさらされます。

脆弱なソルト自体がサブキーを露出させることはありません。同じサブキーとソルトで暗号化されたファイルは同じキーとIVを使用するため、それらのファイル内の同一データからは同一の暗号文が生成されます。ソルトは各ファイルの先頭に平文で保存され、脆弱なソルトには、それまでメモリに存在していたデータが最大8バイト含まれる可能性があります。

サブキーの確認

リポジトリにアクセスできるホストで、STANZAにスタンザ名を設定して以下を実行してください。最初のリポジトリ以外を確認するには、pgbackrestコマンドに--repoを追加してください。

STANZA=demo

for file in archive/$STANZA/archive.info backup/$STANZA/backup.info; do
    for key in $(pgbackrest --stanza=$STANZA repo-get $file | grep '^cipher-pass=' | grep -oE '[A-Za-z0-9+/]{64}'); do
        echo "$(printf '%s' $key | base64 -d | od -An -v -tx1 | tr -s ' ' '\n' | grep -c '^00$') $file"
    done
done

最初の列はサブキー内のゼロバイトの数です。ランダムなサブキーに6個以上のゼロバイトが含まれる確率は25,000,000分の1未満ですが、テストで見つかった脆弱なサブキーには13個以上含まれていました。ゼロバイトが6個以上含まれるサブキーは脆弱とみなすべきです。

OpenSSL 1.0

2.53より前のpgBackRestはOpenSSL 1.0でビルドできました。このバージョンでは、オペレーティングシステムからランダムデータを取得できないと、ランダムデータでシードを設定していない状態からランダムデータを生成します。この方法で生成された脆弱なサブキーは、上記の確認方法では検出できません。

対処方法

  • pgBackRest 2.59.3以降にアップグレードしてください。これらのバージョンは、ランダムデータを生成できない場合にエラーを報告します。
  • archive.infoまたはbackup.info内のサブキーが脆弱な場合は、新しいリポジトリにスタンザを作成し、古いリポジトリはそのバックアップが必要な間だけ保持してください。
  • 差分バックアップと増分バックアップは、その基となる完全バックアップのサブキーを使用するため、アップグレード後に新しい完全バックアップを作成することを検討してください。
  • バックアップ用の脆弱なサブキーとソルトは、アップグレード前のバックアップとWALの有効期限が切れるにつれて削除されます。保持期間が長いバックアップでは、有効期限が切れるまで残ります。

pgBackRest 2.59.3リリース

2026年10月4日

pgBackRestコミュニティは、pgBackRest 2.59.3のリリースをお知らせします。信頼性が高く使いやすいバックアップおよびリストアソリューションの最新版で、最大規模のデータベースやワークロードにもシームレスに対応できます。

pgBackRestは、バックアップとリカバリーの基盤を管理するための充実した機能を備えています。並列バックアップ/リストア、フル/差分/増分バックアップ、ブロック増分バックアップ、複数リポジトリ、差分リストア、並列非同期アーカイブ、マルウェア/ランサムウェア対策、ファイル単位のチェックサム、バックアップ時のページチェックサム検証(有効な場合)、複数の圧縮形式、暗号化、途中まで実行したバックアップや失敗したバックアップの再開、スタンバイからのバックアップ、テーブルスペースとリンク、S3/Azure/GCS/SFTP、バックアップの期限切れ処理、SSHまたはTLSによるローカル/リモート操作、柔軟な設定などに対応しています。

pgBackRestはPostgreSQL Yum Repository またはPostgreSQL APT Repository からインストールできます。他の多くのディストリビューション向けにもパッケージが提供されています。ソースコードはリリース からダウンロードできます。

バグ修正

  • 脆弱な暗号化サブキーやソルトが生成される可能性がある問題を修正 (j0uinim)
  • 暗号化された情報ファイルとマニフェストの読み込み時にチェックサムエラーが発生する可能性がある問題を修正 (j0uinim)

その他の修正と改善については、2.59.3リリースノート を参照してください。

重要な注意事項

  • 以前のバージョンでは、システムのランダムデータへのアクセス時にエラーが発生すると、脆弱な暗号化サブキーやソルトが生成される可能性がありました。詳細は脆弱な暗号化サブキーとソルト を参照してください。

スポンサー

このリリースは、AWS 、Supabase 、pgEdge 、Tiger Data 、Percona 、Eon 、Xata 、Dalibo 、Data Egret の寛大なスポンサー支援により実現しました。


pgBackRest 2.59.2リリース

2026年9月27日

pgBackRestコミュニティは、pgBackRest 2.59.2のリリースをお知らせします。信頼性が高く使いやすいバックアップおよびリストアソリューションの最新版で、最大規模のデータベースやワークロードにもシームレスに対応できます。

pgBackRestは、バックアップとリカバリーの基盤を管理するための充実した機能を備えています。並列バックアップ/リストア、フル/差分/増分バックアップ、ブロック増分バックアップ、複数リポジトリ、差分リストア、並列非同期アーカイブ、マルウェア/ランサムウェア対策、ファイル単位のチェックサム、バックアップ時のページチェックサム検証(有効な場合)、複数の圧縮形式、暗号化、途中まで実行したバックアップや失敗したバックアップの再開、スタンバイからのバックアップ、テーブルスペースとリンク、S3/Azure/GCS/SFTP、バックアップの期限切れ処理、SSHまたはTLSによるローカル/リモート操作、柔軟な設定などに対応しています。

pgBackRestはPostgreSQL Yum Repository またはPostgreSQL APT Repository からインストールできます。他の多くのディストリビューション向けにもパッケージが提供されています。ソースコードはリリース からダウンロードできます。

新機能と不具合修正

  • PostgreSQL 19beta4のサポート (David Steele)
  • バックアップ中にファイルがゼロサイズに切り詰められた場合の空のブロックマップの問題を修正 (David Steele)
  • ドライバーにフィルターが渡された場合の読み取り再試行を無効化 (David Steele)
  • S3バージョン一覧のページ分割を修正 (David Steele)
  • SAS認証用のAzureバージョンヘッダーを設定 (David Steele)
  • サイズがゼロのバックアップ履歴ファイルで非同期archive-pushが停止する問題を修正 (Andrew Kroh)
  • リモートの暗号化リポジトリに対するannotateコマンドを修正 (Douglas J Hunley)

その他の修正と改善については、2.59.2リリースノート を参照してください。

重要な注意事項

  • PostgreSQL 19beta4ではpg_controlとWALの形式が変更されたため、それ以前の19ベータ版のクラスターとWALはサポートされなくなりました。以前のベータ版を実行しているクラスターは、19beta4で再作成することを推奨します。

スポンサー

このリリースは、AWS 、Supabase 、pgEdge 、Tiger Data 、Percona 、Eon 、Xata 、Dalibo 、Data Egret の寛大なスポンサー支援により実現しました。


pgBackRest 2.59.1リリース

2026年8月17日

pgBackRestコミュニティは、pgBackRest 2.59.1のリリースをお知らせします。信頼性が高く使いやすいバックアップおよびリストアソリューションの最新版で、最大規模のデータベースやワークロードにもシームレスに対応できます。

pgBackRestは、バックアップとリカバリーの基盤を管理するための充実した機能を備えています。並列バックアップ/リストア、フル/差分/増分バックアップ、ブロック増分バックアップ、複数リポジトリ、差分リストア、並列非同期アーカイブ、マルウェア/ランサムウェア対策、ファイル単位のチェックサム、バックアップ時のページチェックサム検証(有効な場合)、複数の圧縮形式、暗号化、途中まで実行したバックアップや失敗したバックアップの再開、スタンバイからのバックアップ、テーブルスペースとリンク、S3/Azure/GCS/SFTP、バックアップの期限切れ処理、SSHまたはTLSによるローカル/リモート操作、柔軟な設定などに対応しています。

pgBackRestはPostgreSQL Yum Repository またはPostgreSQL APT Repository からインストールできます。他の多くのディストリビューション向けにもパッケージが提供されています。ソースコードはリリース からダウンロードできます。

新機能と不具合修正

  • PostgreSQL 19beta3のサポート (Lardière Sébastien)
  • チャンクバッファーが入力バッファーより小さい場合にハングする問題を修正 (David Steele)
  • 新しいバックアップラベルの比較対象を、そのラベルが属するフルバックアップセットのみに限定 (David Steele)
  • GitHubが生成するソースアーカイブにビルドに必要なファイルが含まれない問題を修正 (David Steele)

その他の修正と改善については、2.59.1リリースノート を参照してください。

重要な注意事項

  • PostgreSQL 19beta3ではWAL形式が変更されたため、それ以前のPostgreSQL 19ベータ版でアーカイブしたWALは読み取れなくなりました。以前のベータ版を実行しているクラスターは、19beta3で再作成することを推奨します。

スポンサー

このリリースは、AWS 、Supabase 、pgEdge 、Tiger Data 、Percona 、Eon 、Xata 、Dalibo 、Data Egret の寛大なスポンサー支援により実現しました。


新しい配布用tarアーカイブ

2026年7月20日

pgBackRest 2.59.0以降、各リリースにはソースからのビルドを簡単にする配布用tarアーカイブが含まれます。gitリポジトリのチェックアウトとは異なり、このtarアーカイブには生成済みのソースコードとレンダリング済みのドキュメントが同梱されています。このため、リポジトリのチェックアウトで必要になるコード生成やドキュメント用のツールなしで、pgBackRestをビルドしてインストールできます。

tarアーカイブには、生成済みコードを含むpgBackRestのソース、コマンドリファレンスのmanページ、HTMLドキュメント、ビルドを検証するスモークテストが含まれています。通常のpgBackRestライブラリだけを使用し、mesonとninjaでビルドできます。

tarアーカイブはpgbackrest-{version}.tar.gzという名前のアセットとして、対応する.sha256sumチェックサムとともに各リリースに添付されます。GitHubのリリース ページからダウンロードし、ビルドとテストの手順についてはtarアーカイブ内のREADME.mdを参照してください。

パッケージ作成者には、配布用tarアーカイブからビルドすることを推奨します。これにより、今後のリリースでコードとドキュメントの生成に必要になる追加のビルドツールを導入せずに済みます。


pgBackRest 2.59.0リリース

2026年7月20日

pgBackRestコミュニティは、pgBackRest 2.59.0のリリースをお知らせします。信頼性が高く使いやすいバックアップおよびリストアソリューションの最新版で、最大規模のデータベースやワークロードにもシームレスに対応できます。

pgBackRestは、バックアップとリカバリーの基盤を管理するための充実した機能を備えています。並列バックアップ/リストア、フル/差分/増分バックアップ、ブロック増分バックアップ、複数リポジトリ、差分リストア、並列非同期アーカイブ、マルウェア/ランサムウェア対策、ファイル単位のチェックサム、バックアップ時のページチェックサム検証(有効な場合)、複数の圧縮形式、暗号化、途中まで実行したバックアップや失敗したバックアップの再開、スタンバイからのバックアップ、テーブルスペースとリンク、S3/Azure/GCS/SFTP、バックアップの期限切れ処理、SSHまたはTLSによるローカル/リモート操作、柔軟な設定などに対応しています。

pgBackRestはPostgreSQL Yum Repository またはPostgreSQL APT Repository からインストールできます。他の多くのディストリビューション向けにもパッケージが提供されています。ソースコードはリリース からダウンロードできます。

主な新機能と改善

  • PostgreSQL 19のサポート (David Steele)
  • WALアーカイブを整理するarchive-expire-beforeオプションを追加 (Stefan Fercot)
  • S3 Outpostsのサポートを追加 (Shiva Kumar Ambigi)
  • S3のプロセス認証を追加 (David Steele)
  • マニフェストの作成を高速化するユーザー/グループキャッシュを追加 (Gunnar Lindholm)
  • サーバーがアイドル接続を切断した後にSFTPストレージへ再接続 (David Steele)
  • infoコマンドの出力にリポジトリごとのバックアップ進捗を追加 (Will Morland)
  • Azureストレージの一括削除を追加 (David Steele)
  • verifyコマンドにbackup.infoのチェックを追加 (Denis Garsh)
  • S3 STSエンドポイントを設定可能に変更 (Simon Gratton)
  • systemd notifyとの連携を追加 (Andrew Jackson)
  • allow-rootが有効でない限り、rootでの実行時にエラーを発生 (David Steele)
  • 最初のエラーで非同期archive-pushを終了 (David Steele)

その他の機能と改善については、2.59.0リリースノート を参照してください。

重要な注意事項

  • デフォルトでrootとして実行できるのはrestoreコマンドのみです。他のコマンドをrootとして実行するにはallow-rootを使用してください(ただし推奨されません)。
  • パッケージ作成を簡単にするため、生成済みのドキュメント、manページ、コードを含む新しい配布用tarアーカイブが各リリースに添付されます。詳細は新しい配布用tarアーカイブ を参照してください。
  • 新たにlibsystemdへの任意の依存関係が追加されました。

スポンサー

このリリースは、AWS 、Supabase 、pgEdge 、Tiger Data 、Percona 、Eon 、Xata 、Dalibo 、Data Egret の寛大なスポンサー支援により実現しました。


pgBackRestの開発を継続します!

2026年5月18日

pgBackRestの開発を継続できることをお知らせします!ここ数週間で複数のスポンサーが集まり、継続的な開発に資金を提供してくださることになりました。この支援により、プロジェクトは単一のスポンサーに依存しなくなり、pgBackRestが長期にわたって活動するための安定した基盤が得られます。

スポンサー各社に感謝します。

Amazon Web Services は、個人、企業、政府向けにクラウドコンピューティングリソースをオンデマンドで提供しています。コンピューティング能力、ストレージ、データベース、機械学習など200を超えるサービスを、利用した分だけ支払って使えます。利用者とともに成長することを目指し、共通のコミュニティに投資しています。

Supabase は、PostgreSQLを基盤とする包括的なバックエンドプラットフォームです。開発者はインフラを管理することなく、アプリケーションを迅速に構築、拡張できます。Postgresデータベース、ユーザー認証、リアルタイムサブスクリプション、ファイルストレージ、エッジ関数、サーバーレス関数を備え、活発なオープンソースコミュニティが支えています。

pgEdge は、AIや高可用性などに対応したエンタープライズ向けのオープンソースPostgresプラットフォームです。エージェント型AI向けのネイティブツールとDBAワークベンチ、監視とインシデント対応、柔軟なデプロイ、無停止の保守を提供します。クラウド、オンプレミス、エアギャップ環境で、単一ノードからアクティブ/アクティブのマルチマスター構成まで拡張できます。

TimescaleDBの開発元であるTiger Data は、PostgreSQLを基盤とするオープンソースの時系列データベースを開発し、時系列、分析、AIワークロード向けのマネージドプラットフォームTiger Cloudを運営しています。自己管理型とクラウドのいずれでも、組織はエッジから集中型クラウドまで、時系列データを大規模に収集、保存、分析できます。

Percona は、オープンソースのデータベースソフトウェア、サポート、サービスを提供する企業です。組織がデータ基盤を完全に管理し続けられるよう支援することに注力しています。無償で利用できるオープンソースソフトウェア、24/7の専門サポート、実践的なデータベースの専門知識を通じて、企業がMySQL、PostgreSQL、MongoDB、Valkey、Redisを安全かつ効率的に運用できるよう支援しています。

Eon.io は、バックアップ、リカバリー、データ管理のためのインテリジェントなクラウド基盤です。チームがバックアップをより効率的に保存、参照し、分析やAIのワークフローでデータを利用できるようにします。あらゆるクラウドのPostgresやデータ集約型ワークロードに対して、高速できめ細かなリカバリーとストレージコストの大幅な削減を実現します。誤操作によるデータ損失やAIエージェントによる不具合からの復旧にも対応しています。

これらの組織は、自社製品と顧客に信頼できる災害復旧機能を提供するためにpgBackRestを利用しています。各社の投資は、PostgreSQLエコシステムでpgBackRestが果たす重要な役割を示しており、各社が協力して支援することで、プロジェクトの長期的な継続が可能になります。

開発に戻るのが楽しみです。準備中の機能や最適化があり、今後のリリースでお届けできることを心待ちにしています。これを可能にしてくださったスポンサーの皆様、そしてこの移行期間に辛抱強く支えてくださったコミュニティの皆様に感謝します。


保守に関する続報

2026年5月4日

pgBackRestの保守を終了すると発表した後、受信箱には大量のメールが届きました。整理にはしばらくかかりましたが、その多くは、長年の取り組みに対する応援や感謝の言葉でした。

ただ、すぐに共通の声が見えてきました。多くのpgBackRestユーザー、とりわけ自分たちのpgBackRestユーザーをサポートする立場の方々は、私が主なメンテナーとしてプロジェクトを続けることを望んでいるようです。私もそれを何より望んでいますが、数か月にわたる資金調達活動の末、実現は難しいと判断したばかりでした。

状況は変わり、プロジェクトを継続するのに十分な資金を確保できることがほぼ確実になったようです。今回は複数のスポンサーが共同でpgBackRestに資金を提供するため、1社の買収がプロジェクトの作業継続を左右することはなくなります。また、もう1人のメンテナーを迎え、作業を分担するとともに、将来にわたる継続性を確保できる見込みです。

この発表が衝撃を与え、多くの不確実性を生んだことは承知しています。もうしばらくお待ちください。現在のpgBackRestは動作しており、未解決の重大な不具合やセキュリティ問題はないため、直ちにプロジェクトをフォークする必要はありません。

週末までには、より確定的な発表ができると考えています。それまで少しお待ちください。pgBackRestの再始動に向けて積極的に取り組んでいます。


pgBackRestの保守終了について

2026年4月27日

要点:pgBackRestの保守を終了します。pgBackRestをフォークする場合は、プロジェクトに新しい名前を付けてください。

熟考の末、pgBackRestの開発をやめることにしました。軽い気持ちで決めたわけではありません。pgBackRestは過去13年間、情熱を注いできたプロジェクトです。幸い、その多くの期間に企業からのスポンサー支援を受けられましたが、多くの貢献者に助けられながら現在のpgBackRestを築くために、深夜や週末を費やすことも少なくありませんでした。オープンソース開発者なら誰もが、私の言う意味や、特別なプロジェクトに人生のどれほど多くを捧げることになるかをよくご存じでしょう。

Crunchy Dataの売却以降、pgBackRestを保守しながら、この仕事を続けられる職を探してきましたが、これまでのところ見つかっていません。同様に、スポンサー獲得の取り組みも、プロジェクトを継続するために必要な水準には大きく届いていません。

他の人と同じように、私も生計を立てる必要がありますが、pgBackRest関連の仕事は非常に限られています。今後はより幅広い仕事を検討できますが、それらに就くとpgBackRestに取り組む時間はなくなります。保守、不具合修正、PRレビュー、issueへの回答などだけでも相当の時間が必要です。そこには、私が最も好きな新機能の開発時間すら含まれていません。不十分な、あるいは散発的な作業を続けるより、明確に区切りを付けるほうがよいと考えています。

いずれpgBackRestはフォークされると思います。ただ、それは新しいメンテナーによる新しいプロジェクトとなり、私たちと同じように信頼を築いていく必要があります。

最後に、長年にわたりpgBackRestに貢献してくださった皆様に、改めて感謝します。皆様と一緒に取り組めたことは喜びでした!

2 - ユーザーガイド(Debian/Ubuntu)

DebianおよびUbuntu向けのpgBackRestの設定と使用方法を手順に沿って説明します。

はじめに

このユーザーガイドは、各セクションが前のセクションを前提としているため、最初から順に読むことを想定しています。たとえば、リストア のセクションは、クイックスタート で行う設定を前提としています。pgBackRestを起動して運用できるようになった後は必要な箇所を参照できますが、初回は順に読み進めることをお勧めします。

このガイドの例はDebian/UbuntuとPostgreSQL 17を対象としていますが、どのUnixディストリビューションやPostgreSQLバージョンにも比較的容易に応用できます。OS固有のコマンドは、PostgreSQLクラスターの作成、起動、停止、削除に使うものだけです。pgBackRestのコマンドはどのUnixシステムでも同じですが、実行ファイルの場所は異なる場合があります。pgBackRestはPostgreSQLの各バージョンで一貫した動作を目指していますが、PostgreSQLのパス名、ファイル名、設定など、バージョン間の微妙な違いがこのガイドの例に現れる場合があります。

PostgreSQLの設定情報とドキュメントは、PostgreSQLのマニュアル を参照してください。

このユーザーガイドでは、ドキュメントの作成に少し変わった方法を採用しています。XMLソースからドキュメントをビルドする際、各コマンドを仮想マシンで実行します。そのため、記載された順序でコマンドが正しく動作することを高い確度で期待できます。必要に応じて出力を取得し、コマンドの下に表示しています。出力を載せていないのは、説明に関係しないか、説明の妨げになると判断したためです。

すべてのコマンドは、rootとpostgresの両ユーザーに対するsudo権限を持つ一般ユーザーで実行することを想定しています。各コマンドは対応するユーザーで直接実行することもでき、その場合はsudoの部分を取り除くだけで、ほかの変更は不要です。


概念

ここでは、pgBackRest、PostgreSQL、およびこのユーザーガイドに関係する概念を定義します。

バックアップ

バックアップとは、データベースクラスターの整合性のあるコピーです。リストアすることで、ハードウェア障害からの復旧、ポイントインタイムリカバリー、新しいスタンバイの起動に利用できます。

フルバックアップ:pgBackRestはデータベースクラスターの内容全体をバックアップにコピーします。データベースクラスターの最初のバックアップは必ずフルバックアップになります。pgBackRestはフルバックアップを常に直接リストアできます。フルバックアップの整合性は、そのバックアップ外のファイルに依存しません。

差分バックアップ:pgBackRestは、最後のフルバックアップ以降に変更されたデータベースクラスターのファイルだけをコピーします。差分バックアップのリストアでは、選択した差分バックアップの全ファイルと、その前のフルバックアップに含まれる変更のない該当ファイルをコピーします。差分バックアップはフルバックアップより少ないディスク容量で済みますが、リストアするには差分バックアップとフルバックアップの両方が有効でなければなりません。

増分バックアップ:pgBackRestは、最後のバックアップ(増分、差分、フルのいずれか)以降に変更されたデータベースクラスターのファイルだけをコピーします。増分バックアップには直前のバックアップ以降に変更されたファイルしか含まれないため、通常はフルバックアップや差分バックアップより大幅に小さくなります。差分バックアップと同様、増分バックアップのリストアには、依存先のバックアップも有効である必要があります。増分バックアップには最後のバックアップ以降のファイルしか含まれないため、リストアするには、前の差分バックアップまでさかのぼるすべての増分バックアップ、その差分バックアップ、およびその前のフルバックアップがすべて有効でなければなりません。差分バックアップが存在しない場合は、必ず存在する前のフルバックアップまでのすべての増分バックアップと、そのフルバックアップ自体が有効でなければなりません。

リストア

リストアとは、稼働するデータベースクラスターとして起動するシステムに、バックアップをコピーする操作です。正しくリストアするには、バックアップファイルと1つ以上のWALセグメントが必要です。

先行書き込みログ(WAL)

WALは、コミット済みの変更が失われないことをPostgreSQLが保証するための仕組みです。トランザクションはWALに順次書き込まれ、その書き込みがディスクにフラッシュされるとコミットされたとみなされます。その後、バックグラウンドプロセスが変更をデータベースクラスターの本体ファイル(ヒープとも呼ばれます)に書き込みます。クラッシュ時にはWALを再生して、データベースの整合性を回復します。

WALは概念上は無限に続きますが、実際にはセグメントと呼ばれる16MBの個別ファイルに分割されます。WALセグメントの名前は0000000100000A1E000000FEという形式で、先頭の16進数8桁がタイムライン、続く16桁が論理シーケンス番号(LSN)を表します。

暗号化

暗号化とは、適切なパスワード(パスフレーズとも呼ばれます)を指定しない限り認識できない形式にデータを変換する処理です。

pgBackRestはユーザーが指定したパスワードに基づいてリポジトリを暗号化し、リポジトリ内のデータへの不正アクセスを防ぎます。


pgBackRestのアップグレード

pgBackRestをv2.xからv2.yにアップグレードする

v2.xからv2.yへのアップグレードは簡単です。リポジトリ形式は変わっていないため、ほとんどの環境では新しいバージョンのバイナリをインストールするだけで済みます。古いバージョンでサポートされていない新機能を使用していなければ、ダウングレードも可能です。

重要:

ローカルとリモートのpgBackRestのバージョンは完全に一致する必要があるため、同時にアップグレードすることをお勧めします。一致しない場合、バージョンが揃うまでWALアーカイブとバックアップは動作しません。その場合、次のエラーが報告されます:[ProtocolError] expected value '2.x' for greeting key 'version' but got '2.y'。


ビルド

pgBackRestはソースからビルドするより、パッケージからインストールすることをお勧めします。パッケージの詳細はインストール を参照してください。

ソースからビルドする場合は、本番環境ではなくビルド用ホストを使うことをお勧めします。ビルドに必要なツールの多くは、通常、本番環境にはインストールしないほうがよいものです。pgBackRestは単一の実行ファイルで構成されるため、ビルド後は簡単に別のホストにコピーできます。

build ⇒ pgBackRestのバージョン2.59.3を/buildパスにダウンロードする

mkdir -p /build
curl -fsSL \
       https://github.com/pgbackrest/pgbackrest/releases/download/release%2F2.59.3/pgbackrest-2.59.3.tar.gz | \
       tar zx -C /build

build ⇒ ビルドの依存パッケージをインストールする

sudo apt-get install python3-distutils meson gcc libpq-dev libssl-dev libxml2-dev \
       pkg-config liblz4-dev libzstd-dev libbz2-dev libz-dev libssh2-1-dev libsystemd-dev

build ⇒ pgBackRestのビルドを設定してコンパイルする

meson setup /build/pgbackrest /build/pgbackrest-2.59.3
ninja -C /build/pgbackrest

build ⇒ 必要に応じてスモークテストを実行し、pgBackRestが正しくビルドされたことを確認する

meson test -C /build/pgbackrest --suite smoke
ninja: Entering directory `/build/pgbackrest'
ninja: no work to do.
1/1 smoke OK               11.07s


       [filtered 7 lines of output]

インストール

デモクラスターを配置してpgBackRestの例を実行するために、pg-primaryという新しいホストを作成します。

pgBackRestはソースからビルドするより、パッケージからインストールすることをお勧めします。パッケージからインストールする場合、このセクションの残りの手順は通常不要ですが、パッケージが一部のディレクトリを作成しなかったり、誤った権限を設定したりする可能性があります。その場合は、手動でディレクトリを作成したり権限を更新したりする必要がある場合があります。

pgBackRestのDebian/Ubuntuパッケージはapt.postgresql.org から入手できます。

使用するディストリビューションやバージョン向けのパッケージがない場合は、ソースからビルド し、ここに示す手順で手動インストールできます。

pg-primary ⇒ 依存パッケージをインストールする

sudo apt-get install postgresql-client libxml2 libssh2-1

pg-primary ⇒ ビルド用ホストからpgBackRestバイナリをコピーする

sudo scp build:/build/pgbackrest/src/pgbackrest /usr/bin
sudo chmod 755 /usr/bin/pgbackrest

pgBackRestには、ログディレクトリ、設定ディレクトリ、設定ファイルが必要です。

pg-primary ⇒ pgBackRestの設定ファイルとディレクトリを作成する

sudo mkdir -p -m 770 /var/log/pgbackrest
sudo chown postgres:postgres /var/log/pgbackrest
sudo mkdir -p /etc/pgbackrest
sudo mkdir -p /etc/pgbackrest/conf.d
sudo touch /etc/pgbackrest/pgbackrest.conf
sudo chmod 640 /etc/pgbackrest/pgbackrest.conf
sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf

これでpgBackRestは正しくインストールされているはずですが、確認することをお勧めします。依存パッケージに不足があると、コマンドラインからpgBackRestを実行した際にエラーが発生します。

pg-primary ⇒ インストールが成功したことを確認する

sudo -u postgres pgbackrest
pgBackRest 2.59.3 - General help

Usage:
    pgbackrest [options] [command]

Commands:
    annotate        add or modify backup annotation
    archive-get     get a WAL segment from the archive
    archive-push    push a WAL segment to the archive
    backup          backup a database cluster
    check           check the configuration
    expire          expire backups that exceed retention
    help            get help
    info            retrieve information about backups
    repo-get        get a file from a repository
    repo-ls         list files in a repository
    restore         restore a database cluster
    server          pgBackRest server
    server-ping     ping pgBackRest server
    stanza-create   create the required stanza data
    stanza-delete   delete a stanza
    stanza-upgrade  upgrade a stanza
    start           allow pgBackRest processes to run
    stop            stop pgBackRest processes from running
    verify          verify contents of a repository
    version         get version

Use 'pgbackrest help [command]' for more information.

クイックスタート

クイックスタートでは、pgBackRestとPostgreSQLの基本設定を行い、backup、restore、infoコマンドを紹介します。

デモクラスターのセットアップ

デモクラスターの作成は任意ですが、このユーザーガイドのコマンド例がデモクラスターを参照するため、特に初めて使用する場合は作成を強くお勧めします。例では、デモクラスターがデフォルトのポート(5432)で稼働していることを前提としています。まだ設定が必要なため、クラスターの起動は後のセクションで行います。

pg-primary ⇒ デモクラスターを作成する

sudo -u postgres /usr/lib/postgresql/17/bin/initdb \
       -D /var/lib/postgresql/17/demo -k -A peer
sudo pg_createcluster 17 demo
Configuring already existing cluster (configuration: /etc/postgresql/17/demo, data: /var/lib/postgresql/17/demo, owner: 102:103)
Ver Cluster Port Status Owner    Data directory              Log file
17  demo    5432 down   postgres /var/lib/postgresql/17/demo /var/log/postgresql/postgresql-17-demo.log

クラスターのstanzaの設定

stanzaは、PostgreSQLデータベースクラスターの場所、バックアップ方法、アーカイブオプションなどを定義する設定です。ほとんどのデータベースサーバーにはPostgreSQLデータベースクラスターが1つしかないためstanzaも1つですが、バックアップサーバーにはバックアップ対象のデータベースクラスターごとにstanzaがあります。

stanzaにプライマリークラスターの名前を付けたくなるかもしれませんが、クラスターに含まれるデータベースを表す名前のほうが適切です。stanza名はプライマリーとすべてのレプリカで使うため、mainやprodのようなローカルクラスター名ではなく、appやdwのようにクラスターの実際の用途を表す名前を選ぶのが適切です。

「demo」はこのクラスターの目的を正確に表しているため、stanza名にも適しています。

pgBackRestは、PostgreSQLクラスターの基本データディレクトリの場所を知る必要があります。このパスはPostgreSQLに直接問い合わせることもできますが、リカバリー時にはPostgreSQLプロセスを利用できません。バックアップ時には、pgBackRestに指定された値をPostgreSQLが稼働しているパスと比較し、一致しなければエラーになります。pg-pathがPostgreSQLの報告するdata_directoryと完全に一致していることを確認してください。

Debian/Ubuntuではデフォルトでクラスターを/var/lib/postgresql/[version]/[cluster]に保存するため、正しいデータディレクトリのパスを容易に判断できます。

/etc/pgbackrest/pgbackrest.confファイルを作成する際は、データベース所有者(通常はpostgres)に読み取り権限を付与する必要があります。

pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ PostgreSQLクラスターのデータディレクトリを設定する

[demo]

pg1-path=/var/lib/postgresql/17/demo

pgBackRestの設定ファイルはWindowsのINIファイルに似た形式を使用します。セクションは角括弧で囲んだテキストで表し、各セクションにキーと値のペアを記述します。#で始まる行は無視されるためコメントに使用できますが、値と同じ行の末尾にコメントを付けることはできません。引用符による囲みはサポートされず、キーと値の前後の空白は除去されます。同じセクションが複数回現れた場合は統合されます。

pgBackRestの設定ファイルは、次のいずれかの方法で読み込めます。

  • configとconfig-include-pathがデフォルトの場合:デフォルトの設定ファイルが存在すれば読み込み、デフォルトの設定インクルードパスに*.confファイルが存在すれば追加します。
  • configオプションが指定されている場合:指定された設定ファイルだけを読み込みます。このファイルは存在する必要があります。
  • config-include-pathが指定されている場合:設定インクルードパスの*.confファイルを読み込みます。このパスは存在する必要があります。デフォルトの設定ファイルも、存在すれば読み込みます。指定した設定インクルードパスのファイルだけを読み込むには、--no-configオプションも指定します。
  • configとconfig-include-pathが指定されている場合:ユーザー指定の値を使って設定ファイルを読み込み、設定インクルードパスの*.confファイルを追加します。これらのファイルは存在する必要があります。
  • config-pathが指定されている場合:この設定は、設定ファイルのデフォルト配置先のベースパスと、デフォルトのconfig-include-path設定のベースパスの一方または両方を上書きします。ただし、configまたはconfig-include-pathオプションを明示的に設定した場合は、その設定が優先されます。

ファイルは1つの大きなファイルとして連結されますが、各ファイルは単独でも有効でなければなりません。つまり、キーと値を格納するセクションは、必要となる各ファイルで指定する必要があります。順序は関係ありませんが、セクションによる優先順位があります。優先順位は高い順に次のとおりです。

  • [stanza:command]
  • [stanza]
  • [global:command]
  • [global]

注:

--config、--config-include-path、--config-pathはコマンドライン専用のオプションです。

pgBackRestは環境変数でも設定できます(下の例を参照)。これらの変数はbackup 、restore 、archive-push などのコマンドに適用されます。

pg-primary ⇒ 環境変数でlog-pathを設定する

sudo -u postgres bash -c ' \
       export PGBACKREST_LOG_PATH=/path/set/by/env && \
       pgbackrest --log-level-console=error help backup log-path'
pgBackRest 2.59.3 - 'backup' command - 'log-path' option help

Path where log files are stored.

The log path provides a location for pgBackRest to store log files. Note that
if log-level-file=off then no log path is required.

current: /path/set/by/env
default: /var/log/pgbackrest

リポジトリの作成

リポジトリは、pgBackRestがバックアップを保存し、WALセグメントをアーカイブする場所です。

必要な容量を事前に見積もるのは難しい場合があります。まず何度かバックアップを取り、各種類(full/incr/diff)のバックアップサイズを記録するとともに、1日あたりのWAL生成量を測定するのが最善です。これで必要容量のおおよその見当が付きますが、もちろんデータベースの変化に伴って必要容量も変わる可能性があります。

このデモでは、PostgreSQLサーバーと同じホストにリポジトリを保存します。これは最も単純な構成で、従来のバックアップソフトウェアでデータベースホストをバックアップする場合に有用です。

pg-primary ⇒ pgBackRestのリポジトリを作成する

sudo mkdir -p /var/lib/pgbackrest
sudo chmod 750 /var/lib/pgbackrest
sudo chown postgres:postgres /var/lib/pgbackrest

pgBackRestがリポジトリを見つけられるよう、リポジトリのパスを設定する必要があります。

pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ pgBackRestのリポジトリパスを設定する

[demo]

pg1-path=/var/lib/postgresql/17/demo



[global]

repo1-path=/var/lib/pgbackrest

複数のリポジトリも設定できます。詳細は複数のリポジトリ を参照してください。

アーカイブの設定

稼働中のPostgreSQLクラスターをバックアップするには、WALアーカイブを有効にする必要があります。%pは、PostgreSQLがアーカイブ対象のWALセグメントの場所を指定する方法です。クラスターに明示的な書き込みがなくても、バックアップ中には少なくとも1つのWALセグメントが作成されます。

pg-primary:/etc/postgresql/17/demo/postgresql.conf ⇒ アーカイブを設定する

archive_command = 'pgbackrest --stanza=demo archive-push %p'

archive_mode = on

これらの変更後、バックアップを実行する前にPostgreSQLクラスターを再起動する必要があります。

pg-primary ⇒ デモクラスターを再起動する

sudo pg_ctlcluster 17 demo restart

hot_standbyはデフォルトで有効になっており、すべてのクラスターで有効のままにしておくことをお勧めします。フェイルオーバー後にプライマリーをスタンバイとして再構築する場合など、どのクラスターも後でスタンバイとしてリストアされる可能性があり、この設定がないとスタンバイは読み取り専用接続を受け付けません。

WALセグメントをpgBackRestリポジトリにアーカイブするのに60秒(デフォルト)を超える時間がかかると予想される場合は、pgBackRestのarchive-timeoutオプションを増やすことをお勧めします。このオプションは、WALセグメントの切り替えを強制するPostgreSQLのarchive_timeoutオプションとは異なります。後者は、長時間操作がないデータベースに有用です。PostgreSQLのarchive_timeoutオプションの詳細は、PostgreSQLの先行書き込みログ を参照してください。

archive-pushコマンドには固有のオプションを設定できます。たとえば、バックアップの圧縮には影響を与えずに、圧縮レベルを下げてアーカイブを高速化できます。

pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ archive-pushの圧縮レベルを低く設定する

[demo]

pg1-path=/var/lib/postgresql/17/demo



[global]

repo1-path=/var/lib/pgbackrest



[global:archive-push]

compress-level=3

この設定方法はどのコマンドにも使用でき、demo:archive-pushのように特定のstanzaだけを対象にすることもできます。

保持の設定

pgBackRestは保持オプションに基づいてバックアップを期限切れにします。

pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ フルバックアップを2つ保持するよう設定する

[demo]

pg1-path=/var/lib/postgresql/17/demo



[global]

repo1-path=/var/lib/pgbackrest

repo1-retention-full=2



[global:archive-push]

compress-level=3

保持の詳細は保持 を参照してください。

リポジトリの暗号化の設定

暗号化の例として、リポジトリに暗号方式とキーを設定します。リポジトリの種類(S3などのオブジェクトストア)が暗号化に対応している場合でも、暗号化は常にクライアント側で行います。

暗号キーには、長くランダムなパスフレーズを使用することが重要です。生成するにはopenssl rand -base64 48を実行する方法が適しています。

pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ pgBackRestリポジトリの暗号化を設定する

[demo]

pg1-path=/var/lib/postgresql/17/demo



[global]

repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO

repo1-cipher-type=aes-256-cbc

repo1-path=/var/lib/pgbackrest

repo1-retention-full=2



[global:archive-push]

compress-level=3

注:

上の例では、infoコマンドがすべてのstanzaを読み込めるよう、暗号化設定を[global]セクションに記述しています。stanzaオプションを指定しない場合、infoコマンドは[global]セクションからのみ暗号化設定を読み込みます。stanzaごとに暗号化を設定した場合は、暗号化されたstanzaを読み込むためにstanzaオプションが必要です。

リポジトリを設定し、stanzaを作成して確認した後は、リポジトリの暗号化設定を変更できません。

stanzaの作成

stanzaを初期化するには、stanza-createコマンドを実行する必要があります。アーカイブとバックアップが正しく設定されていることを確認するため、stanza-createの後にcheckコマンドを実行することをお勧めします。

pg-primary ⇒ stanzaを作成して設定を確認する

sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stanza-create
P00   INFO: stanza-create command begin 2.59.3: --exec-id=415-9c2d1500 --log-level-console=info --no-log-timestamp --pg1-path=/var/lib/postgresql/17/demo --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --stanza=demo
P00   INFO: stanza-create for stanza 'demo' on repo1
P00   INFO: stanza-create command end: completed successfully

設定の確認

checkコマンドは、指定されたstanzaのアーカイブとバックアップについて、pgBackRestとarchive_commandが正しく設定されていることを検証します。コマンドを実行するホストに設定された、すべてのリポジトリとデータベースの確認を試みます。特にアーカイブの設定ミスにより、必要なWALセグメントがアーカイブに届かずバックアップが不完全になる問題を検出します。このコマンドはPostgreSQLホストまたはリポジトリホストで実行できます。スタンバイホストでも実行できますが、スタンバイではpg_switch_xlog()/pg_switch_wal()を実行できないため、リポジトリの設定だけを検証します。

PostgreSQLにWALセグメントを強制的にアーカイブさせるため、pg_create_restore_point('pgBackRest Archive Check')とpg_switch_xlog()/pg_switch_wal()が呼び出されます。

pg-primary ⇒ 設定を確認する

sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check
P00   INFO: check command begin 2.59.3: --exec-id=424-7270037b --log-level-console=info --no-log-timestamp --pg1-path=/var/lib/postgresql/17/demo --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --stanza=demo
P00   INFO: check repo1 configuration (primary)
P00   INFO: check repo1 archive for WAL (primary)
P00   INFO: WAL segment 000000010000000000000001 successfully archived to '/var/lib/pgbackrest/archive/demo/17-1/0000000100000000/000000010000000000000001-e8eb01b8d8aaf321d368dc8edf5b559247841eb1.gz' on repo1
P00   INFO: check command end: completed successfully

パフォーマンスの調整

pgBackRestには、リポジトリの後方互換性を維持するため、デフォルトでは無効になっている性能関連のオプションがあります。ただし、新しいリポジトリを作成する場合は、次のオプションをお勧めします。既存のリポジトリにも使用できますが、古いバージョンのpgBackRestではそのリポジトリを読み込めなくなる点に注意してください。どのバージョンと互換性がなくなるかは、以下に示す各機能の導入時期によって異なります。

  • compress-type - backupとarchive-pushコマンドで使用する圧縮アルゴリズムを決めます。デフォルトはgz(Gzip)ですが、はるかに高速でgzと同程度の圧縮率が得られるzst(Zstandard)をお勧めします。compress-typeオプションはv2.27 からzstに対応しています。詳細は圧縮形式 を参照してください。
  • repo-bundle - バックアップ時に小さなファイルをまとめ、容量を節約し、backupとrestoreの両コマンドを高速化します。特にS3などのオブジェクトストアで効果があります。repo-bundleオプションはv2.39 で導入されました。詳細はファイルのバンドル化 を参照してください。
  • repo-block - diff/incrのbackupで、ファイル全体ではなく変更された部分だけを保存します。これにより容量を節約し、backupを高速化できます。repo-blockオプションはv2.46 で導入されましたが、少なくともv2.52.1 をお勧めします。詳細はブロック単位の増分バックアップ を参照してください。

このほかにも、追加設定が必要なため、またはデフォルトが安全な値(ただし最適ではない値)であるため、デフォルトでは有効になっていない性能関連のオプションがあります。これらはpgBackRestのすべてのv2バージョンで利用できます。

  • process-max - コマンドに使用するプロセス数を決めます。デフォルトは1ですが、この値が適切なことはほとんどありません。process-maxの使い方はコマンドごとに異なるため、使用方法の詳細は各コマンドのドキュメントを参照してください。
  • archive-async - WALファイルをまとめてリポジトリにアーカイブし、アーカイブを大幅に高速化します。スプールパスを作成する必要があるため、デフォルトでは無効です。詳細は非同期アーカイブ を参照してください。
  • backup-standby - プライマリーの負荷を減らすため、プライマリーではなくスタンバイでバックアップを実行します。追加設定と1つ以上のスタンバイホストが必要なため、デフォルトでは無効です。詳細はスタンバイからのバックアップ を参照してください。

バックアップの実行

pgBackRestはデフォルトで、次の定期チェックポイントを待ってからバックアップを開始します。PostgreSQLのcheckpoint_timeoutとcheckpoint_segmentsの設定によっては、チェックポイントが完了してバックアップを開始できるまでにかなり時間がかかる場合があります。通常は、すぐにバックアップが始まるようstart-fast=yを設定することをお勧めします。これによりチェックポイントが強制されますが、バックアップは通常1日1回実行するため、追加のチェックポイントが性能に目立った影響を与えることはないはずです。ただし、非常に負荷の高いクラスターでは、必要に応じてコマンドラインで--start-fastを指定するほうがよい場合があります。

pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ バックアップの即時開始を設定する

[demo]

pg1-path=/var/lib/postgresql/17/demo



[global]

repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO

repo1-cipher-type=aes-256-cbc

repo1-path=/var/lib/pgbackrest

repo1-retention-full=2

start-fast=y



[global:archive-push]

compress-level=3

PostgreSQLクラスターのバックアップを行うには、pgBackRestのbackupコマンドを実行します。

pg-primary ⇒ デモクラスターをバックアップする

sudo -u postgres pgbackrest --stanza=demo \
       --log-level-console=info backup
P00   INFO: backup command begin 2.59.3: --exec-id=451-67e8eca3 --log-level-console=info --no-log-timestamp --pg1-path=/var/lib/postgresql/17/demo --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo --start-fast
P00   WARN: no prior backup exists, incr backup has been changed to full
P00   INFO: execute backup start: backup begins after the requested immediate checkpoint completes
P00   INFO: backup start archive = 000000010000000000000002, lsn = 0/2000028
       [filtered 3 lines of output]
P00   INFO: check archive for segment(s) 000000010000000000000002:000000010000000000000003
P00   INFO: new backup label = 20261002-190624F
P00   INFO: full backup size = 22MB, file total = 963
P00   INFO: backup command end: completed successfully
P00   INFO: expire command begin 2.59.3: --exec-id=451-67e8eca3 --log-level-console=info --no-log-timestamp --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo

pgBackRestはデフォルトで増分バックアップの実行を試みます。ただし、増分バックアップには基となるフルバックアップが必要です。この例ではフルバックアップが存在しなかったため、pgBackRestは代わりにフルバックアップを実行しました。

typeオプションでフルバックアップまたは差分バックアップを指定できます。

pg-primary ⇒ デモクラスターの差分バックアップを取る

sudo -u postgres pgbackrest --stanza=demo --type=diff \
       --log-level-console=info backup
       [filtered 7 lines of output]
P00   INFO: check archive for segment(s) 000000010000000000000004:000000010000000000000005
P00   INFO: new backup label = 20261002-190624F_20261002-190626D
P00   INFO: diff backup size = 8.3KB, file total = 963
P00   INFO: backup command end: completed successfully
P00   INFO: expire command begin 2.59.3: --exec-id=477-af59c897 --log-level-console=info --no-log-timestamp --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo

今回はフルバックアップがすでに存在していたため、警告はありませんでした。増分バックアップはフルバックアップまたは差分バックアップを基にできますが、差分バックアップはフルバックアップを基にする必要があります。フルバックアップを実行するには、backupコマンドに--type=fullを指定します。

オンラインバックアップ中、pgBackRestはバックアップの整合性に必要なWALセグメントがアーカイブされるのを待ちます。この待機時間は、デフォルトで60秒のpgBackRestのarchive-timeoutオプションで制御します。個々のセグメントのアーカイブにこの時間を超えることが分かっている場合は、この値を増やすことをお勧めします。

バックアップのスケジュール

cronなどのユーティリティで、バックアップをスケジュールできます。

次の例では2つのcronジョブを設定します。毎週日曜日の午前6:30にフルバックアップを実行し、月曜日から土曜日の午前6:30に差分バックアップを実行します。このcrontabを週の途中で初めて設定した場合、pgBackRestは差分バックアップのジョブが最初に実行されるときにフルバックアップを行い、翌日から差分バックアップを行います。

#m h   dom mon dow   command
30 06  *   *   0     pgbackrest --type=full --stanza=demo backup
30 06  *   *   1-6   pgbackrest --type=diff --stanza=demo backup

バックアップをスケジュールしたら、定期的に期限切れになるよう保持設定を行うことが重要です。保持 を参照してください。

バックアップ情報

バックアップの情報を取得するには、infoコマンドを使用します。

pg-primary ⇒ デモクラスターの情報を取得する

sudo -u postgres pgbackrest info
stanza: demo
    status: ok
    cipher: aes-256-cbc

    db (current)
        wal archive min/max (17): 000000010000000000000001/000000010000000000000005

        full backup: 20261002-190624F
            timestamp start/stop: 2026-10-02 19:06:24+00 / 2026-10-02 19:06:26+00
            wal start/stop: 000000010000000000000002 / 000000010000000000000003
            database size: 22MB, database backup size: 22MB
            repo1: backup set size: 2.9MB, backup size: 2.9MB

        diff backup: 20261002-190624F_20261002-190626D
            timestamp start/stop: 2026-10-02 19:06:26+00 / 2026-10-02 19:06:28+00
            wal start/stop: 000000010000000000000004 / 000000010000000000000005
            database size: 22MB, database backup size: 8.3KB
            repo1: backup set size: 2.9MB, backup size: 448B
            backup reference total: 1 full

infoコマンドは、単一のstanzaまたはすべてのstanzaを対象に動作します。デフォルトのテキスト出力では、指定したstanzaのバックアップ概要を人が読みやすい形式で表示します。この形式は、どのリリースでも変更される可能性があります。

機械処理用の出力には--output=jsonを使用します。JSON出力にはテキスト出力よりはるかに多くの情報が含まれ、バグが見つからない限り安定した形式を維持します。

実行を高速化するには、--detail-level=progressを指定して、進捗情報だけに出力を限定します。この場合、stanzaの可用性以外のすべての確認が省略される点に注意してください。

stanzaごとに個別のセクションがあり、--stanzaオプションで単一のstanzaに出力を限定できます。stanzaの「status」は、そのstanzaの健全性を簡潔に示します。「ok」ならpgBackRestは正常に動作しています。複数のリポジトリがある場合、「mixed」は1つ以上のリポジトリでstanzaが正常でないことを示し、リポジトリごとに状態の詳細が表示されます。リポジトリで既知のエラーコードに該当しないエラーが発生した場合は、エラーコード「other」を使用し、完全なエラー詳細を表示します。「wal archive min/max」は、現在アーカイブに保存されているWALの最小値と最大値です。複数のリポジトリがある場合、--repoオプションを指定しない限り、全リポジトリを通して報告されます。アーカイブ保持ポリシーなどの理由で、途中に欠落がある場合もあります。

ホスト上で該当コマンドが実行中の場合は、「status」情報の横に「backup/expire running」や「restore running」が表示されます。テキスト出力にはリポジトリごとの進捗も表示され、JSON出力には「repo」配列が含まれます。

バックアップは古い順に表示されます。最も古いバックアップは必ずフルバックアップ(ラベル末尾のFで識別)ですが、最新のバックアップはフル、差分(末尾がD)、増分(末尾がI)のいずれかです。

「timestamp start/stop」は、バックアップが実行された期間を示します。「timestamp stop」は、ポイントインタイムリカバリーで使用するバックアップの選択に利用できます。ポイントインタイムリカバリーの詳細は、ポイントインタイムリカバリー を参照してください。

「wal start/stop」は、リストア時にデータベースの整合性を回復するために必要なWALの範囲を示します。backupコマンドは、完了前にこの範囲のWALがアーカイブに存在することを確認します。

「database size」はデータベース全体の非圧縮サイズで、「database backup size」は実際にバックアップするデータベース内のデータ量です(フルバックアップでは両者は同じです)。

「repo」は、このバックアップを保存しているリポジトリを示します。「backup set size」には、このバックアップからデータベースをリストアするために必要な、このバックアップ自身と参照先バックアップのリポジトリ内の全ファイルが含まれます。一方、「backup size」には、このバックアップのファイルだけが含まれます(フルバックアップではこれらも同じです)。pgBackRestで圧縮を有効にしている場合、リポジトリのサイズは圧縮後のファイルサイズを表します。

「backup reference total」は、このバックアップのリストアに必要な追加バックアップの一覧の概要です。完全な参照一覧を表示するには、--setオプションを使用します。

バックアップのリストア

バックアップはさまざまな障害に備えるためのもので、特に一般的なのはハードウェア障害とデータ破損です。データ破損を最も簡単に再現する方法は、PostgreSQLクラスターの重要なファイルを削除することです。

pg-primary ⇒ デモクラスターを停止し、pg_controlファイルを削除する

sudo pg_ctlcluster 17 demo stop
sudo -u postgres rm /var/lib/postgresql/17/demo/global/pg_control

この重要なファイルがない状態でクラスターを起動すると、エラーになります。

pg-primary ⇒ 破損したデモクラスターの起動を試みる

sudo pg_ctlcluster 17 demo start
Error: /usr/lib/postgresql/17/bin/pg_ctl /usr/lib/postgresql/17/bin/pg_ctl start -D /var/lib/postgresql/17/demo -l /var/log/postgresql/postgresql-17-demo.log -s -o  -c config_file="/etc/postgresql/17/demo/postgresql.conf"  exited with status 1:
postgres: could not find the database system
Expected to find it in the directory "/var/lib/postgresql/17/demo",
but could not open file "/var/lib/postgresql/17/demo/global/pg_control": No such file or directory
Examine the log output.

PostgreSQLクラスターのバックアップをリストアするには、pgBackRestのrestoreコマンドを実行します。クラスターを停止し(この例ではすでに停止しています)、PostgreSQLのデータディレクトリからすべてのファイルを削除する必要があります。

pg-primary ⇒ デモクラスターから古いファイルを削除する

sudo -u postgres find /var/lib/postgresql/17/demo -mindepth 1 -delete

pg-primary ⇒ デモクラスターをリストアしてPostgreSQLを起動する

sudo -u postgres pgbackrest --stanza=demo restore
sudo pg_ctlcluster 17 demo start

リストアにより欠落していたpg_controlファイルが復元されたため、今回はクラスターが正常に起動しました。

restoreコマンドの詳細はリストア を参照してください。


監視

監視は、どの本番システムでも重要です。多くのツールがあり、少し手を加えれば、そのいずれでもpgBackRestを監視できます。

pgBackRestはリポジトリの情報をJSON形式で出力できます。この情報には、各stanzaのすべてのバックアップの一覧とWALアーカイブ情報が含まれます。

PostgreSQLでの監視

PostgreSQLのCOPYコマンドを使うと、pgBackRestの情報をテーブルに読み込めます。次の例では、この処理をリアルタイムのクエリーに使える関数にまとめています。

pg-primary ⇒ PostgreSQL用のpgBackRest情報関数を読み込む

sudo -u postgres cat \
       /var/lib/postgresql/pgbackrest/doc/example/pgsql-pgbackrest-info.sql
-- An example of monitoring pgBackRest from within PostgreSQL
--
-- Use copy to export data from the pgBackRest info command into the jsonb
-- type so it can be queried directly by PostgreSQL.

-- Create monitor schema
create schema monitor;

-- Get pgBackRest info in JSON format
create function monitor.pgbackrest_info()
    returns jsonb AS $$
declare
    data jsonb;
begin
    -- Create a temp table to hold the JSON data
    create temp table temp_pgbackrest_data (data text);

    -- Copy data into the table directly from the pgBackRest info command
    copy temp_pgbackrest_data (data)
        from program
            'pgbackrest --output=json info' (format text);

    select replace(temp_pgbackrest_data.data, E'\n', '\n')::jsonb
      into data
      from temp_pgbackrest_data;

    drop table temp_pgbackrest_data;

    return data;
end $$ language plpgsql;
sudo -u postgres psql -f \
       /var/lib/postgresql/pgbackrest/doc/example/pgsql-pgbackrest-info.sql

これでmonitor.pgbackrest_info()関数を使って、stanzaの最後に成功したバックアップの時刻と、アーカイブされたWALを確認できます。

pg-primary ⇒ 最後に成功したバックアップの時刻とアーカイブされたWALを取得する

sudo -u postgres cat \
       /var/lib/postgresql/pgbackrest/doc/example/pgsql-pgbackrest-query.sql
-- Get last successful backup for each stanza
--
-- Requires the monitor.pgbackrest_info function.
with stanza as
(
    select data->'name' as name,
           data->'backup'->(
               jsonb_array_length(data->'backup') - 1) as last_backup,
           data->'archive'->(
               jsonb_array_length(data->'archive') - 1) as current_archive
      from jsonb_array_elements(monitor.pgbackrest_info()) as data
)
select name,
       to_timestamp(
           (last_backup->'timestamp'->>'stop')::numeric) as last_successful_backup,
       current_archive->>'max' as last_archived_wal
  from stanza;
sudo -u postgres psql -f \
       /var/lib/postgresql/pgbackrest/doc/example/pgsql-pgbackrest-query.sql
  name  | last_successful_backup |    last_archived_wal
--------+------------------------+--------------------------
 "demo" | 2026-10-02 19:06:28+00 | 000000010000000000000005
(1 row)

jqの使用

jqは、JSONから簡単にデータを抽出できるコマンドラインユーティリティです。

pg-primary ⇒ jqユーティリティをインストールする

sudo apt-get install jq

これでjqを使って、stanzaの最後に成功したバックアップの時刻を取得できます。

pg-primary ⇒ 最後に成功したバックアップの時刻を取得する

sudo -u postgres pgbackrest --output=json --stanza=demo info | \
       jq '.[0] | .backup[-1] | .timestamp.stop'
1790967988

最後にアーカイブされたWALも取得できます。

pg-primary ⇒ 最後にアーカイブされたWALを取得する

sudo -u postgres pgbackrest --output=json --stanza=demo info | \
       jq '.[0] | .archive[-1] | .max'
"000000010000000000000005"

注:

この構文にはjq v1.5が必要です。

注:

jqはシステム識別子などの大きな数値を丸める場合があります。クエリーを慎重にテストしてください。


バックアップ

複数のリポジトリが設定されている場合、pgBackRestは--repoオプションを指定しない限り、最も優先順位の高いリポジトリ(例:repo1)にバックアップします。

pgBackRestにはスケジューラーが組み込まれていないため、cronなどのスケジュール機構から実行することをお勧めします。

詳細と例はバックアップの実行 を参照してください。

ファイルのバンドル化

リポジトリ内でファイルをまとめると、バックアップの時間を短縮し、リポジトリの容量もある程度節約できます。特に、S3などのオブジェクトストアやブロックサイズの大きなファイルシステムにリポジトリを保存する場合に効果があります。オブジェクトストアではファイルごとの作成時間が長く、非常に小さなファイルでも大きなファイルと同程度の保存コストがかかる場合があります。

ファイルのバンドル化は、repo-bundleオプションで有効にします。

pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ repo1-bundleを設定する

[demo]

pg1-path=/var/lib/postgresql/17/demo



[global]

repo1-bundle=y

repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO

repo1-cipher-type=aes-256-cbc

repo1-path=/var/lib/pgbackrest

repo1-retention-full=2

start-fast=y



[global:archive-push]

compress-level=3

ファイルをバンドル化しないフルバックアップでは、バックアップパスに1000以上のファイルがありますが、バンドル化するとファイル総数は大幅に減ります。さらに、通常のバックアップでは長さゼロのファイルも個別に保存するのに対し、バンドル化ではマニフェストへの記録を除いて保存しないという利点もあります。

pg-primary ⇒ フルバックアップを実行する

sudo -u postgres pgbackrest --stanza=demo --type=full backup

pg-primary ⇒ ファイル総数を確認する

sudo -u postgres find /var/lib/pgbackrest/backup/demo/latest/ -type f | wc -l
5

repo-bundle-sizeとrepo-bundle-limitオプションで調整できますが、ほとんどの場合はデフォルト値が最適なはずです。

ファイルのバンドル化は一般に効率的ですが、リポジトリからファイルを手動で取り出しにくくなるという欠点があります。フルバックアップのたびにバンドル内のファイル配置が変わるため、重複排除ストレージには適さない場合があります。また、ファイルバンドルの処理は中断位置から再開できないため、repo-bundle-limitを大きくしすぎないよう注意してください。

ブロック単位の増分バックアップ

ブロック単位の増分バックアップでは、ファイル全体ではなく、前のバックアップ以降に変更された部分だけを保存して容量を節約します。

ブロック単位の増分バックアップはrepo-blockオプションで有効にし、すべてのバックアップ種類で有効にすると最も効果的です。ファイルのバンドル化も有効にする必要があります。

pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ repo1-blockを設定する

[demo]

pg1-path=/var/lib/postgresql/17/demo



[global]

repo1-block=y

repo1-bundle=y

repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO

repo1-cipher-type=aes-256-cbc

repo1-path=/var/lib/pgbackrest

repo1-retention-full=2

start-fast=y



[global:archive-push]

compress-level=3

バックアップの注釈

バックアップに情報を記したキーと値のペアを付けられます。このオプションは複数回指定でき、複数の注釈を付けられます。

pg-primary ⇒ 注釈付きのフルバックアップを実行する

sudo -u postgres pgbackrest --stanza=demo --annotation=source="demo backup" \
       --annotation=key=value --type=full backup

注釈は、infoコマンドで--setによりバックアップを指定した場合にテキスト出力に表示され、JSON出力には常に表示されます。

pg-primary ⇒ デモクラスターの情報を取得する

sudo -u postgres pgbackrest --stanza=demo --set=20261002-190643F info
stanza: demo
    status: ok
    cipher: aes-256-cbc

    db (current)
        wal archive min/max (17): 000000020000000000000007/000000020000000000000009

        full backup: 20261002-190643F
            timestamp start/stop: 2026-10-02 19:06:43+00 / 2026-10-02 19:06:44+00
            wal start/stop: 000000020000000000000008 / 000000020000000000000009
            lsn start/stop: 0/8000028 / 0/9000050
            database size: 22MB, database backup size: 22MB
            repo1: backup size: 2.9MB
            database list: postgres (5)
            annotation(s)
                key: value
                source: demo backup

backupコマンドで付けた注釈は、後でannotateコマンドを使って追加、変更、削除できます。

pg-primary ⇒ バックアップの注釈を変更する

sudo -u postgres pgbackrest --stanza=demo --set=20261002-190643F \
       --annotation=key= --annotation=new_key=new_value annotate
sudo -u postgres pgbackrest --stanza=demo --set=20261002-190643F info
stanza: demo
    status: ok
    cipher: aes-256-cbc

    db (current)
        wal archive min/max (17): 000000020000000000000007/000000020000000000000009

        full backup: 20261002-190643F
            timestamp start/stop: 2026-10-02 19:06:43+00 / 2026-10-02 19:06:44+00
            wal start/stop: 000000020000000000000008 / 000000020000000000000009
            lsn start/stop: 0/8000028 / 0/9000050
            database size: 22MB, database backup size: 22MB
            repo1: backup size: 2.9MB
            database list: postgres (5)
            annotation(s)
                new_key: new_value
                source: demo backup

保持

通常、ポイントインタイムリカバリー の可能な期間を広げるには、できるだけ多くのバックアップを保持することが望ましいですが、ディスク容量などの実際の制約も考慮する必要があります。保持オプションは、不要になった古いバックアップを削除します。

pgBackRestは、保持方式に応じてフルバックアップをローテーションします。方式には個数または期間を指定できます。個数を指定した場合、期限切れの判定はバックアップの作成日時ではなく、保持すべき個数に基づきます。差分バックアップは個数に基づきますが、依存するフルバックアップが期限切れになると必ず一緒に期限切れになります。増分バックアップが保持設定により単独で期限切れになることはなく、関連するフルバックアップまたは差分バックアップとともに期限切れになります。詳細と例はフルバックアップの保持 と差分バックアップの保持 を参照してください。

アーカイブされたWALは、デフォルトでは期限切れになっていないバックアップのために保持されます。推奨はしませんが、retention-archiveオプションでリポジトリごとにこの保持方針を変更できます。詳細と例はアーカイブの保持 を参照してください。

expireコマンドは、バックアップが成功するたびに自動実行され、ユーザーが実行することもできます。ユーザーが実行した場合、設定された各リポジトリの保持設定に従って期限切れ処理が行われます。--repoオプションを指定した場合、指定したリポジトリだけで期限切れ処理を行います。--setオプションで特定のバックアップセットに期限切れ処理を限定することもできます。この場合、--repoオプションを指定しない限り、すべてのリポジトリを検索してセットの条件に一致するものを期限切れにします。expireコマンドを実行すると、アーカイブの保持方針の確認とそれに基づく処理も毎回行われる点に注意してください。

フルバックアップの保持

repo1-retention-full-typeは、repo1-retention-fullオプションを、保持するフルバックアップの個数として解釈するか、保持日数として解釈するかを決めます。期限切れ処理には、新しいバックアップが完了している必要があります。つまり、repo1-retention-full-type=countかつrepo1-retention-full=2の場合は、3つのフルバックアップが保存された後に最も古いものが期限切れになります。repo1-retention-full-type=timeかつrepo1-retention-full=20の場合は、少なくとも20日前のフルバックアップが1つ存在しなければ期限切れ処理は行われません。

pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ repo1-retention-fullを設定する

[demo]

pg1-path=/var/lib/postgresql/17/demo



[global]

repo1-block=y

repo1-bundle=y

repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO

repo1-cipher-type=aes-256-cbc

repo1-path=/var/lib/pgbackrest

repo1-retention-full=2

start-fast=y



[global:archive-push]

compress-level=3

バックアップの設定はrepo1-retention-full=2ですが、現在フルバックアップは1つしかないため、次のフルバックアップを実行しても、どのフルバックアップも期限切れになりません。

pg-primary ⇒ フルバックアップを実行する

sudo -u postgres pgbackrest --stanza=demo --type=full \
       --log-level-console=detail backup
       [filtered 975 lines of output]
P00   INFO: repo1: remove expired backup 20261002-190641F
P00 DETAIL: repo1: 17-1 archive retention on backup 20261002-190643F, start = 000000020000000000000008
P00   INFO: repo1: 17-1 remove archive, start = 000000020000000000000007, stop = 000000020000000000000007
P00   INFO: expire command end: completed successfully

一方、最も古いバックアップより前に生成されたWALセグメントがあるため、アーカイブは期限切れになります。これらはリカバリーには使えません。バックアップのリカバリーに利用できるのは、そのバックアップ以降に生成されたWALセグメントだけです。

pg-primary ⇒ フルバックアップを実行する

sudo -u postgres pgbackrest --stanza=demo --type=full \
       --log-level-console=info backup
       [filtered 11 lines of output]
P00   INFO: repo1: expire full backup 20261002-190643F
P00   INFO: repo1: remove expired backup 20261002-190643F
P00   INFO: repo1: 17-1 remove archive, start = 000000020000000000000008, stop = 00000002000000000000000A
P00   INFO: expire command end: completed successfully

フルバックアップ20261002-190624Fが期限切れになり、アーカイブの保持は、最も古いフルバックアップとなった20261002-190646Fを基準に行われます。

差分バックアップの保持

repo1-retention-diffに、必要な差分バックアップの個数を設定します。差分バックアップは前のフルバックアップだけに依存するため、直近1日以上の差分バックアップを順次入れ替えながら保持できます。これにより、全体の容量を抑えながら、最近の時点へすばやくリストアできます。

pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ repo1-retention-diffを設定する

[demo]

pg1-path=/var/lib/postgresql/17/demo



[global]

repo1-block=y

repo1-bundle=y

repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO

repo1-cipher-type=aes-256-cbc

repo1-path=/var/lib/pgbackrest

repo1-retention-diff=1

repo1-retention-full=2

start-fast=y



[global:archive-push]

compress-level=3

バックアップの設定はrepo1-retention-diff=1のため、1つを期限切れにするには2つの差分バックアップを実行する必要があります。増分バックアップの期限切れ処理も示すため、増分バックアップを追加します。この例では、差分バックアップの期限切れに連動します。

pg-primary ⇒ 差分バックアップと増分バックアップを実行する

sudo -u postgres pgbackrest --stanza=demo --type=diff backup
sudo -u postgres pgbackrest --stanza=demo --type=incr backup

ここで差分バックアップを実行すると、前の差分バックアップと増分バックアップが期限切れになり、差分バックアップが1つだけ残ります。

pg-primary ⇒ 差分バックアップを実行する

sudo -u postgres pgbackrest --stanza=demo --type=diff \
       --log-level-console=info backup
       [filtered 10 lines of output]
P00   INFO: backup command end: completed successfully
P00   INFO: expire command begin 2.59.3: --exec-id=956-fb652d58 --log-level-console=info --no-log-timestamp --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-diff=1 --repo1-retention-full=2 --stanza=demo
P00   INFO: repo1: expire diff backup set 20261002-190648F_20261002-190650D, 20261002-190648F_20261002-190651I
P00   INFO: repo1: remove expired backup 20261002-190648F_20261002-190651I
P00   INFO: repo1: remove expired backup 20261002-190648F_20261002-190650D
P00   INFO: expire command end: completed successfully

アーカイブの保持

pgBackRestはバックアップの期限切れ処理時にアーカイブ済みWALセグメントを自動削除します(デフォルトではrepo1-retention-fullオプションに基づいてフルバックアップのWALを期限切れにします)。ただし、ディスク容量の節約のために、アーカイブをより積極的に期限切れにすることが有用な場合もあります。差分アーカイブの保持では、フルバックアップも差分バックアップとして扱われます。

アーカイブの期限切れ処理で、バックアップの整合性に必要なWALセグメントが削除されることはありません。ただし、ポイントインタイムリカバリー(PITR)は連続したWALストリームでしか機能しないため、通常のバックアップ期限切れ処理とは別にアーカイブを積極的に期限切れにする際は注意してください。実際には何も期限切れにせず、対象だけを確認するには、コマンドラインでexpireコマンドにdry-runオプションを指定できます。

pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ repo1-retention-diffを設定する

[demo]

pg1-path=/var/lib/postgresql/17/demo



[global]

repo1-block=y

repo1-bundle=y

repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO

repo1-cipher-type=aes-256-cbc

repo1-path=/var/lib/pgbackrest

repo1-retention-diff=2

repo1-retention-full=2

start-fast=y



[global:archive-push]

compress-level=3

pg-primary ⇒ 差分バックアップを実行する

sudo -u postgres pgbackrest --stanza=demo --type=diff \
       --log-level-console=info backup
       [filtered 6 lines of output]
P00   INFO: backup stop archive = 000000020000000000000017, lsn = 0/17000050
P00   INFO: check archive for segment(s) 000000020000000000000016:000000020000000000000017
P00   INFO: new backup label = 20261002-190648F_20261002-190654D
P00   INFO: diff backup size = 8.3KB, file total = 963
P00   INFO: backup command end: completed successfully
       [filtered 2 lines of output]

pg-primary ⇒ アーカイブを期限切れにする

sudo -u postgres pgbackrest --stanza=demo --log-level-console=detail \
       --repo1-retention-archive-type=diff --repo1-retention-archive=1 expire
P00   INFO: expire command begin 2.59.3: --exec-id=1037-f7b8ca1a --log-level-console=detail --no-log-timestamp --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-archive=1 --repo1-retention-archive-type=diff --repo1-retention-diff=2 --repo1-retention-full=2 --stanza=demo
P00 DETAIL: repo1: 17-1 archive retention on backup 20261002-190646F, start = 00000002000000000000000B, stop = 00000002000000000000000B
P00 DETAIL: repo1: 17-1 archive retention on backup 20261002-190648F, start = 00000002000000000000000C, stop = 00000002000000000000000D
P00 DETAIL: repo1: 17-1 archive retention on backup 20261002-190648F_20261002-190652D, start = 000000020000000000000012, stop = 000000020000000000000013
P00 DETAIL: repo1: 17-1 archive retention on backup 20261002-190648F_20261002-190654D, start = 000000020000000000000016
P00   INFO: repo1: 17-1 remove archive, start = 00000002000000000000000E, stop = 000000020000000000000011
P00   INFO: repo1: 17-1 remove archive, start = 000000020000000000000014, stop = 000000020000000000000015
P00   INFO: expire command end: completed successfully

差分バックアップ20261002-190648F_20261002-190652Dには、古いバックアップの整合性を回復するために保持しなければならないアーカイブ済みWALセグメントがあります。これらを使ってPITRでさらに先へ再生することはできません。20261002-190648F_20261002-190652Dより後、20261002-190648F_20261002-190654Dより前に生成されたWALセグメントは削除されます。新しいバックアップ20261002-190648F_20261002-190654Dより後に生成されたWALセグメントは残り、PITRに利用できます。

差分アーカイブの保持ではフルバックアップも差分バックアップとして扱われるため、同じ設定でここからフルバックアップを実行すると、そのフルバックアップのアーカイブだけがPITR用に保持されます。


リストア

restoreコマンドはデフォルトで、バックアップが存在する最初のリポジトリから最新のバックアップを自動選択します(クイックスタート - バックアップのリストア を参照)。リポジトリの確認順序はpgbackrest.confで決まります(たとえばrepo1をrepo2より先に確認します)。特定のリポジトリから選択するには、--repoオプション(例:--repo=1)を指定できます。最新以外のバックアップを使用するには、--setオプションを指定します。

PITR に --type=time または --type=lsn を指定する場合は、--target オプションで対象の時刻または LSN を指定する必要があります。--set を指定しない場合、設定済みのリポジトリを順に調べ、終了時刻が対象時刻より前のバックアップ、または終了 LSN が対象 LSN 以下のバックアップを選択します。一致するバックアップが見つからない場合、--type=time と --type=lsn のどちらでも pgBackRest はエラーを返し、最新のバックアップにフォールバックしません。xid など、その他の PITR の種類では、対象が最新のバックアップより前であれば --set オプションを指定する必要があります。詳細と例については、ポイントインタイムリカバリ を参照してください。

PostgreSQLの推奨に従い、レプリケーションスロットは含めません。詳細はPostgreSQLドキュメントのデータディレクトリのバックアップ を参照してください。

以降のセクションでは、restoreコマンドの追加機能を紹介します。

ファイルの所有権

通常のようにroot以外のユーザーでrestoreを実行した場合、リストアしたすべてのファイルはpgBackRestを実行するユーザーとグループに属します。既存ファイルの所有者が実行ユーザーやグループと異なり、所有権を変更できない場合はエラーになります。この場合、権限を持つユーザーがファイルの所有権を更新してから、リストアを再試行する必要があります。

rootユーザーでrestoreを実行した場合、pgBackRestはバックアップ時にマニフェストに記録した所有権の再現を試みます。マニフェストに保存されるのはユーザーとグループの名前だけなので、リストア先ホストに同じ名前が存在する必要があります。ローカルでユーザー名やグループ名が見つからない場合は、PostgreSQLのデータディレクトリのユーザーとグループを使用します。それらにも対応する名前がない場合は、最後にrootを使用します。

deltaオプション

クイックスタート のバックアップのリストア では、restoreを実行する前にデータベースクラスターのディレクトリを空にする必要がありました。deltaオプションを使うと、pgBackRestはデータベースクラスターのディレクトリ内でそのまま残せるファイルと、バックアップからリストアすべきファイルを自動で判別できます。また、バックアップのマニフェストにないファイルも削除するため、バックアップと異なる変更を取り除きます。この判別には、データベースクラスターのディレクトリ内の各ファイルについて計算したSHA-1 暗号学的ハッシュを使用します。SHA-1ハッシュがバックアップに保存されたハッシュと一致しない場合、そのファイルをリストアします。process-maxオプションと組み合わせると、非常に効率的に処理できます。リストア中はPostgreSQLサーバーが停止しているため、サーバーが稼働するバックアップ時より多くのプロセスを使用できます。

pg-primary ⇒ デモクラスターを停止し、deltaリストアを実行する

sudo pg_ctlcluster 17 demo stop
sudo -u postgres pgbackrest --stanza=demo --delta \
       --log-level-console=detail restore
       [filtered 2 lines of output]
P00 DETAIL: check '/var/lib/postgresql/17/demo' exists
P00 DETAIL: remove 'global/pg_control' so cluster will not start if restore does not complete
P00   INFO: remove invalid files/links/paths from '/var/lib/postgresql/17/demo'
P00 DETAIL: remove invalid file '/var/lib/postgresql/17/demo/backup_label.old'
P00 DETAIL: remove invalid file '/var/lib/postgresql/17/demo/base/1/pg_internal.init'
       [filtered 769 lines of output]
P01 DETAIL: restore file /var/lib/postgresql/17/demo/base/1/113 - exists and matches backup (bundle 20261002-190648F/1/2665832, 8KB, 88.00%) checksum 1cd643347b87a472ff001ae124e4b532ce998d2f
P01 DETAIL: restore file /var/lib/postgresql/17/demo/base/1/112 - exists and matches backup (bundle 20261002-190648F/1/2665920, 8KB, 88.03%) checksum 2cbd5cf8fb22ef627eb539776c5ec7457bdb2890
P01 DETAIL: restore file /var/lib/postgresql/17/demo/PG_VERSION - exists and matches backup (bundle 20261002-190648F/1/2666008, 3B, 88.03%) checksum ad48103e4fc71796e9708cafc43adeed0d1076b7
P01 DETAIL: restore file /var/lib/postgresql/17/demo/base/5/2608_fsm - exists and matches backup (bundle 20261002-190648F/1/2666032, 24KB, 88.14%) checksum e807fe622bbfccc5e9ad7f453ecb4f0eaccb75e2
P01 DETAIL: restore file /var/lib/postgresql/17/demo/postgresql.auto.conf - exists and matches backup (bundle 20261002-190648F/1/2666272, 229B, 88.14%) checksum e1b0002d9a33d70466c5a348f4e0c1f1f80639f6
       [filtered 233 lines of output]

pg-primary ⇒ PostgreSQLを再起動する

sudo pg_ctlcluster 17 demo start

選択したデータベースのリストア

クラスターのバックアップから、特定のデータベースだけを選んでリストアしたい場合があります。性能上の理由や、クラスター全体のバックアップをリストアする容量がないマシンに、選択したデータベースを移動する場合などです。

この機能を示すため、test1とtest2の2つのデータベースを作成します。

pg-primary ⇒ テスト用データベースを2つ作成する

sudo -u postgres psql -c "create database test1;"
CREATE DATABASE
sudo -u postgres psql -c "create database test2;"
CREATE DATABASE

選択的なリストアでもリカバリーが機能することを示すため、各テスト用データベースにテーブルとデータを用意します。

pg-primary ⇒ 各データベースにテスト用テーブルを作成する

sudo -u postgres psql -c "create table test1_table (id int); \
       insert into test1_table (id) values (1);" test1
CREATE TABLE
INSERT 0 1
sudo -u postgres psql -c "create table test2_table (id int); \
       insert into test2_table (id) values (2);" test2
CREATE TABLE
INSERT 0 1

pgBackRestが新しいデータベースを認識できるよう、新しくバックアップを取ります。

pg-primary ⇒ バックアップを実行する

sudo -u postgres pgbackrest --stanza=demo --type=incr backup

選択的リストアを使う主な理由の1つは容量の節約です。リストア後のディスク使用量と比較できるよう、ここでtest1データベースのサイズを表示します。

pg-primary ⇒ test1データベースの使用容量を表示する

sudo -u postgres du -sh /var/lib/postgresql/17/demo/base/32768
7.4M	/var/lib/postgresql/17/demo/base/32768

リストアするデータベースが分からない場合は、infoコマンドのsetオプションを使って、バックアップセットに含まれるデータベースを調べます。

pg-primary ⇒ バックアップのデータベース一覧を表示する

sudo -u postgres pgbackrest --stanza=demo \
       --set=20261002-190648F_20261002-190702I info
       [filtered 12 lines of output]
            repo1: backup size: 1.9MB
            backup reference list: 20261002-190648F, 20261002-190648F_20261002-190654D
            database list: postgres (5), test1 (32768), test2 (32769)

クラスターを停止し、test2データベースだけをリストアします。組み込みデータベース(template0、template1、postgres)は常にリストアされます。

警告:

--type=immediateを指定しないと、リカバリーでエラーが発生する場合があります。整合性が確立された後は、PostgreSQLがフルページ書き込みの場合でもゼロ埋めページをエラーとして扱うためです。PostgreSQL ≥ 13では、ignore_invalid_pages設定で無効なページを無視できます。その場合は、リカバリー後にログを確認し、選択したデータベースで無効なページが報告されていないことを確かめることが重要です。

pg-primary ⇒ 最後のバックアップからtest2データベースだけを含めてリストアする

sudo pg_ctlcluster 17 demo stop
sudo -u postgres pgbackrest --stanza=demo --delta \
       --db-include=test2 --type=immediate --target-action=promote restore
sudo pg_ctlcluster 17 demo start

リカバリーが完了すると、test2データベースには以前に作成したすべてのテーブルとデータが含まれます。

pg-primary ⇒ test2データベースがリカバリーされたことを確認する

sudo -u postgres psql -c "select * from test2_table;" test2
 id
----
  2
(1 row)

test1データベースは、リカバリー自体は成功していてもアクセスできません。データベース全体をゼロ埋めのスパースファイルとしてリストアしたためです。PostgreSQLはゼロ埋めファイルにWALを正常に適用できますが、重要なファイルにデータがないため、データベース全体としては無効です。これは意図した動作で、WALの再生中に適用された一部のデータだけを含む可能性があるデータベースを、誤って使用することを防ぎます。

pg-primary ⇒ test1データベースへの接続を試みるとエラーになる

sudo -u postgres psql -c "select * from test1_table;" test1
psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL:  relation mapping file "base/32768/pg_filenode.map" contains invalid data

test1データベースはゼロ埋めのスパースファイルとしてリストアされるため、必要な容量はリカバリー中に書き込まれるWALの量だけです。バックアップ中に生成され、リカバリー中に適用されるWALの量は大きくなることもありますが、通常はデータベース全体のサイズのごく一部です。この機能が特に役立つ大規模なデータベースでは、なおさらです。

選択的リストアでtest1データベースが使用するディスク容量は、データベース全体をリストアした場合より大幅に少ないことが分かります。

pg-primary ⇒ リカバリー後のtest1データベースの使用容量を表示する

sudo -u postgres du -sh /var/lib/postgresql/17/demo/base/32768
8.0K	/var/lib/postgresql/17/demo/base/32768

この時点で無効なtest1データベースに行える操作は、drop databaseだけです。リカバリーが完了してクラスターにアクセスできるようになるまでデータベースを削除できないため、pgBackRestは自動削除を行いません。

pg-primary ⇒ test1データベースを削除する

sudo -u postgres psql -c "drop database test1;"
DROP DATABASE

無効なtest1データベースを削除したので、test2と組み込みデータベースだけが残ります。

pg-primary ⇒ 残っているデータベースを一覧表示する

sudo -u postgres psql -c "select oid, datname from pg_database order by oid;"
  oid  |  datname
-------+-----------
     1 | template1
     4 | template0
     5 | postgres
 32769 | test2
(4 rows)

ポイントインタイムリカバリー

クイックスタート のバックアップのリストア では、WALストリームの末尾まで再生するデフォルトのリカバリーを行いました。ハードウェア障害の場合は通常これが最適ですが、機械または人の操作に起因するデータ破損の場合は、ポイントインタイムリカバリー(PITR)のほうが適していることがよくあります。

ポイントインタイムリカバリー(PITR)では、バックアップから、指定したlsn、時刻、トランザクションID、またはリカバリーポイントまでWALを再生できます。一般的なリカバリーでは、時刻に基づく方式が最も有用でしょう。典型的な例は、誤って削除したテーブルやデータを復元する場合です。ここでは効果が分かりやすいテーブルの復元を例にしますが、削除されたデータもまったく同じ方法で復元できます。

pg-primary ⇒ 非常に重要なデータを持つテーブルを作成する

sudo -u postgres psql -c "begin; \
       create table important_table (message text); \
       insert into important_table values ('Important Data'); \
       commit; \
       select * from important_table;"
       [filtered 4 lines of output]
    message
----------------
 Important Data
(1 row)

時刻はPostgreSQLが認識する値で表し、タイムゾーンのオフセットを含めることが重要です。これにより、意図しないタイムゾーン変換や、予想外のリカバリー結果の可能性を減らせます。

pg-primary ⇒ PostgreSQLから時刻を取得する

sudo -u postgres psql -Atc "select current_timestamp"
2026-10-02 19:07:12.060959+00

時刻を記録したので、テーブルを削除します。実際には、テーブルが削除された正確な時刻を見つけるのは、この例よりはるかに困難です。正確な時刻が分からないこともありますが、履歴などを調べれば近い時刻を特定できるはずです。

pg-primary ⇒ 重要なテーブルを削除する

sudo -u postgres psql -c "begin; \
       drop table important_table; \
       commit; \
       select * from important_table;"
BEGIN
DROP TABLE
COMMITERROR:  relation "important_table" does not exist
LINE 1: ...le important_table;     commit;     select * from important_...
                                                             ^

リストアするバックアップを誤って選ぶと、必要な目標時刻へのリカバリーは失敗します。これを示すために、important_tableが存在しない状態で新しい増分バックアップを実行します。

pg-primary ⇒ 増分バックアップを実行する

sudo -u postgres pgbackrest --stanza=demo --type=incr backup
sudo -u postgres pgbackrest info
       [filtered 38 lines of output]
            backup reference total: 1 full, 1 diff

        incr backup: 20261002-190648F_20261002-190713I
            timestamp start/stop: 2026-10-02 19:07:13+00 / 2026-10-02 19:07:14+00
            wal start/stop: 00000004000000000000001A / 00000004000000000000001A
       [filtered 2 lines of output]

PostgreSQLは前方への再生しかできず、後方には戻れないため、このバックアップから失われたテーブルを復元することはできません。

pg-primary ⇒ 誤ったバックアップからのリカバリーを試みる

sudo pg_ctlcluster 17 demo stop
sudo -u postgres pgbackrest --stanza=demo --delta \
       --set=20261002-190648F_20261002-190713I --target-timeline=current \
       --type=time "--target=2026-10-02 19:07:12.060959+00" --target-action=promote restore
sudo pg_ctlcluster 17 demo start
       [filtered 13 lines of output]
LOG:  database system is ready to accept read-only connections
LOG:  redo done at 0/1A000120 system usage: CPU: user: 0.00 s, system: 0.00 s, elapsed: 0.03 s
FATAL:  recovery ended before configured recovery target was reached
LOG:  startup process (PID 1437) exited with exit code 1
LOG:  terminating any other active server processes
       [filtered 3 lines of output]

確実な方法は、目標時刻までリカバリーできるバックアップ、つまり指定した時刻より前に完了したバックアップを、pgBackRestに自動選択させることです。

注:

リストアの種類がxidまたはnameの場合、pgBackRestはバックアップを自動選択できません。

pg-primary ⇒ デモクラスターを2026-10-02 19:07:12.060959+00の時点にリストアする

sudo -u postgres pgbackrest --stanza=demo --delta \
       --type=time "--target=2026-10-02 19:07:12.060959+00" \
       --target-action=promote restore
sudo -u postgres cat /var/lib/postgresql/17/demo/postgresql.auto.conf
       [filtered 9 lines of output]
# Recovery settings generated by pgBackRest restore on 2026-10-02 19:07:16
restore_command = 'pgbackrest --stanza=demo archive-get %f "%p"'
recovery_target_time = '2026-10-02 19:07:12.060959+00'
recovery_target_action = 'promote'

pgBackRestがpostgresql.auto.confにリカバリー設定を生成したので、すぐにPostgreSQLを起動できます。%fはPostgreSQLが必要とするWALセグメントの指定、%pはそのコピー先の場所です。PostgreSQLのリカバリーが完了すると、テーブルが再び存在するようになり、クエリーを実行できます。

pg-primary ⇒ PostgreSQLを起動し、重要なテーブルが存在することを確認する

sudo pg_ctlcluster 17 demo start
sudo -u postgres psql -c "select * from important_table"
    message
----------------
 Important Data
(1 row)

PostgreSQLのログにも有用な情報があります。リカバリーが停止した時刻とトランザクションに加え、最後に適用したトランザクションの時刻も表示されます。

pg-primary ⇒ PostgreSQLのログ出力を確認する

sudo -u postgres cat /var/log/postgresql/postgresql-17-demo.log
       [filtered 7 lines of output]
LOG:  restored log file "00000004.history" from archive
LOG:  restored log file "000000040000000000000019" from archive
LOG:  starting point-in-time recovery to 2026-10-02 19:07:12.060959+00
LOG:  restored log file "00000003.history" from archive
LOG:  redo starts at 0/19000028
       [filtered 2 lines of output]
LOG:  database system is ready to accept read-only connections
LOG:  restored log file "00000004000000000000001A" from archive
LOG:  recovery stopping before commit of transaction 748, time 2026-10-02 19:07:13.389359+00
LOG:  redo done at 0/1901CC00 system usage: CPU: user: 0.00 s, system: 0.01 s, elapsed: 0.07 s
LOG:  last completed transaction was at log time 2026-10-02 19:07:10.778316+00
LOG:  restored log file "000000040000000000000019" from archive
LOG:  selected new timeline ID: 5
       [filtered 5 lines of output]

stanzaの削除

stanza-deleteコマンドは、stanzaに関連するデータをリポジトリから削除します。

警告:

このコマンドは慎重に使用してください。指定したstanzaのすべてのバックアップとアーカイブを、pgBackRestリポジトリから完全に削除します。

stanzaを削除するには、次の手順を実行します。

  • stanzaに関連付けられたPostgreSQLクラスターを停止します(または–forceでこの要件を無視します)。
  • stanza-deleteコマンドを実行するホストで、stopコマンドを実行します。
  • stanza-deleteコマンドを実行します。

コマンドが正常に完了したら、すべてのpgBackRest設定ファイルや環境変数からstanzaを削除するのはユーザーの責任です。

stanzaは一度に1つのリポジトリからしか削除できません。複数のリポジトリから削除するには、--repoオプションを指定し、リポジトリごとにstanza-deleteコマンドを繰り返し実行してください。

pg-primary ⇒ 削除対象のPostgreSQLクラスターを停止する

sudo pg_ctlcluster 17 demo stop

pg-primary ⇒ 対象のstanzaについてpgBackRestを停止する

sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stop
P00   INFO: stop command begin 2.59.3: --exec-id=1568-4c984637 --log-level-console=info --no-log-timestamp --stanza=demo
P00   INFO: stop command end: completed successfully

pg-primary ⇒ 1つのリポジトリからstanzaを削除する

sudo -u postgres pgbackrest --stanza=demo --repo=1 \
       --log-level-console=info stanza-delete
P00   INFO: stanza-delete command begin 2.59.3: --exec-id=1576-48368d9e --log-level-console=info --no-log-timestamp --pg1-path=/var/lib/postgresql/17/demo --repo=1 --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --stanza=demo
P00   INFO: stanza-delete command end: completed successfully

複数のリポジトリ

S3のサポート に示すように、複数のリポジトリを設定できます。利点の1つは、高速なリストア用のローカルリポジトリと、冗長性のためのリモートリポジトリを併用できることです。

stanza-create /stanza-upgrade など、一部のコマンドは設定済みのすべてのリポジトリを自動で処理します。一方、stanza-delete などのコマンドでは、repoオプションでリポジトリを指定する必要があります。

後方互換性を維持するため、repo1だけが設定されている場合はrepoオプションは不要です。ただし、リポジトリが1つでも、たとえばrepo2として設定されている場合はrepoオプションが必要です。これは、後で新しいリポジトリを追加した際に、コマンドが動作しなくなることを防ぐためです。

archive-pushコマンドは、設定済みのすべてのリポジトリのアーカイブに常にWALを送信します。あるリポジトリに接続できなくても、ほかのリポジトリへの送信は続きます。ただし、これを有効に機能させるにはarchive-async=yを有効にする必要があります。そうしないと、ほかのリポジトリは接続できないリポジトリよりWALセグメント1つ分しか先に進めません。また、いずれかのリポジトリにWALを送信できない場合、PostgreSQLはそのWALをpg_walディレクトリから削除しないため、ボリュームの空き容量がなくなる可能性があります。

バックアップはリポジトリごとに個別にスケジュールする必要があります。バックアップの種類や保持設定はリポジトリごとに異なるため、多くの場合これは望ましい動作です。同様に、リストアでもリポジトリを指定する必要があります。一般に、リカバリー時間が長くなっても、レイテンシーやコストの低いリポジトリをリストアに指定するほうが適しています。どのリポジトリが最も効率的かは、リストアのテストでしか判断できません。


Azure互換オブジェクトストアのサポート

pgBackRestは、Azure互換オブジェクトストアへのリポジトリの配置をサポートします。リポジトリを保存するコンテナーは事前に作成する必要があり、pgBackRestは自動作成しません。コンテナーのルート(/)にもリポジトリを配置できますが、通常はサブパスに配置するほうが適しています。これにより、オブジェクトストアのログなどのデータも競合せずに同じコンテナーに保存できます。

警告:

階層型名前空間を有効にしないでください。期限切れ処理でエラーが発生します。

pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Azureを設定する

[demo]

pg1-path=/var/lib/postgresql/17/demo



[global]

repo1-block=y

repo1-bundle=y

repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO

repo1-cipher-type=aes-256-cbc

repo1-path=/var/lib/pgbackrest

repo1-retention-diff=2

repo1-retention-full=2

repo2-azure-account=pgbackrest

repo2-azure-container=demo-container

repo2-azure-key=YXpLZXk=

repo2-path=/demo-repo

repo2-retention-full=4

repo2-type=azure

start-fast=y



[global:archive-push]

compress-level=3

repo2-azure-key-typeオプションをsasに、repo2-azure-keyオプションを共有アクセス署名トークンに設定すると、共有アクセス署名を使用できます。

コマンドは、リポジトリをローカルディスクに保存した場合とまったく同じように実行します。

pg-primary ⇒ stanzaを作成する

sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stanza-create
P00   INFO: stanza-create command begin 2.59.3: --exec-id=1657-1f40c982 --log-level-console=info --no-log-timestamp --pg1-path=/var/lib/postgresql/17/demo --repo2-azure-account=<redacted> --repo2-azure-container=demo-container --repo2-azure-key=<redacted> --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo2-path=/demo-repo --repo2-type=azure --stanza=demo
P00   INFO: stanza-create for stanza 'demo' on repo1
P00   INFO: stanza-create for stanza 'demo' on repo2
P00   INFO: stanza-create command end: completed successfully

Azureではファイル作成に比較的時間がかかるため、ファイルのバンドル化 を有効にするとbackup/restoreの性能が向上します。

pg-primary ⇒ デモクラスターをバックアップする

sudo -u postgres pgbackrest --stanza=demo --repo=2 \
       --log-level-console=info backup
P00   INFO: backup command begin 2.59.3: --exec-id=1666-1ab08562 --log-level-console=info --no-log-timestamp --pg1-path=/var/lib/postgresql/17/demo --repo=2 --repo2-azure-account=<redacted> --repo2-azure-container=demo-container --repo2-azure-key=<redacted> --repo1-block --repo1-bundle --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo2-path=/demo-repo --repo1-retention-diff=2 --repo1-retention-full=2 --repo2-retention-full=4 --repo2-type=azure --stanza=demo --start-fast
P00   WARN: no prior backup exists, incr backup has been changed to full
P00   INFO: execute backup start: backup begins after the requested immediate checkpoint completes
P00   INFO: backup start archive = 00000005000000000000001B, lsn = 0/1B000028
       [filtered 3 lines of output]
P00   INFO: check archive for segment(s) 00000005000000000000001B:00000005000000000000001B
P00   INFO: new backup label = 20261002-190727F
P00   INFO: full backup size = 29.2MB, file total = 1265
P00   INFO: backup command end: completed successfully
P00   INFO: expire command begin 2.59.3: --exec-id=1666-1ab08562 --log-level-console=info --no-log-timestamp --repo=2 --repo2-azure-account=<redacted> --repo2-azure-container=demo-container --repo2-azure-key=<redacted> --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo2-path=/demo-repo --repo1-retention-diff=2 --repo1-retention-full=2 --repo2-retention-full=4 --repo2-type=azure --stanza=demo

S3互換オブジェクトストアのサポート

pgBackRestは、S3互換オブジェクトストアへのリポジトリの配置をサポートします。リポジトリを保存するバケットは事前に作成する必要があり、pgBackRestは自動作成しません。バケットのルート(/)にもリポジトリを配置できますが、通常はサブパスに配置するほうが適しています。これにより、オブジェクトストアのログなどのデータも競合せずに同じバケットに保存できます。

pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ S3を設定する

[demo]

pg1-path=/var/lib/postgresql/17/demo



[global]

repo1-block=y

repo1-bundle=y

repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO

repo1-cipher-type=aes-256-cbc

repo1-path=/var/lib/pgbackrest

repo1-retention-diff=2

repo1-retention-full=2

repo2-azure-account=pgbackrest

repo2-azure-container=demo-container

repo2-azure-key=YXpLZXk=

repo2-path=/demo-repo

repo2-retention-full=4

repo2-type=azure

repo3-path=/demo-repo

repo3-retention-full=4

repo3-s3-bucket=demo-bucket

repo3-s3-endpoint=s3.us-east-1.amazonaws.com

repo3-s3-key=accessKey1

repo3-s3-key-secret=verySecretKey1

repo3-s3-region=us-east-1

repo3-type=s3

start-fast=y



[global:archive-push]

compress-level=3

注:

リージョンとエンドポイントは、バケットの配置場所に合わせて設定する必要があります。ここに示す値はus-east-1リージョン用です。

pgBackRestを実行するロールを作成し、バケットの権限は可能な限り制限することをお勧めします。AWSのインスタンスにロールが関連付けられている場合、repo3-s3-key-type=autoにするとpgBackRestが一時的な認証情報を自動取得するため、/etc/pgbackrest/pgbackrest.confにキーを明示的に設定する必要はありません。

このAmazon S3ポリシーの例では、すべての読み取りと書き込みを、指定のバケットとリポジトリパスに制限します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::demo-bucket"
            ],
            "Condition": {
                "StringEquals": {
                    "s3:prefix": [
                        "",
                        "demo-repo"
                    ],
                    "s3:delimiter": [
                        "/"
                    ]
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::demo-bucket"
            ],
            "Condition": {
                "StringLike": {
                    "s3:prefix": [
                        "demo-repo/*"
                    ]
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:PutObjectTagging",
                "s3:GetObject",
                "s3:GetObjectVersion",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::demo-bucket/demo-repo/*"
            ]
        }
    ]
}

コマンドは、リポジトリをローカルディスクに保存した場合とまったく同じように実行します。

pg-primary ⇒ stanzaを作成する

sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stanza-create
       [filtered 4 lines of output]
P00   INFO: stanza 'demo' already exists on repo2 and is valid
P00   INFO: stanza-create for stanza 'demo' on repo3
P00   INFO: stanza-create command end: completed successfully

S3ではファイル作成に比較的時間がかかるため、ファイルのバンドル化 を有効にするとbackup/restoreの性能が向上します。

pg-primary ⇒ デモクラスターをバックアップする

sudo -u postgres pgbackrest --stanza=demo --repo=3 \
       --log-level-console=info backup
P00   INFO: backup command begin 2.59.3: --exec-id=1767-6031c435 --log-level-console=info --no-log-timestamp --pg1-path=/var/lib/postgresql/17/demo --repo=3 --repo2-azure-account=<redacted> --repo2-azure-container=demo-container --repo2-azure-key=<redacted> --repo1-block --repo1-bundle --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo2-path=/demo-repo --repo3-path=/demo-repo --repo1-retention-diff=2 --repo1-retention-full=2 --repo2-retention-full=4 --repo3-retention-full=4 --repo3-s3-bucket=demo-bucket --repo3-s3-endpoint=s3.us-east-1.amazonaws.com --repo3-s3-key=<redacted> --repo3-s3-key-secret=<redacted> --repo3-s3-region=us-east-1 --repo2-type=azure --repo3-type=s3 --stanza=demo --start-fast
P00   WARN: no prior backup exists, incr backup has been changed to full
P00   INFO: execute backup start: backup begins after the requested immediate checkpoint completes
P00   INFO: backup start archive = 00000005000000000000001D, lsn = 0/1D000028
       [filtered 3 lines of output]
P00   INFO: check archive for segment(s) 00000005000000000000001D:00000005000000000000001D
P00   INFO: new backup label = 20261002-190741F
P00   INFO: full backup size = 29.2MB, file total = 1265
P00   INFO: backup command end: completed successfully
P00   INFO: expire command begin 2.59.3: --exec-id=1767-6031c435 --log-level-console=info --no-log-timestamp --repo=3 --repo2-azure-account=<redacted> --repo2-azure-container=demo-container --repo2-azure-key=<redacted> --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo2-path=/demo-repo --repo3-path=/demo-repo --repo1-retention-diff=2 --repo1-retention-full=2 --repo2-retention-full=4 --repo3-retention-full=4 --repo3-s3-bucket=demo-bucket --repo3-s3-endpoint=s3.us-east-1.amazonaws.com --repo3-s3-key=<redacted> --repo3-s3-key-secret=<redacted> --repo3-s3-region=us-east-1 --repo2-type=azure --repo3-type=s3 --stanza=demo

SFTPのサポート

pgBackRestは、SFTPホストへのリポジトリの配置をサポートします。SFTPのファイル転送は比較的遅いため、process-maxを増やしてファイル転送を並列化するとコマンドの性能が向上します。

pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ SFTPを設定する

[demo]

pg1-path=/var/lib/postgresql/17/demo



[global]

process-max=4

repo1-block=y

repo1-bundle=y

repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO

repo1-cipher-type=aes-256-cbc

repo1-path=/var/lib/pgbackrest

repo1-retention-diff=2

repo1-retention-full=2

repo2-azure-account=pgbackrest

repo2-azure-container=demo-container

repo2-azure-key=YXpLZXk=

repo2-path=/demo-repo

repo2-retention-full=4

repo2-type=azure

repo3-path=/demo-repo

repo3-retention-full=4

repo3-s3-bucket=demo-bucket

repo3-s3-endpoint=s3.us-east-1.amazonaws.com

repo3-s3-key=accessKey1

repo3-s3-key-secret=verySecretKey1

repo3-s3-region=us-east-1

repo3-type=s3

repo4-bundle=y

repo4-path=/demo-repo

repo4-sftp-host=sftp-server

repo4-sftp-host-key-hash-type=sha1

repo4-sftp-host-user=pgbackrest

repo4-sftp-private-key-file=/var/lib/postgresql/.ssh/id_rsa_sftp

repo4-sftp-public-key-file=/var/lib/postgresql/.ssh/id_rsa_sftp.pub

repo4-type=sftp

start-fast=y



[global:archive-push]

compress-level=3

SFTPを利用する場合、libssh2がOpenSSHに対してコンパイルされていれば、repo4-sftp-public-key-fileは省略できます。

pg-primary ⇒ SFTPバックアップ用のSSHキーペアを生成する

sudo -u postgres mkdir -m 750 -p /var/lib/postgresql/.ssh
sudo -u postgres ssh-keygen -f /var/lib/postgresql/.ssh/id_rsa_sftp \
       -t rsa -b 4096 -N "" -m PEM

sftp-server ⇒ pg-primaryのSFTPバックアップ用公開鍵をsftp-serverにコピーする

sudo -u pgbackrest mkdir -m 750 -p /home/pgbackrest/.ssh
(sudo ssh root@pg-primary cat /var/lib/postgresql/.ssh/id_rsa_sftp.pub) | \
       sudo -u pgbackrest tee -a /home/pgbackrest/.ssh/authorized_keys

コマンドは、リポジトリをローカルディスクに保存した場合とまったく同じように実行します。

pg-primary ⇒ repo4-sftp-host-key-check-typeのデフォルトが「strict」のため、sftp-serverのフィンガープリントをknown_hostsファイルに追加する

ssh-keyscan -H sftp-server >> /var/lib/postgresql/.ssh/known_hosts 2>/dev/null

pg-primary ⇒ stanzaを作成する

sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stanza-create
       [filtered 6 lines of output]
P00   INFO: stanza 'demo' already exists on repo3 and is valid
P00   INFO: stanza-create for stanza 'demo' on repo4
P00   INFO: stanza-create command end: completed successfully

pg-primary ⇒ デモクラスターをバックアップする

sudo -u postgres pgbackrest --stanza=demo --repo=4 \
       --log-level-console=info backup
P00   INFO: backup command begin 2.59.3: --exec-id=1859-efaa8e87 --log-level-console=info --no-log-timestamp --pg1-path=/var/lib/postgresql/17/demo --process-max=4 --repo=4 --repo2-azure-account=<redacted> --repo2-azure-container=demo-container --repo2-azure-key=<redacted> --repo1-block --repo1-bundle --repo4-bundle --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo2-path=/demo-repo --repo3-path=/demo-repo --repo4-path=/demo-repo --repo1-retention-diff=2 --repo1-retention-full=2 --repo2-retention-full=4 --repo3-retention-full=4 --repo3-s3-bucket=demo-bucket --repo3-s3-endpoint=s3.us-east-1.amazonaws.com --repo3-s3-key=<redacted> --repo3-s3-key-secret=<redacted> --repo3-s3-region=us-east-1 --repo4-sftp-host=sftp-server --repo4-sftp-host-key-hash-type=sha1 --repo4-sftp-host-user=pgbackrest --repo4-sftp-private-key-file=/var/lib/postgresql/.ssh/id_rsa_sftp --repo4-sftp-public-key-file=/var/lib/postgresql/.ssh/id_rsa_sftp.pub --repo2-type=azure --repo3-type=s3 --repo4-type=sftp --stanza=demo --start-fast
P00   WARN: option 'repo4-retention-full' is not set for 'repo4-retention-full-type=count', the repository may run out of space
            HINT: to retain full backups indefinitely (without warning), set option 'repo4-retention-full' to the maximum.
P00   WARN: no prior backup exists, incr backup has been changed to full
P00   INFO: execute backup start: backup begins after the requested immediate checkpoint completes
P00   INFO: backup start archive = 00000005000000000000001E, lsn = 0/1E000028
       [filtered 3 lines of output]
P00   INFO: check archive for segment(s) 00000005000000000000001E:00000005000000000000001F
P00   INFO: new backup label = 20261002-190759F
P00   INFO: full backup size = 29.2MB, file total = 1265
P00   INFO: backup command end: completed successfully
P00   INFO: expire command begin 2.59.3: --exec-id=1859-efaa8e87 --log-level-console=info --no-log-timestamp --repo=4 --repo2-azure-account=<redacted> --repo2-azure-container=demo-container --repo2-azure-key=<redacted> --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo2-path=/demo-repo --repo3-path=/demo-repo --repo4-path=/demo-repo --repo1-retention-diff=2 --repo1-retention-full=2 --repo2-retention-full=4 --repo3-retention-full=4 --repo3-s3-bucket=demo-bucket --repo3-s3-endpoint=s3.us-east-1.amazonaws.com --repo3-s3-key=<redacted> --repo3-s3-key-secret=<redacted> --repo3-s3-region=us-east-1 --repo4-sftp-host=sftp-server --repo4-sftp-host-key-hash-type=sha1 --repo4-sftp-host-user=pgbackrest --repo4-sftp-private-key-file=/var/lib/postgresql/.ssh/id_rsa_sftp --repo4-sftp-public-key-file=/var/lib/postgresql/.ssh/id_rsa_sftp.pub --repo2-type=azure --repo3-type=s3 --repo4-type=sftp --stanza=demo
P00   INFO: expire command end: completed successfully

GCS互換オブジェクトストアのサポート

pgBackRestは、GCS互換オブジェクトストアへのリポジトリの配置をサポートします。リポジトリを保存するバケットは事前に作成する必要があり、pgBackRestは自動作成しません。バケットのルート(/)にもリポジトリを配置できますが、通常はサブパスに配置するほうが適しています。これにより、オブジェクトストアのログなどのデータも競合せずに同じバケットに保存できます。

pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ GCSを設定する

[demo]

pg1-path=/var/lib/postgresql/17/demo



[global]

process-max=4

repo1-block=y

repo1-bundle=y

repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO

repo1-cipher-type=aes-256-cbc

repo1-path=/var/lib/pgbackrest

repo1-retention-diff=2

repo1-retention-full=2

repo2-azure-account=pgbackrest

repo2-azure-container=demo-container

repo2-azure-key=YXpLZXk=

repo2-path=/demo-repo

repo2-retention-full=4

repo2-type=azure

repo3-path=/demo-repo

repo3-retention-full=4

repo3-s3-bucket=demo-bucket

repo3-s3-endpoint=s3.us-east-1.amazonaws.com

repo3-s3-key=accessKey1

repo3-s3-key-secret=verySecretKey1

repo3-s3-region=us-east-1

repo3-type=s3

repo4-bundle=y

repo4-path=/demo-repo

repo4-sftp-host=sftp-server

repo4-sftp-host-key-hash-type=sha1

repo4-sftp-host-user=pgbackrest

repo4-sftp-private-key-file=/var/lib/postgresql/.ssh/id_rsa_sftp

repo4-sftp-public-key-file=/var/lib/postgresql/.ssh/id_rsa_sftp.pub

repo4-type=sftp

repo5-gcs-bucket=demo-bucket

repo5-gcs-key=/etc/pgbackrest/gcs-key.json

repo5-path=/demo-repo

repo5-type=gcs

start-fast=y



[global:archive-push]

compress-level=3

GCEで実行する場合は、repo5-gcs-key-type=autoを設定すると、インスタンスのサービスアカウントを使用して自動認証します。

コマンドは、リポジトリをローカルディスクに保存した場合とまったく同じように実行します。

GCSではファイル作成に比較的時間がかかるため、ファイルのバンドル化 を有効にするとbackup/restoreの性能が向上します。


リポジトリの目標時刻

目標時刻は、バージョン管理されたストレージ上のリポジトリをコマンドが読み込む際の時点を指定します。これにより、ある時点のリポジトリを読み込み、ユーザーの誤操作やマルウェアによって削除または破損されたデータを復元できます。

S3、GCS、Azureはストレージのバージョン管理に対応していますが、通常はデフォルトで有効になっていません。バージョン管理に加えて、S3ではオブジェクトロック、GCSやAzureでは論理削除を有効にすると有用な場合があります。

repo-target-timeオプションを指定する場合は、repoオプションも指定する必要があります。すべてのリポジトリ種類がバージョン管理に対応するとは限らず、一般にリカバリーでは単一のリポジトリを対象にするのが妥当です。

ストレージのタイムスタンプとの比較は、指定したタイムスタンプ以下(<=)で行われ、指定したタイムスタンプのミリ秒部分は切り捨てられます。

この機能を示すため、S3リポジトリのdemostanzaを削除します。

pg-primary ⇒ S3リポジトリのstanzaを削除する

sudo pg_ctlcluster 17 demo stop
sudo -u postgres pgbackrest --stanza=demo stop
sudo -u postgres pgbackrest --stanza=demo --repo=3 stanza-delete

stanzaを削除すると、infoコマンドはリポジトリがエラー状態であることを示します。

pg-primary ⇒ infoでエラーを確認する

sudo -u postgres pgbackrest --stanza=demo --repo=3 info
stanza: demo
    status: error (missing stanza path)

ただし、ストレージはバージョン管理されているため、stanzaの削除前の時点のリポジトリを確認できます。状況によっては目標時刻の特定が難しい場合もありますが、この例ではbackup.infoの削除時刻を調べることで、stanzaが削除された時刻を特定できます。

pg-primary ⇒ バケット内のbackup.infoのバージョンを一覧表示する

key=demo-repo/backup/demo/backup.info; \
       aws s3api list-object-versions --bucket demo-bucket \
       --prefix $key --output table \
       --query "sort_by([Versions[?Key=='$key'].{Action:'PUT', \
       Modified:LastModified,Object:Key}, \
       DeleteMarkers[?Key=='$key'].{Action:'DELETE', \
       Modified:LastModified,Object:Key}][],&Modified)"
-----------------------------------------------------------------------------
|                            ListObjectVersions                             |
+--------+----------------------------+-------------------------------------+
| Action |         Modified           |               Object                |
+--------+----------------------------+-------------------------------------+
|  PUT   |  2026-10-02T19:07:41.474Z  |  demo-repo/backup/demo/backup.info  |
|  PUT   |  2026-10-02T19:07:56.815Z  |  demo-repo/backup/demo/backup.info  |
|  DELETE|  2026-10-02T19:08:04.878Z  |  demo-repo/backup/demo/backup.info  |
+--------+----------------------------+-------------------------------------+

これで、目標時刻を指定してinfoコマンドを実行すると、削除前のリポジトリを表示できます。

pg-primary ⇒ 目標時刻を指定してinfoを実行する

sudo -u postgres pgbackrest --stanza=demo --repo=3 \
       --repo-target-time="2026-10-02 19:07:57+00" info
       [filtered 5 lines of output]
        wal archive min/max (17): 00000005000000000000001C/00000005000000000000001D

        full backup: 20261002-190741F
            timestamp start/stop: 2026-10-02 19:07:41+00 / 2026-10-02 19:07:56+00
            wal start/stop: 00000005000000000000001D / 00000005000000000000001D
            repo3: backup set size: 3.8MB, backup size: 3.8MB

必要なバックアップがinfoコマンドで表示されれば、同じ目標時刻を使ってリストアできます。

pg-primary ⇒ 目標時刻を指定してリストアする

sudo -u postgres pgbackrest --stanza=demo --repo=3 --delta \
       --repo-target-time="2026-10-02 19:07:57+00" --log-level-console=info restore
P00   INFO: restore command begin 2.59.3: --delta --exec-id=1953-a0a01a5a --log-level-console=info --no-log-timestamp --pg1-path=/var/lib/postgresql/17/demo --process-max=4 --repo=3 --repo2-azure-account=<redacted> --repo2-azure-container=demo-container --repo2-azure-key=<redacted> --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo5-gcs-bucket=demo-bucket --repo5-gcs-key=<redacted> --repo1-path=/var/lib/pgbackrest --repo2-path=/demo-repo --repo3-path=/demo-repo --repo4-path=/demo-repo --repo5-path=/demo-repo --repo3-s3-bucket=demo-bucket --repo3-s3-endpoint=s3.us-east-1.amazonaws.com --repo3-s3-key=<redacted> --repo3-s3-key-secret=<redacted> --repo3-s3-region=us-east-1 --repo4-sftp-host=sftp-server --repo4-sftp-host-key-hash-type=sha1 --repo4-sftp-host-user=pgbackrest --repo4-sftp-private-key-file=/var/lib/postgresql/.ssh/id_rsa_sftp --repo4-sftp-public-key-file=/var/lib/postgresql/.ssh/id_rsa_sftp.pub --repo-target-time="2026-10-02 19:07:57+00" --repo2-type=azure --repo3-type=s3 --repo4-type=sftp --repo5-type=gcs --stanza=demo
P00   INFO: repo3: restore backup set 20261002-190741F, recovery will start at 2026-10-02 19:07:41
P00   INFO: remove invalid files/links/paths from '/var/lib/postgresql/17/demo'
P00   INFO: write updated /var/lib/postgresql/17/demo/postgresql.auto.conf
       [filtered 2 lines of output]
sudo pg_ctlcluster 17 demo start

専用リポジトリホスト

クイックスタート で説明した構成は単純な構成に適していますが、企業での構成では通常、バックアップとWALアーカイブファイルを保存する専用リポジトリホストを用意します。これにより、バックアップとWALアーカイブをデータベースサーバーから分離し、データベースホストの障害による影響を減らせます。それでも、従来のバックアップソフトウェアでリポジトリホストをバックアップすることをお勧めします。

PostgreSQLホストでは、pg1-pathをローカルのPostgreSQLクラスターのパスにする必要があり、pg1-hostは設定しないことをお勧めします。リポジトリホストを設定する際は、pgbackrest設定ファイルのpg-hostオプションで、プライマリーホストとスタンバイホスト(存在する場合)への接続を設定する必要があります。複数のPostgreSQLホストを認識するpgbackrest設定は、リポジトリホストのものだけにします。順序は関係なく、たとえばpg1-path/pg1-hostとpg2-path/pg2-hostは、どちらをプライマリーまたはスタンバイにしてもかまいません。

インストール

クラスターのバックアップを保存するため、repositoryという新しいホストを作成します。

注:

リポジトリホストにインストールするpgBackRestのバージョンは、PostgreSQLホストのバージョンと完全に一致する必要があります。

pgBackRestリポジトリの所有者として、pgbackrestユーザーを作成します。どのユーザーでもリポジトリの所有者にできますが、混乱を避けるため、postgresが存在しても使用しないことをお勧めします。

注:

pgBackRestをパッケージからインストールすると、/etc/logrotate.d/pgbackrestのようなlogrotate設定が付属し、suディレクティブ(例:su postgres postgres)により特定のユーザーでログをローテーションする場合があります。/var/log/pgbackrestのファイルは、pgBackRestを実行するユーザー(ここではpgbackrest)が所有するため、suディレクティブもそのユーザーに合わせて更新する必要があります。そうしないとlogrotateが権限エラーで失敗します。

repository ⇒ pgbackrestユーザーを作成する

sudo adduser --disabled-password --gecos "" pgbackrest

pgBackRestはソースからビルドするより、パッケージからインストールすることをお勧めします。パッケージからインストールする場合、このセクションの残りの手順は通常不要ですが、パッケージが一部のディレクトリを作成しなかったり、誤った権限を設定したりする可能性があります。その場合は、手動でディレクトリを作成したり権限を更新したりする必要がある場合があります。

pgBackRestのDebian/Ubuntuパッケージはapt.postgresql.org から入手できます。

使用するディストリビューションやバージョン向けのパッケージがない場合は、ソースからビルド し、ここに示す手順で手動インストールできます。

repository ⇒ 依存パッケージをインストールする

sudo apt-get install postgresql-client libxml2 libssh2-1

repository ⇒ ビルド用ホストからpgBackRestバイナリをコピーする

sudo scp build:/build/pgbackrest/src/pgbackrest /usr/bin
sudo chmod 755 /usr/bin/pgbackrest

pgBackRestには、ログディレクトリ、設定ディレクトリ、設定ファイルが必要です。

repository ⇒ pgBackRestの設定ファイルとディレクトリを作成する

sudo mkdir -p -m 770 /var/log/pgbackrest
sudo chown pgbackrest:pgbackrest /var/log/pgbackrest
sudo mkdir -p /etc/pgbackrest
sudo mkdir -p /etc/pgbackrest/conf.d
sudo touch /etc/pgbackrest/pgbackrest.conf
sudo chmod 640 /etc/pgbackrest/pgbackrest.conf
sudo chown pgbackrest:pgbackrest /etc/pgbackrest/pgbackrest.conf

repository ⇒ pgBackRestのリポジトリを作成する

sudo mkdir -p /var/lib/pgbackrest
sudo chmod 750 /var/lib/pgbackrest
sudo chown pgbackrest:pgbackrest /var/lib/pgbackrest

パスワードなしのSSHの設定

pgBackRestは、パスワードなしのSSHを使用してホスト間で通信できます。TLSも使用できます。TLSの設定 を参照してください。

repository ⇒ repositoryホストのキーペアを作成する

sudo -u pgbackrest mkdir -m 750 /home/pgbackrest/.ssh
sudo -u pgbackrest ssh-keygen -f /home/pgbackrest/.ssh/id_rsa \
       -t rsa -b 4096 -N ""

pg-primary ⇒ pg-primaryホストのキーペアを作成する

sudo -u postgres mkdir -m 750 -p /var/lib/postgresql/.ssh
sudo -u postgres ssh-keygen -f /var/lib/postgresql/.ssh/id_rsa \
       -t rsa -b 4096 -N ""

repositoryとpg-primaryの間で鍵を交換します。

repository ⇒ pg-primaryの公開鍵をrepositoryにコピーする

(echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' && \
       echo -n 'command="/usr/bin/pgbackrest ${SSH_ORIGINAL_COMMAND#* }" ' && \
       sudo ssh root@pg-primary cat /var/lib/postgresql/.ssh/id_rsa.pub) | \
       sudo -u pgbackrest tee -a /home/pgbackrest/.ssh/authorized_keys

pg-primary ⇒ repositoryの公開鍵をpg-primaryにコピーする

(echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' && \
       echo -n 'command="/usr/bin/pgbackrest ${SSH_ORIGINAL_COMMAND#* }" ' && \
       sudo ssh root@repository cat /home/pgbackrest/.ssh/id_rsa.pub) | \
       sudo -u postgres tee -a /var/lib/postgresql/.ssh/authorized_keys

repositoryからpg-primary、およびその逆方向に接続できることをテストします。

repository ⇒ repositoryからpg-primaryへの接続をテストする

sudo -u pgbackrest ssh postgres@pg-primary

pg-primary ⇒ pg-primaryからrepositoryへの接続をテストする

sudo -u postgres ssh pgbackrest@repository

注:

sshは、パスワードなしの接続でpgBackRestの実行だけを許可するように設定されています。これにより、サービスアカウントのいずれかが乗っ取られた場合のセキュリティを高めます。

設定

リポジトリホストには、pg-primaryのホスト名、ユーザー、データベースパスを設定する必要があります。後でスタンバイを追加できるよう、プライマリーはpg1として設定します。

repository:/etc/pgbackrest/pgbackrest.conf ⇒ pg1-host/pg1-host-userとpg1-pathを設定する

[demo]

pg1-host=pg-primary

pg1-path=/var/lib/postgresql/17/demo



[global]

repo1-path=/var/lib/pgbackrest

repo1-retention-full=2

start-fast=y

データベースホストには、リポジトリのホスト名とユーザーを設定する必要があります。repo1-host-userオプションのデフォルトはpgbackrestです。postgresユーザーがリポジトリホストでリストアを行う場合は、同じpostgresユーザーにバックアップも許可しないことをお勧めします。ただし、postgresユーザーがpgbackrestユーザーと同じグループに属していれば、リポジトリを直接読み取ることはできます。

pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ repo1-host/repo1-host-userを設定する

[demo]

pg1-path=/var/lib/postgresql/17/demo



[global]

log-level-file=detail

repo1-host=repository

PostgreSQLの設定はアーカイブの設定 を参照してください。

コマンドの実行方法は単一ホスト構成と同じですが、backupやexpireなど、一部のコマンドはデータベースホストではなくリポジトリホストから実行します。

stanzaの作成と確認

新しいリポジトリにstanzaを作成します。

repository ⇒ stanzaを作成する

sudo -u pgbackrest pgbackrest --stanza=demo stanza-create

データベースホストとリポジトリホストの両方で、設定が正しいことを確認します。checkコマンドの詳細は設定の確認 を参照してください。

pg-primary ⇒ 設定を確認する

sudo -u postgres pgbackrest --stanza=demo check

repository ⇒ 設定を確認する

sudo -u pgbackrest pgbackrest --stanza=demo check

バックアップの実行

PostgreSQLクラスターのバックアップを行うには、リポジトリホストでpgBackRestのbackupコマンドを実行します。

repository ⇒ デモクラスターをバックアップする

sudo -u pgbackrest pgbackrest --stanza=demo backup
P00   WARN: no prior backup exists, incr backup has been changed to full

リポジトリホストに新しいリポジトリを作成したため、増分バックアップをフルバックアップに変更するという警告が表示されました。

バックアップのリストア

PostgreSQLクラスターをリストアするには、データベースホストでpgBackRestのrestoreコマンドを実行します。

pg-primary ⇒ デモクラスターを停止し、リストアしてPostgreSQLを再起動する

sudo pg_ctlcluster 17 demo stop
sudo -u postgres pgbackrest --stanza=demo --delta restore
sudo pg_ctlcluster 17 demo start

バックアップとリストアの並列実行

pgBackRestは並列処理により、圧縮と転送の性能を向上させます。この機能で使用するプロセス数は、--process-maxオプションで設定します。

通常、backupコマンドで使用するCPUは、利用可能なCPUの25%以内に抑えることをお勧めします。バックアップは定期的に行っていればそれほど高速である必要はなく、できる限りデータベースの性能に影響を与えないようにすることが望まれます。

restoreコマンドでは利用可能なすべてのCPUを使用でき、そうすることをお勧めします。リストア中はPostgreSQLクラスターが停止し、通常はホストでほかの重要な処理が行われていないためです。ホストに複数のクラスターがある場合は、それを考慮してリストアの並列度を設定してください。

repository ⇒ 単一プロセスでバックアップを実行する

sudo -u pgbackrest pgbackrest --stanza=demo --type=full backup

repository:/etc/pgbackrest/pgbackrest.conf ⇒ 複数のbackupプロセスを使用するようpgBackRestを設定する

[demo]

pg1-host=pg-primary

pg1-path=/var/lib/postgresql/17/demo



[global]

process-max=3

repo1-path=/var/lib/pgbackrest

repo1-retention-full=2

start-fast=y

repository ⇒ 複数プロセスでバックアップを実行する

sudo -u pgbackrest pgbackrest --stanza=demo --type=full backup

repository ⇒ デモクラスターのバックアップ情報を取得する

sudo -u pgbackrest pgbackrest info
stanza: demo
    status: ok
    cipher: none

    db (current)
        wal archive min/max (17): 000000070000000000000023/000000070000000000000025

        full backup: 20261002-190844F
            timestamp start/stop: 2026-10-02 19:08:44+00 / 2026-10-02 19:08:48+00
            wal start/stop: 000000070000000000000023 / 000000070000000000000023
            database size: 29.2MB, database backup size: 29.2MB
            repo1: backup set size: 3.8MB, backup size: 3.8MB

        full backup: 20261002-190850F
            timestamp start/stop: 2026-10-02 19:08:50+00 / 2026-10-02 19:08:52+00
            wal start/stop: 000000070000000000000024 / 000000070000000000000025
            database size: 29.2MB, database backup size: 29.2MB
            repo1: backup set size: 3.8MB, backup size: 3.8MB

複数プロセスを使うことで、最後のバックアップの性能は向上しているはずです。非常に小さなバックアップでは違いが明確でない場合もありますが、データベースが大きくなるほど短縮できる時間も増えます。


開始と停止

テストのためにスタンバイを昇格させたり、本番バックアップからテスト用クラスターをリストアしたりする場合、それらのクラスターがpgBackRestリポジトリに書き込めないようにしておくことをお勧めします。これはstopコマンドで行えます。

stopによってブロックされる書き込みコマンドは、archive-push、backup、expire、stanza-create、stanza-upgradeです。stanza-deleteはこの規則の例外です(詳細はstanzaの削除 を参照)。

pg-primary ⇒ pgBackRestの書き込みコマンドを停止する

sudo -u postgres pgbackrest stop

新たなpgBackRestの書き込みコマンドは実行されなくなります。

repository ⇒ バックアップを試みる

sudo -u pgbackrest pgbackrest --stanza=demo backup
P00   WARN: unable to check pg1: [StopError] raised from remote-0 ssh protocol on 'pg-primary': stop file exists for all stanzas
P00  ERROR: [056]: unable to find primary cluster - cannot proceed
            HINT: are all available clusters in recovery?

現在実行中のpgBackRest書き込みコマンドも終了するには、--forceオプションを指定します。非同期のarchive-getも対象に含まれますが、PostgreSQLが必要とすれば再び実行されます。pgBackRestがすでに停止している場合、再度停止すると警告が出ます。

pg-primary ⇒ pgBackRestのサービスを再度停止する

sudo -u postgres pgbackrest stop
P00   WARN: stop file already exists for all stanzas

pgBackRestの書き込みコマンドを再び許可するには、startコマンドを使用します。停止前に進行中だった書き込みコマンドが自動で再開されることはありませんが、新たに開始することは許可されます。

pg-primary ⇒ pgBackRestの書き込みコマンドを開始する

sudo -u postgres pgbackrest start

単一のstanzaについてのみpgBackRestを停止することもできます。

pg-primary ⇒ demostanzaのpgBackRest書き込みコマンドを停止する

sudo -u postgres pgbackrest --stanza=demo stop

指定したstanzaでは、新たなpgBackRestの書き込みコマンドは実行されなくなります。

repository ⇒ バックアップを試みる

sudo -u pgbackrest pgbackrest --stanza=demo backup
P00   WARN: unable to check pg1: [StopError] raised from remote-0 ssh protocol on 'pg-primary': stop file exists for stanza demo
P00  ERROR: [056]: unable to find primary cluster - cannot proceed
            HINT: are all available clusters in recovery?

単一のstanzaのpgBackRest書き込みコマンドを開始する場合も、stanzaを指定する必要があります。

pg-primary ⇒ demostanzaのpgBackRest書き込みコマンドを開始する

sudo -u postgres pgbackrest --stanza=demo start

レプリケーション

レプリケーションでは、単一のプライマリーからPostgreSQLクラスターの複数のコピー(スタンバイと呼びます)を作成できます。スタンバイは読み取り負荷の分散に利用でき、プライマリーホストの障害に備えた冗長性も提供します。

インストール

スタンバイを実行するため、pg-standbyという新しいホストを作成します。

pgBackRestはソースからビルドするより、パッケージからインストールすることをお勧めします。パッケージからインストールする場合、このセクションの残りの手順は通常不要ですが、パッケージが一部のディレクトリを作成しなかったり、誤った権限を設定したりする可能性があります。その場合は、手動でディレクトリを作成したり権限を更新したりする必要がある場合があります。

pgBackRestのDebian/Ubuntuパッケージはapt.postgresql.org から入手できます。

使用するディストリビューションやバージョン向けのパッケージがない場合は、ソースからビルド し、ここに示す手順で手動インストールできます。

pg-standby ⇒ 依存パッケージをインストールする

sudo apt-get install postgresql-client libxml2 libssh2-1

pg-standby ⇒ ビルド用ホストからpgBackRestバイナリをコピーする

sudo scp build:/build/pgbackrest/src/pgbackrest /usr/bin
sudo chmod 755 /usr/bin/pgbackrest

pgBackRestには、ログディレクトリ、設定ディレクトリ、設定ファイルが必要です。

pg-standby ⇒ pgBackRestの設定ファイルとディレクトリを作成する

sudo mkdir -p -m 770 /var/log/pgbackrest
sudo chown postgres:postgres /var/log/pgbackrest
sudo mkdir -p /etc/pgbackrest
sudo mkdir -p /etc/pgbackrest/conf.d
sudo touch /etc/pgbackrest/pgbackrest.conf
sudo chmod 640 /etc/pgbackrest/pgbackrest.conf
sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf

パスワードなしのSSHの設定

pgBackRestは、パスワードなしのSSHを使用してホスト間で通信できます。TLSも使用できます。TLSの設定 を参照してください。

pg-standby ⇒ pg-standbyホストのキーペアを作成する

sudo -u postgres mkdir -m 750 -p /var/lib/postgresql/.ssh
sudo -u postgres ssh-keygen -f /var/lib/postgresql/.ssh/id_rsa \
       -t rsa -b 4096 -N ""

repositoryとpg-standbyの間で鍵を交換します。

repository ⇒ pg-standbyの公開鍵をrepositoryにコピーする

(echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' && \
       echo -n 'command="/usr/bin/pgbackrest ${SSH_ORIGINAL_COMMAND#* }" ' && \
       sudo ssh root@pg-standby cat /var/lib/postgresql/.ssh/id_rsa.pub) | \
       sudo -u pgbackrest tee -a /home/pgbackrest/.ssh/authorized_keys

pg-standby ⇒ repositoryの公開鍵をpg-standbyにコピーする

(echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' && \
       echo -n 'command="/usr/bin/pgbackrest ${SSH_ORIGINAL_COMMAND#* }" ' && \
       sudo ssh root@repository cat /home/pgbackrest/.ssh/id_rsa.pub) | \
       sudo -u postgres tee -a /var/lib/postgresql/.ssh/authorized_keys

repositoryからpg-standby、およびその逆方向に接続できることをテストします。

repository ⇒ repositoryからpg-standbyへの接続をテストする

sudo -u pgbackrest ssh postgres@pg-standby

pg-standby ⇒ pg-standbyからrepositoryへの接続をテストする

sudo -u postgres ssh pgbackrest@repository

ホットスタンバイ

ホットスタンバイは、WALアーカイブを使ってレプリケーションを行い、読み取り専用のクエリーを受け付けます。

pgBackRestの設定はpg-primaryとほぼ同じですが、WALストリームの末尾に達してもクラスターをリカバリーモードに保つため、リカバリーの種類にstandbyを使用します。

pg-standby:/etc/pgbackrest/pgbackrest.conf ⇒ スタンバイのpgBackRestを設定する

[demo]

pg1-path=/var/lib/postgresql/17/demo



[global]

log-level-file=detail

repo1-host=repository

PostgreSQLの設定ファイルを作成するため、デモクラスターを作成する必要があります(リストア時に上書きされます)。

pg-standby ⇒ デモクラスターを作成する

sudo pg_createcluster 17 demo

これでrestoreコマンドを使ってスタンバイを作成できます。

重要:

新しいプライマリーにする目的ではなく、レポート作成やテストなどのためにクラスターを昇格させる場合は、--archive-mode=offを使うか、postgresql.confにarchive_mode=offを設定してアーカイブを無効にしてください。無効にしないと、リポジトリに不要なWALが混入し、リストアが難しくなる可能性があります。

pg-standby ⇒ デモのスタンバイクラスターをリストアする

sudo -u postgres pgbackrest --stanza=demo --delta --type=standby restore
sudo -u postgres cat /var/lib/postgresql/17/demo/postgresql.auto.conf
# Do not edit this file manually!
# It will be overwritten by the ALTER SYSTEM command.

# Recovery settings generated by pgBackRest restore on 2026-10-02 19:06:30
restore_command = 'pgbackrest --stanza=demo archive-get %f "%p"'

# Recovery settings generated by pgBackRest restore on 2026-10-02 19:06:56
restore_command = 'pgbackrest --stanza=demo archive-get %f "%p"'

# Recovery settings generated by pgBackRest restore on 2026-10-02 19:07:16
restore_command = 'pgbackrest --stanza=demo archive-get %f "%p"'
# Removed by pgBackRest restore on 2026-10-02 19:08:10 # recovery_target_time = '2026-10-02 19:07:12.060959+00'
# Removed by pgBackRest restore on 2026-10-02 19:08:10 # recovery_target_action = 'promote'

# Recovery settings generated by pgBackRest restore on 2026-10-02 19:08:10
restore_command = 'pgbackrest --repo=3 --repo-target-time="2026-10-02 19:07:57+00" --stanza=demo archive-get %f "%p"'

# Recovery settings generated by pgBackRest restore on 2026-10-02 19:08:37
restore_command = 'pgbackrest --stanza=demo archive-get %f "%p"'

# Recovery settings generated by pgBackRest restore on 2026-10-02 19:09:08
restore_command = 'pgbackrest --stanza=demo archive-get %f "%p"'

この設定は、スタンバイがプライマリーに昇格した場合に備えたものです。

pg-standby:/etc/postgresql/17/demo/postgresql.conf ⇒ PostgreSQLを設定する

archive_command = 'pgbackrest --stanza=demo archive-push %p'

archive_mode = on

pg-standby ⇒ PostgreSQLを起動する

sudo pg_ctlcluster 17 demo start

PostgreSQLのログから、リカバリーについて有用な情報が得られます。特に、クラスターがスタンバイモードに入り、読み取り専用接続を受け付ける準備ができたことを確認してください。

pg-standby ⇒ PostgreSQLのログ出力で、成功を示すメッセージを確認する

sudo -u postgres cat /var/log/postgresql/postgresql-17-demo.log
       [filtered 6 lines of output]
LOG:  restored log file "00000007.history" from archive
LOG:  restored log file "000000070000000000000024" from archive
LOG:  entering standby mode
LOG:  redo starts at 0/24000028
LOG:  restored log file "000000070000000000000025" from archive
       [filtered 3 lines of output]

レプリケーションが正しく設定されているかを簡単にテストするには、pg-primaryにテーブルを作成します。

pg-primary ⇒ プライマリーに新しいテーブルを作成する

sudo -u postgres psql -c " \
       begin; \
       create table replicated_table (message text); \
       insert into replicated_table values ('Important Data'); \
       commit; \
       select * from replicated_table";
       [filtered 4 lines of output]
    message
----------------
 Important Data
(1 row)

続いて、pg-standbyで同じテーブルにクエリーを実行します。

pg-standby ⇒ スタンバイで新しいテーブルにクエリーを実行する

sudo -u postgres psql -c "select * from replicated_table;"
ERROR:  relation "replicated_table" does not exist
LINE 1: select * from replicated_table;
                      ^

ここで失敗するのは、PostgreSQLがアーカイブからWALセグメントを取得してレプリケーションしているためです。変更を含むWALセグメントがpg-primaryから送信されるまで、その変更はスタンバイに現れません。

pg_switch_wal()を呼び出すと、現在のWALセグメントをアーカイブに手動で送信できます(以後の変更を格納する新しいWALセグメントが作成されます)。

pg-primary ⇒ pg_switch_wal()を呼び出す

sudo -u postgres psql -c "select *, current_timestamp from pg_switch_wal()";
 pg_switch_wal |       current_timestamp
---------------+-------------------------------
 0/26019600    | 2026-10-02 19:09:16.993398+00
(1 row)

少し待つと、pg-standbyにテーブルが現れます。

pg-standby ⇒ スタンバイに新しいテーブルが存在することを確認する(数回の再試行が必要な場合があります)

sudo -u postgres psql -c " \
       select *, current_timestamp from replicated_table"
    message     |       current_timestamp
----------------+-------------------------------
 Important Data | 2026-10-02 19:09:22.793715+00
(1 row)

スタンバイがリポジトリにアクセスできる設定になっていることを確認します。

pg-standby ⇒ 設定を確認する

sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check
P00   INFO: check command begin 2.59.3: --exec-id=654-6b53cbe6 --log-level-console=info --log-level-file=detail --no-log-timestamp --pg1-path=/var/lib/postgresql/17/demo --repo1-host=repository --stanza=demo
P00   INFO: check repo1 (standby)
P00   INFO: switch wal not performed because this is a standby
P00   INFO: check command end: completed successfully

ストリーミングレプリケーション

ストリーミングレプリケーションは、WALアーカイブだけに頼らず、プライマリーに直接接続して、プライマリーで変更が行われるとすぐに適用します。そのため、プライマリーとスタンバイの間の遅延が大幅に減ります。

ストリーミングレプリケーションには、レプリケーション権限を持つユーザーが必要です。

pg-primary ⇒ レプリケーション用ユーザーを作成する

sudo -u postgres psql -c " \
       create user replicator password 'jw8s0F4' replication";
CREATE ROLE

スタンバイがレプリケーション用ユーザーとして接続できるよう、pg_hba.confを更新する必要があります。以下のIPアドレスは、必ずpg-standbyの実際のIPアドレスに置き換えてください。pg_hba.confの変更後は再読み込みが必要です。

pg-primary ⇒ レプリケーション用ユーザーのエントリをpg_hba.confに作成する

sudo -u postgres sh -c 'echo \
       "host    replication     replicator      172.17.0.8/32           md5" \
       >> /etc/postgresql/17/demo/pg_hba.conf'
sudo pg_ctlcluster 17 demo reload

スタンバイにはプライマリーへの接続方法を知らせる必要があるため、pgBackRestでprimary_conninfoを設定します。

pg-standby:/etc/pgbackrest/pgbackrest.conf ⇒ primary_conninfoを設定する

[demo]

pg1-path=/var/lib/postgresql/17/demo

recovery-option=primary_conninfo=host=172.17.0.6 port=5432 user=replicator



[global]

log-level-file=detail

repo1-host=repository

primary_conninfoにパスワードを設定することもできますが、.pgpassファイルのほうが柔軟かつ安全です。

pg-standby ⇒ .pgpassファイルにレプリケーションのパスワードを設定する。

sudo -u postgres sh -c 'echo \
       "172.17.0.6:*:replication:replicator:jw8s0F4" \
       >> /var/lib/postgresql/.pgpass'
sudo -u postgres chmod 600 /var/lib/postgresql/.pgpass

これでrestoreコマンドを使ってスタンバイを作成できます。

pg-standby ⇒ PostgreSQLを停止し、デモのスタンバイクラスターをリストアする

sudo pg_ctlcluster 17 demo stop
sudo -u postgres pgbackrest --stanza=demo --delta --type=standby restore
sudo -u postgres cat /var/lib/postgresql/17/demo/postgresql.auto.conf
# Do not edit this file manually!
# It will be overwritten by the ALTER SYSTEM command.

# Recovery settings generated by pgBackRest restore on 2026-10-02 19:06:30
restore_command = 'pgbackrest --stanza=demo archive-get %f "%p"'

# Recovery settings generated by pgBackRest restore on 2026-10-02 19:06:56
restore_command = 'pgbackrest --stanza=demo archive-get %f "%p"'

# Recovery settings generated by pgBackRest restore on 2026-10-02 19:07:16
restore_command = 'pgbackrest --stanza=demo archive-get %f "%p"'
# Removed by pgBackRest restore on 2026-10-02 19:08:10 # recovery_target_time = '2026-10-02 19:07:12.060959+00'
# Removed by pgBackRest restore on 2026-10-02 19:08:10 # recovery_target_action = 'promote'

# Recovery settings generated by pgBackRest restore on 2026-10-02 19:08:10
restore_command = 'pgbackrest --repo=3 --repo-target-time="2026-10-02 19:07:57+00" --stanza=demo archive-get %f "%p"'

# Recovery settings generated by pgBackRest restore on 2026-10-02 19:08:37
restore_command = 'pgbackrest --stanza=demo archive-get %f "%p"'

# Recovery settings generated by pgBackRest restore on 2026-10-02 19:09:25
primary_conninfo = 'host=172.17.0.6 port=5432 user=replicator'
restore_command = 'pgbackrest --stanza=demo archive-get %f "%p"'

注:

primary_conninfoは、pgbackrest.confでrecovery-optionとして設定したため、postgresql.auto.confファイルに書き込まれています。既存のpostgresql.auto.confファイルをそのまま残したい場合は、restoreに--type=preserveオプションを指定できます。

pg-standby ⇒ PostgreSQLを起動する

sudo pg_ctlcluster 17 demo start

PostgreSQLのログで、ストリーミングレプリケーションが開始したことを確認できます。

pg-standby ⇒ PostgreSQLのログ出力で、成功を示すメッセージを確認する

sudo -u postgres cat /var/log/postgresql/postgresql-17-demo.log
       [filtered 13 lines of output]
LOG:  consistent recovery state reached at 0/25000050
LOG:  database system is ready to accept read-only connections
LOG:  started streaming WAL from primary at 0/27000000 on timeline 7

これでpg-primaryにテーブルを作成すると、pg_switch_wal()を呼び出さなくても、pg-standbyにすぐ現れます。

pg-primary ⇒ プライマリーに新しいテーブルを作成する

sudo -u postgres psql -c " \
       begin; \
       create table stream_table (message text); \
       insert into stream_table values ('Important Data'); \
       commit; \
       select *, current_timestamp from stream_table";
       [filtered 4 lines of output]
    message     |       current_timestamp
----------------+-------------------------------
 Important Data | 2026-10-02 19:09:32.302145+00
(1 row)

pg-standby ⇒ スタンバイでテーブルにクエリーを実行する

sudo -u postgres psql -c " \
       select *, current_timestamp from stream_table"
    message     |       current_timestamp
----------------+-------------------------------
 Important Data | 2026-10-02 19:09:32.491307+00
(1 row)

複数のstanza

pgBackRestは複数のstanzaをサポートします。最も一般的な用途は、複数のstanzaでリポジトリホストを共有することです。

インストール

新しいプライマリーを実行するため、pg-altという新しいホストを作成します。

pgBackRestはソースからビルドするより、パッケージからインストールすることをお勧めします。パッケージからインストールする場合、このセクションの残りの手順は通常不要ですが、パッケージが一部のディレクトリを作成しなかったり、誤った権限を設定したりする可能性があります。その場合は、手動でディレクトリを作成したり権限を更新したりする必要がある場合があります。

pgBackRestのDebian/Ubuntuパッケージはapt.postgresql.org から入手できます。

使用するディストリビューションやバージョン向けのパッケージがない場合は、ソースからビルド し、ここに示す手順で手動インストールできます。

pg-alt ⇒ 依存パッケージをインストールする

sudo apt-get install postgresql-client libxml2 libssh2-1

pg-alt ⇒ ビルド用ホストからpgBackRestバイナリをコピーする

sudo scp build:/build/pgbackrest/src/pgbackrest /usr/bin
sudo chmod 755 /usr/bin/pgbackrest

pgBackRestには、ログディレクトリ、設定ディレクトリ、設定ファイルが必要です。

pg-alt ⇒ pgBackRestの設定ファイルとディレクトリを作成する

sudo mkdir -p -m 770 /var/log/pgbackrest
sudo chown postgres:postgres /var/log/pgbackrest
sudo mkdir -p /etc/pgbackrest
sudo mkdir -p /etc/pgbackrest/conf.d
sudo touch /etc/pgbackrest/pgbackrest.conf
sudo chmod 640 /etc/pgbackrest/pgbackrest.conf
sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf

パスワードなしのSSHの設定

pgBackRestは、パスワードなしのSSHを使用してホスト間で通信できます。TLSも使用できます。TLSの設定 を参照してください。

pg-alt ⇒ pg-altホストのキーペアを作成する

sudo -u postgres mkdir -m 750 -p /var/lib/postgresql/.ssh
sudo -u postgres ssh-keygen -f /var/lib/postgresql/.ssh/id_rsa \
       -t rsa -b 4096 -N ""

repositoryとpg-altの間で鍵を交換します。

repository ⇒ pg-altの公開鍵をrepositoryにコピーする

(echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' && \
       echo -n 'command="/usr/bin/pgbackrest ${SSH_ORIGINAL_COMMAND#* }" ' && \
       sudo ssh root@pg-alt cat /var/lib/postgresql/.ssh/id_rsa.pub) | \
       sudo -u pgbackrest tee -a /home/pgbackrest/.ssh/authorized_keys

pg-alt ⇒ repositoryの公開鍵をpg-altにコピーする

(echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' && \
       echo -n 'command="/usr/bin/pgbackrest ${SSH_ORIGINAL_COMMAND#* }" ' && \
       sudo ssh root@repository cat /home/pgbackrest/.ssh/id_rsa.pub) | \
       sudo -u postgres tee -a /var/lib/postgresql/.ssh/authorized_keys

repositoryからpg-alt、およびその逆方向に接続できることをテストします。

repository ⇒ repositoryからpg-altへの接続をテストする

sudo -u pgbackrest ssh postgres@pg-alt

pg-alt ⇒ pg-altからrepositoryへの接続をテストする

sudo -u postgres ssh pgbackrest@repository

設定

pgBackRestの設定はpg-primaryとほぼ同じですが、demo-altstanzaを使うため、バックアップとアーカイブは別の場所に保存されます。

pg-alt:/etc/pgbackrest/pgbackrest.conf ⇒ 新しいプライマリーのpgBackRestを設定する

[demo-alt]

pg1-path=/var/lib/postgresql/17/demo



[global]

log-level-file=detail

repo1-host=repository

repository:/etc/pgbackrest/pgbackrest.conf ⇒ pg1-host/pg1-host-userとpg1-pathを設定する

[demo]

pg1-host=pg-primary

pg1-path=/var/lib/postgresql/17/demo



[demo-alt]

pg1-host=pg-alt

pg1-path=/var/lib/postgresql/17/demo



[global]

process-max=3

repo1-path=/var/lib/pgbackrest

repo1-retention-full=2

start-fast=y

デモクラスターのセットアップ

pg-alt ⇒ デモクラスターを作成する

sudo -u postgres /usr/lib/postgresql/17/bin/initdb \
       -D /var/lib/postgresql/17/demo -k -A peer
sudo pg_createcluster 17 demo
Configuring already existing cluster (configuration: /etc/postgresql/17/demo, data: /var/lib/postgresql/17/demo, owner: 102:103)
Ver Cluster Port Status Owner    Data directory              Log file
17  demo    5432 down   postgres /var/lib/postgresql/17/demo /var/log/postgresql/postgresql-17-demo.log

pg-alt:/etc/postgresql/17/demo/postgresql.conf ⇒ PostgreSQLを設定する

archive_command = 'pgbackrest --stanza=demo-alt archive-push %p'

archive_mode = on

pg-alt ⇒ デモクラスターを起動する

sudo pg_ctlcluster 17 demo restart

stanzaの作成と設定の確認

stanzaを初期化するには、stanza-createコマンドを実行する必要があります。アーカイブとバックアップが正しく設定されていることを確認するため、stanza-createの後にcheckコマンドを実行することをお勧めします。

pg-alt ⇒ stanzaを作成して設定を確認する

sudo -u postgres pgbackrest --stanza=demo-alt --log-level-console=info stanza-create
P00   INFO: stanza-create command begin 2.59.3: --exec-id=386-f644abb9 --log-level-console=info --log-level-file=detail --no-log-timestamp --pg1-path=/var/lib/postgresql/17/demo --repo1-host=repository --stanza=demo-alt
P00   INFO: stanza-create for stanza 'demo-alt' on repo1
P00   INFO: stanza-create command end: completed successfully
sudo -u postgres pgbackrest --log-level-console=info check
P00   INFO: check command begin 2.59.3: --exec-id=396-8c7be3ca --log-level-console=info --log-level-file=detail --no-log-timestamp --repo1-host=repository
P00   INFO: check stanza 'demo-alt'
P00   INFO: check repo1 configuration (primary)
P00   INFO: check repo1 archive for WAL (primary)
P00   INFO: WAL segment 000000010000000000000001 successfully archived to '/var/lib/pgbackrest/archive/demo-alt/17-1/0000000100000000/000000010000000000000001-ef9bc7e061e42fae1596a4f23d34fdb78ee324d0.gz' on repo1
P00   INFO: check command end: completed successfully

リポジトリホストでcheckコマンドを実行すると、すべてのstanzaが確認されます。

repository ⇒ すべてのstanzaの設定を確認する

sudo -u pgbackrest pgbackrest --log-level-console=info check
P00   INFO: check command begin 2.59.3: --exec-id=1284-38748c52 --log-level-console=info --no-log-timestamp --repo1-path=/var/lib/pgbackrest
P00   INFO: check stanza 'demo'
P00   INFO: check repo1 configuration (primary)
P00   INFO: check repo1 archive for WAL (primary)
P00   INFO: WAL segment 000000070000000000000027 successfully archived to '/var/lib/pgbackrest/archive/demo/17-1/0000000700000000/000000070000000000000027-f89bb62652ecba95477379768079564b0243a0d3.gz' on repo1
P00   INFO: check stanza 'demo-alt'
P00   INFO: check repo1 configuration (primary)
P00   INFO: check repo1 archive for WAL (primary)
P00   INFO: WAL segment 000000010000000000000002 successfully archived to '/var/lib/pgbackrest/archive/demo-alt/17-1/0000000100000000/000000010000000000000002-de2b6314bf64b956ede5fad9e01f3d5f0200faff.gz' on repo1
P00   INFO: check command end: completed successfully

非同期アーカイブ

非同期アーカイブはarchive-asyncオプションで有効にします。このオプションにより、archive-pushとarchive-getの両コマンドが非同期に動作します。

スプールパスが必要です。各コマンドはここに一時的なデータを保存しますが、動作が大きく異なるため、スプールパスの使用方法は各セクションで詳しく説明します。

pg-primary ⇒ スプールディレクトリを作成する

sudo mkdir -p -m 750 /var/spool/pgbackrest
sudo chown postgres:postgres /var/spool/pgbackrest

pg-standby ⇒ スプールディレクトリを作成する

sudo mkdir -p -m 750 /var/spool/pgbackrest
sudo chown postgres:postgres /var/spool/pgbackrest

スプールパスを設定し、非同期アーカイブを有効にする必要があります。非同期アーカイブだけでもリモートストレージへの接続回数が減る利点がありますが、process-maxを設定して処理を並列化すると、性能が大幅に向上します。通常のデータベース操作に影響が出るほどprocess-maxを大きくしないようにしてください。

pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ スプールパスと非同期アーカイブを設定する

[demo]

pg1-path=/var/lib/postgresql/17/demo



[global]

archive-async=y

log-level-file=detail

repo1-host=repository

spool-path=/var/spool/pgbackrest



[global:archive-get]

process-max=2



[global:archive-push]

process-max=2

pg-standby:/etc/pgbackrest/pgbackrest.conf ⇒ スプールパスと非同期アーカイブを設定する

[demo]

pg1-path=/var/lib/postgresql/17/demo

recovery-option=primary_conninfo=host=172.17.0.6 port=5432 user=replicator



[global]

archive-async=y

log-level-file=detail

repo1-host=repository

spool-path=/var/spool/pgbackrest



[global:archive-get]

process-max=2



[global:archive-push]

process-max=2

注:

process-maxは、バックアップとリストアでこの設定を使わないよう、コマンド別のセクションで設定します。これにより、archive-pushとarchive-getに異なる値を設定することもできます。

デモのためにストリーミングレプリケーションを切断し、PostgreSQLがrestore_commandを使ってWALを取得するようにします。

pg-primary ⇒ レプリケーションのパスワードを変更してストリーミングレプリケーションを切断する

sudo -u postgres psql -c "alter user replicator password 'bogus'"
ALTER ROLE

pg-standby ⇒ スタンバイを再起動して接続を切断する

sudo pg_ctlcluster 17 demo restart

アーカイブへの送信

非同期のarchive-pushコマンドは、WALのアーカイブ処理を別のプロセス(または複数のプロセス)に任せてスループットを向上させます。PostgreSQLが現在archive_commandで要求しているセグメントの先を調べ、アーカイブ可能なWALセグメントを確認して処理します。WALセグメントはpg_xlog/pg_walディレクトリから直接アーカイブに転送され、archive_commandが成功を返すのは、WALセグメントがアーカイブに安全に保存された後だけです。

スプールパスには、WALアーカイブの現在の状態を保存します。スプールディレクトリに書き込まれる状態ファイルは通常長さゼロで、使用する容量はごくわずか(最大でも数MB)、I/Oも非常に少ないはずです。このディレクトリの情報はすべて再作成できるため、クラスターを新しいハードウェアに移動する場合も、スプールディレクトリを保持する必要はありません。

重要:

非同期アーカイブの当初の実装では、圧縮と転送の前にWALセグメントをスプールディレクトリにコピーしていました。新しい実装では、pg_xlogディレクトリからWALを直接コピーします。v1.12以前で非同期アーカイブを利用していた場合は、アップグレード前にv1.13のリリースノートをよく読んでください。

[stanza]-archive-push-async.logファイルで、非同期プロセスの動作を監視できます。短時間に複数のWALセグメントを送信すると、動作のテストに適しています。

pg-primary ⇒ 並列の非同期アーカイブをテストする

sudo -u postgres psql -c " \
       select pg_create_restore_point('test async push'); select pg_switch_wal(); \
       select pg_create_restore_point('test async push'); select pg_switch_wal(); \
       select pg_create_restore_point('test async push'); select pg_switch_wal(); \
       select pg_create_restore_point('test async push'); select pg_switch_wal(); \
       select pg_create_restore_point('test async push'); select pg_switch_wal();"
sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check
P00   INFO: check command begin 2.59.3: --exec-id=2590-c51c0441 --log-level-console=info --log-level-file=detail --no-log-timestamp --pg1-path=/var/lib/postgresql/17/demo --repo1-host=repository --stanza=demo
P00   INFO: check repo1 configuration (primary)
P00   INFO: check repo1 archive for WAL (primary)
P00   INFO: WAL segment 00000007000000000000002D successfully archived to '/var/lib/pgbackrest/archive/demo/17-1/0000000700000000/00000007000000000000002D-1ed494e7471557cb0563baa2af44d9e1252e424f.gz' on repo1
P00   INFO: check command end: completed successfully

これでログファイルに並列かつ非同期の処理が記録されます。

pg-primary ⇒ ログで結果を確認する

sudo -u postgres cat /var/log/pgbackrest/demo-archive-push-async.log
-------------------PROCESS START-------------------
P00   INFO: archive-push:async command begin 2.59.3: [/var/lib/postgresql/17/demo/pg_wal] --archive-async --exec-id=2576-267f2388 --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/17/demo --process-max=2 --repo1-host=repository --spool-path=/var/spool/pgbackrest --stanza=demo
P00   INFO: push 1 WAL file(s) to archive: 000000070000000000000028
P01 DETAIL: pushed WAL file '000000070000000000000028' to the archive
P00   INFO: archive-push:async command end: completed successfully

-------------------PROCESS START-------------------
P00   INFO: archive-push:async command begin 2.59.3: [/var/lib/postgresql/17/demo/pg_wal] --archive-async --exec-id=2594-5115f5d8 --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/17/demo --process-max=2 --repo1-host=repository --spool-path=/var/spool/pgbackrest --stanza=demo
P00   INFO: push 5 WAL file(s) to archive: 000000070000000000000029...00000007000000000000002D
P02 DETAIL: pushed WAL file '00000007000000000000002A' to the archive
P01 DETAIL: pushed WAL file '000000070000000000000029' to the archive
P02 DETAIL: pushed WAL file '00000007000000000000002B' to the archive
P01 DETAIL: pushed WAL file '00000007000000000000002C' to the archive
P02 DETAIL: pushed WAL file '00000007000000000000002D' to the archive
P00   INFO: archive-push:async command end: completed successfully

アーカイブからの取得

非同期のarchive-getコマンドは、WALのローカルキューを維持してスループットを向上させます。要求されたWALセグメントがキューにない場合は、キューを満たすだけの後続WALとともにリポジトリから取得します。キューの最大サイズはarchive-get-queue-maxで定義します。キューが半分未満になるたびに、追加のWALを取得して満たします。

非同期動作は、大量のWALを生成する環境や、リポジトリストレージ(S3などのオブジェクトストア)との接続のレイテンシーが高い環境で特に有用です。レイテンシーが高い場合は、process-maxを増やすとよい場合があります。

[stanza]-archive-get-async.logファイルで、非同期プロセスの動作を監視できます。

pg-standby ⇒ ログで結果を確認する

sudo -u postgres cat /var/log/pgbackrest/demo-archive-get-async.log
-------------------PROCESS START-------------------
P00   INFO: archive-get:async command begin 2.59.3: [000000070000000000000024, 000000070000000000000025, 000000070000000000000026, 000000070000000000000027, 000000070000000000000028, 000000070000000000000029, 00000007000000000000002A, 00000007000000000000002B] --archive-async --exec-id=871-5afe1731 --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/17/demo --process-max=2 --repo1-host=repository --spool-path=/var/spool/pgbackrest --stanza=demo
P00   INFO: get 8 WAL file(s) from archive: 000000070000000000000024...00000007000000000000002B
P02 DETAIL: found 000000070000000000000025 in the repo1: 17-1 archive
P01 DETAIL: found 000000070000000000000024 in the repo1: 17-1 archive
P02 DETAIL: found 000000070000000000000026 in the repo1: 17-1 archive
P01 DETAIL: found 000000070000000000000027 in the repo1: 17-1 archive
P00 DETAIL: unable to find 000000070000000000000028 in the archive
P00   INFO: archive-get:async command end: completed successfully
       [filtered 14 lines of output]
P00   INFO: archive-get:async command begin 2.59.3: [000000070000000000000028, 000000070000000000000029, 00000007000000000000002A, 00000007000000000000002B, 00000007000000000000002C, 00000007000000000000002D, 00000007000000000000002E, 00000007000000000000002F] --archive-async --exec-id=924-87ccaa43 --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/17/demo --process-max=2 --repo1-host=repository --spool-path=/var/spool/pgbackrest --stanza=demo
P00   INFO: get 8 WAL file(s) from archive: 000000070000000000000028...00000007000000000000002F
P02 DETAIL: found 000000070000000000000029 in the repo1: 17-1 archive
P01 DETAIL: found 000000070000000000000028 in the repo1: 17-1 archive
P02 DETAIL: found 00000007000000000000002A in the repo1: 17-1 archive
P01 DETAIL: found 00000007000000000000002B in the repo1: 17-1 archive
P02 DETAIL: found 00000007000000000000002C in the repo1: 17-1 archive
P01 DETAIL: found 00000007000000000000002D in the repo1: 17-1 archive
P00 DETAIL: unable to find 00000007000000000000002E in the archive
P00   INFO: archive-get:async command end: completed successfully
       [filtered 15 lines of output]

pg-primary ⇒ レプリケーションのパスワードを変更してストリーミングレプリケーションを修復する

sudo -u postgres psql -c "alter user replicator password 'jw8s0F4'"
ALTER ROLE

スタンバイからのバックアップ

pgBackRestは、プライマリーの代わりにスタンバイでバックアップを実行できます。スタンバイからのバックアップには、pg-standbyホストの設定とbackup-standbyオプションの有効化が必要です。複数のスタンバイが設定されている場合は、最初に見つかった稼働中のスタンバイをバックアップに使用します。

repository:/etc/pgbackrest/pgbackrest.conf ⇒ pg2-host/pg2-host-userとpg2-pathを設定する

[demo]

pg1-host=pg-primary

pg1-path=/var/lib/postgresql/17/demo

pg2-host=pg-standby

pg2-path=/var/lib/postgresql/17/demo



[demo-alt]

pg1-host=pg-alt

pg1-path=/var/lib/postgresql/17/demo



[global]

backup-standby=y

process-max=3

repo1-path=/var/lib/pgbackrest

repo1-retention-full=2

start-fast=y

バックアップの実行には、プライマリーとスタンバイの両データベースが必要ですが、プライマリーの負荷を減らすため、ファイルの大半はスタンバイからコピーします。データベースホストの設定順序は任意です。pgBackRestがプライマリーとスタンバイを自動判別します。

repository ⇒ pg2からデモクラスターをバックアップする

sudo -u pgbackrest pgbackrest --stanza=demo --log-level-console=detail backup
       [filtered 2 lines of output]
P00   INFO: execute backup start: backup begins after the requested immediate checkpoint completes
P00   INFO: backup start archive = 00000007000000000000002F, lsn = 0/2F000028
P00   INFO: wait for replay on the standby to reach 0/2F000028
P00   INFO: replay on the standby reached 0/2F000028
P00   INFO: check archive for prior segment 00000007000000000000002E
P03 DETAIL: backup file pg-standby:/var/lib/postgresql/17/demo/base/5/2658 (128KB, 8.47%) checksum 6bcdcabc7aaf3e4919655612f77833a1612baf01
P01 DETAIL: backup file pg-primary:/var/lib/postgresql/17/demo/global/pg_control (8KB, 8.99%) checksum aa003dff0afea4b06a88d00138da8e948a563345
P04 DETAIL: backup file pg-standby:/var/lib/postgresql/17/demo/base/5/1247 (120KB, 16.93%) checksum fa2fb6657bf9785e320a8a5516851de78d7a7a33
P01 DETAIL: match file from prior backup pg-primary:/var/lib/postgresql/17/demo/pg_logical/replorigin_checkpoint (8B, 16.93%) checksum 347fc8f2df71bd4436e38bd1516ccd7ea0d46532
       [filtered 1277 lines of output]

この増分バックアップでは、大半のファイルをpg-standbyホストからコピーし、pg-primaryホストからは少数のファイルだけをコピーしていることが分かります。

pgBackRestがスタンバイから作成するバックアップは、プライマリーで実行したバックアップと同一です。そのために、pg-primaryホストでバックアップを開始・停止し、レプリケーションされるファイルだけをpg-standbyホストからコピーして、残りの少数のファイルをpg-primaryホストからコピーします。したがって、プライマリーデータベースのログと統計情報もバックアップに含まれます。


PostgreSQLのアップグレード

PostgreSQLを新しいメジャーバージョンにアップグレードしたら、直ちにすべてのpgBackRest設定のpg-pathを新しいデータベースの場所に変更し、stanza-upgradeコマンドを実行する必要があります。ホストに複数のリポジトリが設定されている場合は、それぞれでstanzaをアップグレードします。データベースがオフラインの場合は、--no-onlineオプションを使用してください。

以下はPostgreSQLのアップグレードを網羅した手順ではありません。pgBackRestの再設定に必要な手順を示すため、プライマリーとスタンバイのアップグレードの大まかな流れを説明します。アップグレード前にバックアップを取ることをお勧めします。

pg-primary ⇒ 古いクラスターを停止する

sudo pg_ctlcluster 17 demo stop

スタンバイはアップグレードした新しいクラスターからリストアするため、スタンバイの古いクラスターも停止します。

pg-standby ⇒ 古いクラスターを停止する

sudo pg_ctlcluster 17 demo stop

新しいクラスターを作成してアップグレードします。

pg-primary ⇒ 新しいクラスターを作成してアップグレードする

sudo -u postgres /usr/lib/postgresql/18/bin/initdb \
       -D /var/lib/postgresql/18/demo -k -A peer
sudo pg_createcluster 18 demo
sudo -u postgres sh -c 'cd /var/lib/postgresql && \
       /usr/lib/postgresql/18/bin/pg_upgrade \
       --old-bindir=/usr/lib/postgresql/17/bin \
       --new-bindir=/usr/lib/postgresql/18/bin \
       --old-datadir=/var/lib/postgresql/17/demo \
       --new-datadir=/var/lib/postgresql/18/demo \
       --old-options=" -c config_file=/etc/postgresql/17/demo/postgresql.conf" \
       --new-options=" -c config_file=/etc/postgresql/18/demo/postgresql.conf"'
       [filtered 44 lines of output]
Checking for extension updates                                ok
Upgrade Complete
----------------
Some statistics are not transferred by pg_upgrade.
       [filtered 4 lines of output]

新しいクラスターの設定とポートを設定します。

pg-primary:/etc/postgresql/18/demo/postgresql.conf ⇒ PostgreSQLを設定する

archive_command = 'pgbackrest --stanza=demo archive-push %p'

archive_mode = on

すべてのシステムでpgBackRestの設定を更新し、新しいクラスターを参照させます。

pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ pg1-pathを更新する

[demo]

pg1-path=/var/lib/postgresql/18/demo



[global]

archive-async=y

log-level-file=detail

repo1-host=repository

spool-path=/var/spool/pgbackrest



[global:archive-get]

process-max=2



[global:archive-push]

process-max=2

pg-standby:/etc/pgbackrest/pgbackrest.conf ⇒ pg-pathを更新する

[demo]

pg1-path=/var/lib/postgresql/18/demo

recovery-option=primary_conninfo=host=172.17.0.6 port=5432 user=replicator



[global]

archive-async=y

log-level-file=detail

repo1-host=repository

spool-path=/var/spool/pgbackrest



[global:archive-get]

process-max=2



[global:archive-push]

process-max=2

repository:/etc/pgbackrest/pgbackrest.conf ⇒ pg1-pathとpg2-pathを更新し、スタンバイからのバックアップを無効にする

[demo]

pg1-host=pg-primary

pg1-path=/var/lib/postgresql/18/demo

pg2-host=pg-standby

pg2-path=/var/lib/postgresql/18/demo



[demo-alt]

pg1-host=pg-alt

pg1-path=/var/lib/postgresql/17/demo



[global]

backup-standby=n

process-max=3

repo1-path=/var/lib/pgbackrest

repo1-retention-full=2

start-fast=y

pg-primary ⇒ hba設定をコピーする

sudo cp /etc/postgresql/17/demo/pg_hba.conf \
       /etc/postgresql/18/demo/pg_hba.conf

新しいクラスターを起動する前に、stanza-upgradeコマンドを実行する必要があります。

pg-primary ⇒ stanzaをアップグレードする

sudo -u postgres pgbackrest --stanza=demo --no-online \
       --log-level-console=info stanza-upgrade
P00   INFO: stanza-upgrade command begin 2.59.3: --exec-id=3025-70610f0d --log-level-console=info --log-level-file=detail --no-log-timestamp --no-online --pg1-path=/var/lib/postgresql/18/demo --repo1-host=repository --stanza=demo
P00   INFO: stanza-upgrade for stanza 'demo' on repo1
P00   INFO: stanza-upgrade command end: completed successfully

新しいクラスターを起動し、正しくインストールされたことを確認します。

pg-primary ⇒ 新しいクラスターを起動する

sudo pg_ctlcluster 18 demo start

checkコマンドを使って設定をテストします。

pg-primary ⇒ 設定を確認する

sudo pg_lsclusters
sudo -u postgres pgbackrest --stanza=demo check

古いクラスターを削除します。

pg-primary ⇒ 古いクラスターを削除する

sudo pg_dropcluster 17 demo

スタンバイに新しいPostgreSQLバイナリをインストールし、クラスターを作成します。

pg-standby ⇒ 古いクラスターを削除し、新しいクラスターを作成する

sudo pg_dropcluster 17 demo
sudo pg_createcluster 18 demo

リポジトリホストでcheckを実行します。スタンバイクラスターは停止しているため、スタンバイが停止しているという警告は想定どおりです。このコマンドの実行により、リポジトリサーバーがスタンバイを認識し、プライマリーサーバーに対して正しく設定されていることを確認できます。

repository ⇒ 設定を確認する

sudo -u pgbackrest pgbackrest --stanza=demo check
P00   WARN: unable to check pg2: [DbConnectError] raised from remote-0 ssh protocol on 'pg-standby': unable to connect to 'dbname='postgres' port=5432': connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: No such file or directory
                Is the server running locally and accepting connections on that socket?

新しいクラスターでフルバックアップを実行し、そのバックアップからスタンバイをリストアします。incrまたはdiffを要求しても、バックアップの種類は自動でfullに変更されます。

repository ⇒ フルバックアップを実行する

sudo -u pgbackrest pgbackrest --stanza=demo --type=full backup

pg-standby ⇒ デモのスタンバイクラスターをリストアする

sudo -u postgres pgbackrest --stanza=demo --delta --type=standby restore

pg-standby ⇒ PostgreSQLを起動し、pgBackRestの設定を確認する

sudo pg_ctlcluster 18 demo start
sudo -u postgres pgbackrest --stanza=demo check

スタンバイのリストアが完了したので、スタンバイからのバックアップを有効にできます。

repository:/etc/pgbackrest/pgbackrest.conf ⇒ スタンバイからのバックアップを再び有効にする

[demo]

pg1-host=pg-primary

pg1-path=/var/lib/postgresql/18/demo

pg2-host=pg-standby

pg2-path=/var/lib/postgresql/18/demo



[demo-alt]

pg1-host=pg-alt

pg1-path=/var/lib/postgresql/17/demo



[global]

backup-standby=y

process-max=3

repo1-path=/var/lib/pgbackrest

repo1-retention-full=2

start-fast=y

3 - ユーザーガイド(RHEL)

RHEL、Rocky、AlmaLinux向けのpgBackRestの設定と使用方法を手順に沿って説明します。

はじめに

このユーザーガイドは、各セクションが前のセクションを前提としているため、最初から順に読むことを想定しています。たとえば、リストア のセクションは、クイックスタート で行う設定を前提としています。pgBackRestを起動して運用できるようになった後は必要な箇所を参照できますが、初回は順に読み進めることをお勧めします。

このガイドの例はRHELとPostgreSQL 14を対象としていますが、どのUnixディストリビューションやPostgreSQLバージョンにも比較的容易に応用できます。OS固有のコマンドは、PostgreSQLクラスターの作成、起動、停止、削除に使うものだけです。pgBackRestのコマンドはどのUnixシステムでも同じですが、実行ファイルの場所は異なる場合があります。pgBackRestはPostgreSQLの各バージョンで一貫した動作を目指していますが、PostgreSQLのパス名、ファイル名、設定など、バージョン間の微妙な違いがこのガイドの例に現れる場合があります。

PostgreSQLの設定情報とドキュメントは、PostgreSQLのマニュアル を参照してください。

このユーザーガイドでは、ドキュメントの作成に少し変わった方法を採用しています。XMLソースからドキュメントをビルドする際、各コマンドを仮想マシンで実行します。そのため、記載された順序でコマンドが正しく動作することを高い確度で期待できます。必要に応じて出力を取得し、コマンドの下に表示しています。出力を載せていないのは、説明に関係しないか、説明の妨げになると判断したためです。

すべてのコマンドは、rootとpostgresの両ユーザーに対するsudo権限を持つ一般ユーザーで実行することを想定しています。各コマンドは対応するユーザーで直接実行することもでき、その場合はsudoの部分を取り除くだけで、ほかの変更は不要です。


概念

ここでは、pgBackRest、PostgreSQL、およびこのユーザーガイドに関係する概念を定義します。

バックアップ

バックアップとは、データベースクラスターの整合性のあるコピーです。リストアすることで、ハードウェア障害からの復旧、ポイントインタイムリカバリー、新しいスタンバイの起動に利用できます。

フルバックアップ:pgBackRestはデータベースクラスターの内容全体をバックアップにコピーします。データベースクラスターの最初のバックアップは必ずフルバックアップになります。pgBackRestはフルバックアップを常に直接リストアできます。フルバックアップの整合性は、そのバックアップ外のファイルに依存しません。

差分バックアップ:pgBackRestは、最後のフルバックアップ以降に変更されたデータベースクラスターのファイルだけをコピーします。差分バックアップのリストアでは、選択した差分バックアップの全ファイルと、その前のフルバックアップに含まれる変更のない該当ファイルをコピーします。差分バックアップはフルバックアップより少ないディスク容量で済みますが、リストアするには差分バックアップとフルバックアップの両方が有効でなければなりません。

増分バックアップ:pgBackRestは、最後のバックアップ(増分、差分、フルのいずれか)以降に変更されたデータベースクラスターのファイルだけをコピーします。増分バックアップには直前のバックアップ以降に変更されたファイルしか含まれないため、通常はフルバックアップや差分バックアップより大幅に小さくなります。差分バックアップと同様、増分バックアップのリストアには、依存先のバックアップも有効である必要があります。増分バックアップには最後のバックアップ以降のファイルしか含まれないため、リストアするには、前の差分バックアップまでさかのぼるすべての増分バックアップ、その差分バックアップ、およびその前のフルバックアップがすべて有効でなければなりません。差分バックアップが存在しない場合は、必ず存在する前のフルバックアップまでのすべての増分バックアップと、そのフルバックアップ自体が有効でなければなりません。

リストア

リストアとは、稼働するデータベースクラスターとして起動するシステムに、バックアップをコピーする操作です。正しくリストアするには、バックアップファイルと1つ以上のWALセグメントが必要です。

先行書き込みログ(WAL)

WALは、コミット済みの変更が失われないことをPostgreSQLが保証するための仕組みです。トランザクションはWALに順次書き込まれ、その書き込みがディスクにフラッシュされるとコミットされたとみなされます。その後、バックグラウンドプロセスが変更をデータベースクラスターの本体ファイル(ヒープとも呼ばれます)に書き込みます。クラッシュ時にはWALを再生して、データベースの整合性を回復します。

WALは概念上は無限に続きますが、実際にはセグメントと呼ばれる16MBの個別ファイルに分割されます。WALセグメントの名前は0000000100000A1E000000FEという形式で、先頭の16進数8桁がタイムライン、続く16桁が論理シーケンス番号(LSN)を表します。

暗号化

暗号化とは、適切なパスワード(パスフレーズとも呼ばれます)を指定しない限り認識できない形式にデータを変換する処理です。

pgBackRestはユーザーが指定したパスワードに基づいてリポジトリを暗号化し、リポジトリ内のデータへの不正アクセスを防ぎます。


pgBackRestのアップグレード

pgBackRestをv2.xからv2.yにアップグレードする

v2.xからv2.yへのアップグレードは簡単です。リポジトリ形式は変わっていないため、ほとんどの環境では新しいバージョンのバイナリをインストールするだけで済みます。古いバージョンでサポートされていない新機能を使用していなければ、ダウングレードも可能です。

重要:

ローカルとリモートのpgBackRestのバージョンは完全に一致する必要があるため、同時にアップグレードすることをお勧めします。一致しない場合、バージョンが揃うまでWALアーカイブとバックアップは動作しません。その場合、次のエラーが報告されます:[ProtocolError] expected value '2.x' for greeting key 'version' but got '2.y'。


ビルド

pgBackRestはソースからビルドするより、パッケージからインストールすることをお勧めします。パッケージの詳細はインストール を参照してください。

ソースからビルドする場合は、本番環境ではなくビルド用ホストを使うことをお勧めします。ビルドに必要なツールの多くは、通常、本番環境にはインストールしないほうがよいものです。pgBackRestは単一の実行ファイルで構成されるため、ビルド後は簡単に別のホストにコピーできます。

build ⇒ pgBackRestのバージョン2.59.3を/buildパスにダウンロードする

mkdir -p /build
curl -fsSL \
       https://github.com/pgbackrest/pgbackrest/releases/download/release%2F2.59.3/pgbackrest-2.59.3.tar.gz | \
       tar zx -C /build

build ⇒ ビルドの依存パッケージをインストールする

sudo yum install meson gcc postgresql14-devel openssl-devel libxml2-devel \
       lz4-devel libzstd-devel bzip2-devel libssh2-devel systemd-devel

build ⇒ pgBackRestのビルドを設定してコンパイルする

meson setup /build/pgbackrest /build/pgbackrest-2.59.3
ninja -C /build/pgbackrest

build ⇒ 必要に応じてスモークテストを実行し、pgBackRestが正しくビルドされたことを確認する

meson test -C /build/pgbackrest --suite smoke
ninja: Entering directory `/build/pgbackrest'
ninja: no work to do.
1/1 smoke OK               10.32s

Ok:                 1
       [filtered 6 lines of output]

インストール

デモクラスターを配置してpgBackRestの例を実行するために、pg-primaryという新しいホストを作成します。

pgBackRestはソースからビルドするより、パッケージからインストールすることをお勧めします。パッケージからインストールする場合、このセクションの残りの手順は通常不要ですが、パッケージが一部のディレクトリを作成しなかったり、誤った権限を設定したりする可能性があります。その場合は、手動でディレクトリを作成したり権限を更新したりする必要がある場合があります。

pgBackRestのRHELパッケージはyum.postgresql.org から入手できます。

使用するディストリビューションやバージョン向けのパッケージがない場合は、ソースからビルド し、ここに示す手順で手動インストールできます。

pg-primary ⇒ 依存パッケージをインストールする

sudo yum install postgresql-libs libssh2

pg-primary ⇒ ビルド用ホストからpgBackRestバイナリをコピーする

sudo scp build:/build/pgbackrest/src/pgbackrest /usr/bin
sudo chmod 755 /usr/bin/pgbackrest

pgBackRestには、ログディレクトリ、設定ディレクトリ、設定ファイルが必要です。

pg-primary ⇒ pgBackRestの設定ファイルとディレクトリを作成する

sudo mkdir -p -m 770 /var/log/pgbackrest
sudo chown postgres:postgres /var/log/pgbackrest
sudo mkdir -p /etc/pgbackrest
sudo mkdir -p /etc/pgbackrest/conf.d
sudo touch /etc/pgbackrest/pgbackrest.conf
sudo chmod 640 /etc/pgbackrest/pgbackrest.conf
sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf

これでpgBackRestは正しくインストールされているはずですが、確認することをお勧めします。依存パッケージに不足があると、コマンドラインからpgBackRestを実行した際にエラーが発生します。

pg-primary ⇒ インストールが成功したことを確認する

sudo -u postgres pgbackrest
pgBackRest 2.59.3 - General help

Usage:
    pgbackrest [options] [command]

Commands:
    annotate        add or modify backup annotation
    archive-get     get a WAL segment from the archive
    archive-push    push a WAL segment to the archive
    backup          backup a database cluster
    check           check the configuration
    expire          expire backups that exceed retention
    help            get help
    info            retrieve information about backups
    repo-get        get a file from a repository
    repo-ls         list files in a repository
    restore         restore a database cluster
    server          pgBackRest server
    server-ping     ping pgBackRest server
    stanza-create   create the required stanza data
    stanza-delete   delete a stanza
    stanza-upgrade  upgrade a stanza
    start           allow pgBackRest processes to run
    stop            stop pgBackRest processes from running
    verify          verify contents of a repository
    version         get version

Use 'pgbackrest help [command]' for more information.

クイックスタート

クイックスタートでは、pgBackRestとPostgreSQLの基本設定を行い、backup、restore、infoコマンドを紹介します。

デモクラスターのセットアップ

デモクラスターの作成は任意ですが、このユーザーガイドのコマンド例がデモクラスターを参照するため、特に初めて使用する場合は作成を強くお勧めします。例では、デモクラスターがデフォルトのポート(5432)で稼働していることを前提としています。まだ設定が必要なため、クラスターの起動は後のセクションで行います。

pg-primary ⇒ デモクラスターを作成する

sudo -u postgres /usr/pgsql-14/bin/initdb \
       -D /var/lib/pgsql/14/data -k -A peer

RHELではデフォルトでログファイル名に曜日を含めます。これではユーザーガイドの説明が少し複雑になるため、log_filenameを固定値に設定します。

pg-primary:/var/lib/pgsql/14/data/postgresql.conf ⇒ log_filenameを設定する

log_filename = 'postgresql.log'

クラスターのstanzaの設定

stanzaは、PostgreSQLデータベースクラスターの場所、バックアップ方法、アーカイブオプションなどを定義する設定です。ほとんどのデータベースサーバーにはPostgreSQLデータベースクラスターが1つしかないためstanzaも1つですが、バックアップサーバーにはバックアップ対象のデータベースクラスターごとにstanzaがあります。

stanzaにプライマリークラスターの名前を付けたくなるかもしれませんが、クラスターに含まれるデータベースを表す名前のほうが適切です。stanza名はプライマリーとすべてのレプリカで使うため、mainやprodのようなローカルクラスター名ではなく、appやdwのようにクラスターの実際の用途を表す名前を選ぶのが適切です。

「demo」はこのクラスターの目的を正確に表しているため、stanza名にも適しています。

pgBackRestは、PostgreSQLクラスターの基本データディレクトリの場所を知る必要があります。このパスはPostgreSQLに直接問い合わせることもできますが、リカバリー時にはPostgreSQLプロセスを利用できません。バックアップ時には、pgBackRestに指定された値をPostgreSQLが稼働しているパスと比較し、一致しなければエラーになります。pg-pathがPostgreSQLの報告するdata_directoryと完全に一致していることを確認してください。

RHELではデフォルトでクラスターを/var/lib/pgsql/[version]/dataに保存するため、正しいデータディレクトリのパスを容易に判断できます。

/etc/pgbackrest/pgbackrest.confファイルを作成する際は、データベース所有者(通常はpostgres)に読み取り権限を付与する必要があります。

pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ PostgreSQLクラスターのデータディレクトリを設定する

[demo]

pg1-path=/var/lib/pgsql/14/data

pgBackRestの設定ファイルはWindowsのINIファイルに似た形式を使用します。セクションは角括弧で囲んだテキストで表し、各セクションにキーと値のペアを記述します。#で始まる行は無視されるためコメントに使用できますが、値と同じ行の末尾にコメントを付けることはできません。引用符による囲みはサポートされず、キーと値の前後の空白は除去されます。同じセクションが複数回現れた場合は統合されます。

pgBackRestの設定ファイルは、次のいずれかの方法で読み込めます。

  • configとconfig-include-pathがデフォルトの場合:デフォルトの設定ファイルが存在すれば読み込み、デフォルトの設定インクルードパスに*.confファイルが存在すれば追加します。
  • configオプションが指定されている場合:指定された設定ファイルだけを読み込みます。このファイルは存在する必要があります。
  • config-include-pathが指定されている場合:設定インクルードパスの*.confファイルを読み込みます。このパスは存在する必要があります。デフォルトの設定ファイルも、存在すれば読み込みます。指定した設定インクルードパスのファイルだけを読み込むには、--no-configオプションも指定します。
  • configとconfig-include-pathが指定されている場合:ユーザー指定の値を使って設定ファイルを読み込み、設定インクルードパスの*.confファイルを追加します。これらのファイルは存在する必要があります。
  • config-pathが指定されている場合:この設定は、設定ファイルのデフォルト配置先のベースパスと、デフォルトのconfig-include-path設定のベースパスの一方または両方を上書きします。ただし、configまたはconfig-include-pathオプションを明示的に設定した場合は、その設定が優先されます。

ファイルは1つの大きなファイルとして連結されますが、各ファイルは単独でも有効でなければなりません。つまり、キーと値を格納するセクションは、必要となる各ファイルで指定する必要があります。順序は関係ありませんが、セクションによる優先順位があります。優先順位は高い順に次のとおりです。

  • [stanza:command]
  • [stanza]
  • [global:command]
  • [global]

注:

--config、--config-include-path、--config-pathはコマンドライン専用のオプションです。

pgBackRestは環境変数でも設定できます(下の例を参照)。これらの変数はbackup 、restore 、archive-push などのコマンドに適用されます。

pg-primary ⇒ 環境変数でlog-pathを設定する

sudo -u postgres bash -c ' \
       export PGBACKREST_LOG_PATH=/path/set/by/env && \
       pgbackrest --log-level-console=error help backup log-path'
pgBackRest 2.59.3 - 'backup' command - 'log-path' option help

Path where log files are stored.

The log path provides a location for pgBackRest to store log files. Note that
if log-level-file=off then no log path is required.

current: /path/set/by/env
default: /var/log/pgbackrest

リポジトリの作成

リポジトリは、pgBackRestがバックアップを保存し、WALセグメントをアーカイブする場所です。

必要な容量を事前に見積もるのは難しい場合があります。まず何度かバックアップを取り、各種類(full/incr/diff)のバックアップサイズを記録するとともに、1日あたりのWAL生成量を測定するのが最善です。これで必要容量のおおよその見当が付きますが、もちろんデータベースの変化に伴って必要容量も変わる可能性があります。

このデモでは、PostgreSQLサーバーと同じホストにリポジトリを保存します。これは最も単純な構成で、従来のバックアップソフトウェアでデータベースホストをバックアップする場合に有用です。

pg-primary ⇒ pgBackRestのリポジトリを作成する

sudo mkdir -p /var/lib/pgbackrest
sudo chmod 750 /var/lib/pgbackrest
sudo chown postgres:postgres /var/lib/pgbackrest

pgBackRestがリポジトリを見つけられるよう、リポジトリのパスを設定する必要があります。

pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ pgBackRestのリポジトリパスを設定する

[demo]

pg1-path=/var/lib/pgsql/14/data



[global]

repo1-path=/var/lib/pgbackrest

複数のリポジトリも設定できます。詳細は複数のリポジトリ を参照してください。

アーカイブの設定

稼働中のPostgreSQLクラスターをバックアップするには、WALアーカイブを有効にする必要があります。%pは、PostgreSQLがアーカイブ対象のWALセグメントの場所を指定する方法です。クラスターに明示的な書き込みがなくても、バックアップ中には少なくとも1つのWALセグメントが作成されます。

pg-primary:/var/lib/pgsql/14/data/postgresql.conf ⇒ アーカイブを設定する

archive_command = 'pgbackrest --stanza=demo archive-push %p'

archive_mode = on

log_filename = 'postgresql.log'

これらの変更後、バックアップを実行する前にPostgreSQLクラスターを再起動する必要があります。

pg-primary ⇒ デモクラスターを再起動する

sudo systemctl restart postgresql-14.service

hot_standbyはデフォルトで有効になっており、すべてのクラスターで有効のままにしておくことをお勧めします。フェイルオーバー後にプライマリーをスタンバイとして再構築する場合など、どのクラスターも後でスタンバイとしてリストアされる可能性があり、この設定がないとスタンバイは読み取り専用接続を受け付けません。

WALセグメントをpgBackRestリポジトリにアーカイブするのに60秒(デフォルト)を超える時間がかかると予想される場合は、pgBackRestのarchive-timeoutオプションを増やすことをお勧めします。このオプションは、WALセグメントの切り替えを強制するPostgreSQLのarchive_timeoutオプションとは異なります。後者は、長時間操作がないデータベースに有用です。PostgreSQLのarchive_timeoutオプションの詳細は、PostgreSQLの先行書き込みログ を参照してください。

archive-pushコマンドには固有のオプションを設定できます。たとえば、バックアップの圧縮には影響を与えずに、圧縮レベルを下げてアーカイブを高速化できます。

pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ archive-pushの圧縮レベルを低く設定する

[demo]

pg1-path=/var/lib/pgsql/14/data



[global]

repo1-path=/var/lib/pgbackrest



[global:archive-push]

compress-level=3

この設定方法はどのコマンドにも使用でき、demo:archive-pushのように特定のstanzaだけを対象にすることもできます。

保持の設定

pgBackRestは保持オプションに基づいてバックアップを期限切れにします。

pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ フルバックアップを2つ保持するよう設定する

[demo]

pg1-path=/var/lib/pgsql/14/data



[global]

repo1-path=/var/lib/pgbackrest

repo1-retention-full=2



[global:archive-push]

compress-level=3

保持の詳細は保持 を参照してください。

リポジトリの暗号化の設定

暗号化の例として、リポジトリに暗号方式とキーを設定します。リポジトリの種類(S3などのオブジェクトストア)が暗号化に対応している場合でも、暗号化は常にクライアント側で行います。

暗号キーには、長くランダムなパスフレーズを使用することが重要です。生成するにはopenssl rand -base64 48を実行する方法が適しています。

pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ pgBackRestリポジトリの暗号化を設定する

[demo]

pg1-path=/var/lib/pgsql/14/data



[global]

repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO

repo1-cipher-type=aes-256-cbc

repo1-path=/var/lib/pgbackrest

repo1-retention-full=2



[global:archive-push]

compress-level=3

注:

上の例では、infoコマンドがすべてのstanzaを読み込めるよう、暗号化設定を[global]セクションに記述しています。stanzaオプションを指定しない場合、infoコマンドは[global]セクションからのみ暗号化設定を読み込みます。stanzaごとに暗号化を設定した場合は、暗号化されたstanzaを読み込むためにstanzaオプションが必要です。

リポジトリを設定し、stanzaを作成して確認した後は、リポジトリの暗号化設定を変更できません。

stanzaの作成

stanzaを初期化するには、stanza-createコマンドを実行する必要があります。アーカイブとバックアップが正しく設定されていることを確認するため、stanza-createの後にcheckコマンドを実行することをお勧めします。

pg-primary ⇒ stanzaを作成して設定を確認する

sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stanza-create
P00   INFO: stanza-create command begin 2.59.3: --exec-id=1200-90682d35 --log-level-console=info --no-log-timestamp --pg1-path=/var/lib/pgsql/14/data --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --stanza=demo
P00   INFO: stanza-create for stanza 'demo' on repo1
P00   INFO: stanza-create command end: completed successfully

設定の確認

checkコマンドは、指定されたstanzaのアーカイブとバックアップについて、pgBackRestとarchive_commandが正しく設定されていることを検証します。コマンドを実行するホストに設定された、すべてのリポジトリとデータベースの確認を試みます。特にアーカイブの設定ミスにより、必要なWALセグメントがアーカイブに届かずバックアップが不完全になる問題を検出します。このコマンドはPostgreSQLホストまたはリポジトリホストで実行できます。スタンバイホストでも実行できますが、スタンバイではpg_switch_xlog()/pg_switch_wal()を実行できないため、リポジトリの設定だけを検証します。

PostgreSQLにWALセグメントを強制的にアーカイブさせるため、pg_create_restore_point('pgBackRest Archive Check')とpg_switch_xlog()/pg_switch_wal()が呼び出されます。

pg-primary ⇒ 設定を確認する

sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check
P00   INFO: check command begin 2.59.3: --exec-id=1233-340209f5 --log-level-console=info --no-log-timestamp --pg1-path=/var/lib/pgsql/14/data --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --stanza=demo
P00   INFO: check repo1 configuration (primary)
P00   INFO: check repo1 archive for WAL (primary)
P00   INFO: WAL segment 000000010000000000000001 successfully archived to '/var/lib/pgbackrest/archive/demo/14-1/0000000100000000/000000010000000000000001-dac4045f133f7305d6342d81e428e60050928bc4.gz' on repo1
P00   INFO: check command end: completed successfully

パフォーマンスの調整

pgBackRestには、リポジトリの後方互換性を維持するため、デフォルトでは無効になっている性能関連のオプションがあります。ただし、新しいリポジトリを作成する場合は、次のオプションをお勧めします。既存のリポジトリにも使用できますが、古いバージョンのpgBackRestではそのリポジトリを読み込めなくなる点に注意してください。どのバージョンと互換性がなくなるかは、以下に示す各機能の導入時期によって異なります。

  • compress-type - backupとarchive-pushコマンドで使用する圧縮アルゴリズムを決めます。デフォルトはgz(Gzip)ですが、はるかに高速でgzと同程度の圧縮率が得られるzst(Zstandard)をお勧めします。compress-typeオプションはv2.27 からzstに対応しています。詳細は圧縮形式 を参照してください。
  • repo-bundle - バックアップ時に小さなファイルをまとめ、容量を節約し、backupとrestoreの両コマンドを高速化します。特にS3などのオブジェクトストアで効果があります。repo-bundleオプションはv2.39 で導入されました。詳細はファイルのバンドル化 を参照してください。
  • repo-block - diff/incrのbackupで、ファイル全体ではなく変更された部分だけを保存します。これにより容量を節約し、backupを高速化できます。repo-blockオプションはv2.46 で導入されましたが、少なくともv2.52.1 をお勧めします。詳細はブロック単位の増分バックアップ を参照してください。

このほかにも、追加設定が必要なため、またはデフォルトが安全な値(ただし最適ではない値)であるため、デフォルトでは有効になっていない性能関連のオプションがあります。これらはpgBackRestのすべてのv2バージョンで利用できます。

  • process-max - コマンドに使用するプロセス数を決めます。デフォルトは1ですが、この値が適切なことはほとんどありません。process-maxの使い方はコマンドごとに異なるため、使用方法の詳細は各コマンドのドキュメントを参照してください。
  • archive-async - WALファイルをまとめてリポジトリにアーカイブし、アーカイブを大幅に高速化します。スプールパスを作成する必要があるため、デフォルトでは無効です。詳細は非同期アーカイブ を参照してください。
  • backup-standby - プライマリーの負荷を減らすため、プライマリーではなくスタンバイでバックアップを実行します。追加設定と1つ以上のスタンバイホストが必要なため、デフォルトでは無効です。詳細はスタンバイからのバックアップ を参照してください。

バックアップの実行

pgBackRestはデフォルトで、次の定期チェックポイントを待ってからバックアップを開始します。PostgreSQLのcheckpoint_timeoutとcheckpoint_segmentsの設定によっては、チェックポイントが完了してバックアップを開始できるまでにかなり時間がかかる場合があります。通常は、すぐにバックアップが始まるようstart-fast=yを設定することをお勧めします。これによりチェックポイントが強制されますが、バックアップは通常1日1回実行するため、追加のチェックポイントが性能に目立った影響を与えることはないはずです。ただし、非常に負荷の高いクラスターでは、必要に応じてコマンドラインで--start-fastを指定するほうがよい場合があります。

pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ バックアップの即時開始を設定する

[demo]

pg1-path=/var/lib/pgsql/14/data



[global]

repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO

repo1-cipher-type=aes-256-cbc

repo1-path=/var/lib/pgbackrest

repo1-retention-full=2

start-fast=y



[global:archive-push]

compress-level=3

PostgreSQLクラスターのバックアップを行うには、pgBackRestのbackupコマンドを実行します。

pg-primary ⇒ デモクラスターをバックアップする

sudo -u postgres pgbackrest --stanza=demo \
       --log-level-console=info backup
P00   INFO: backup command begin 2.59.3: --exec-id=1327-e87cfc24 --log-level-console=info --no-log-timestamp --pg1-path=/var/lib/pgsql/14/data --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo --start-fast
P00   WARN: no prior backup exists, incr backup has been changed to full
P00   INFO: execute backup start: backup begins after the requested immediate checkpoint completes
P00   INFO: backup start archive = 000000010000000000000002, lsn = 0/2000028
       [filtered 3 lines of output]
P00   INFO: check archive for segment(s) 000000010000000000000002:000000010000000000000003
P00   INFO: new backup label = 20261002-185647F
P00   INFO: full backup size = 25.2MB, file total = 951
P00   INFO: backup command end: completed successfully
P00   INFO: expire command begin 2.59.3: --exec-id=1327-e87cfc24 --log-level-console=info --no-log-timestamp --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo

pgBackRestはデフォルトで増分バックアップの実行を試みます。ただし、増分バックアップには基となるフルバックアップが必要です。この例ではフルバックアップが存在しなかったため、pgBackRestは代わりにフルバックアップを実行しました。

typeオプションでフルバックアップまたは差分バックアップを指定できます。

pg-primary ⇒ デモクラスターの差分バックアップを取る

sudo -u postgres pgbackrest --stanza=demo --type=diff \
       --log-level-console=info backup
       [filtered 7 lines of output]
P00   INFO: check archive for segment(s) 000000010000000000000004:000000010000000000000005
P00   INFO: new backup label = 20261002-185647F_20261002-185651D
P00   INFO: diff backup size = 9.2KB, file total = 951
P00   INFO: backup command end: completed successfully
P00   INFO: expire command begin 2.59.3: --exec-id=1398-36e29fed --log-level-console=info --no-log-timestamp --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo

今回はフルバックアップがすでに存在していたため、警告はありませんでした。増分バックアップはフルバックアップまたは差分バックアップを基にできますが、差分バックアップはフルバックアップを基にする必要があります。フルバックアップを実行するには、backupコマンドに--type=fullを指定します。

オンラインバックアップ中、pgBackRestはバックアップの整合性に必要なWALセグメントがアーカイブされるのを待ちます。この待機時間は、デフォルトで60秒のpgBackRestのarchive-timeoutオプションで制御します。個々のセグメントのアーカイブにこの時間を超えることが分かっている場合は、この値を増やすことをお勧めします。

バックアップのスケジュール

cronなどのユーティリティで、バックアップをスケジュールできます。

次の例では2つのcronジョブを設定します。毎週日曜日の午前6:30にフルバックアップを実行し、月曜日から土曜日の午前6:30に差分バックアップを実行します。このcrontabを週の途中で初めて設定した場合、pgBackRestは差分バックアップのジョブが最初に実行されるときにフルバックアップを行い、翌日から差分バックアップを行います。

#m h   dom mon dow   command
30 06  *   *   0     pgbackrest --type=full --stanza=demo backup
30 06  *   *   1-6   pgbackrest --type=diff --stanza=demo backup

バックアップをスケジュールしたら、定期的に期限切れになるよう保持設定を行うことが重要です。保持 を参照してください。

バックアップ情報

バックアップの情報を取得するには、infoコマンドを使用します。

pg-primary ⇒ デモクラスターの情報を取得する

sudo -u postgres pgbackrest info
stanza: demo
    status: ok
    cipher: aes-256-cbc

    db (current)
        wal archive min/max (14): 000000010000000000000001/000000010000000000000005

        full backup: 20261002-185647F
            timestamp start/stop: 2026-10-02 18:56:47+00 / 2026-10-02 18:56:50+00
            wal start/stop: 000000010000000000000002 / 000000010000000000000003
            database size: 25.2MB, database backup size: 25.2MB
            repo1: backup set size: 3.2MB, backup size: 3.2MB

        diff backup: 20261002-185647F_20261002-185651D
            timestamp start/stop: 2026-10-02 18:56:51+00 / 2026-10-02 18:56:52+00
            wal start/stop: 000000010000000000000004 / 000000010000000000000005
            database size: 25.2MB, database backup size: 9.2KB
            repo1: backup set size: 3.2MB, backup size: 864B
            backup reference total: 1 full

infoコマンドは、単一のstanzaまたはすべてのstanzaを対象に動作します。デフォルトのテキスト出力では、指定したstanzaのバックアップ概要を人が読みやすい形式で表示します。この形式は、どのリリースでも変更される可能性があります。

機械処理用の出力には--output=jsonを使用します。JSON出力にはテキスト出力よりはるかに多くの情報が含まれ、バグが見つからない限り安定した形式を維持します。

実行を高速化するには、--detail-level=progressを指定して、進捗情報だけに出力を限定します。この場合、stanzaの可用性以外のすべての確認が省略される点に注意してください。

stanzaごとに個別のセクションがあり、--stanzaオプションで単一のstanzaに出力を限定できます。stanzaの「status」は、そのstanzaの健全性を簡潔に示します。「ok」ならpgBackRestは正常に動作しています。複数のリポジトリがある場合、「mixed」は1つ以上のリポジトリでstanzaが正常でないことを示し、リポジトリごとに状態の詳細が表示されます。リポジトリで既知のエラーコードに該当しないエラーが発生した場合は、エラーコード「other」を使用し、完全なエラー詳細を表示します。「wal archive min/max」は、現在アーカイブに保存されているWALの最小値と最大値です。複数のリポジトリがある場合、--repoオプションを指定しない限り、全リポジトリを通して報告されます。アーカイブ保持ポリシーなどの理由で、途中に欠落がある場合もあります。

ホスト上で該当コマンドが実行中の場合は、「status」情報の横に「backup/expire running」や「restore running」が表示されます。テキスト出力にはリポジトリごとの進捗も表示され、JSON出力には「repo」配列が含まれます。

バックアップは古い順に表示されます。最も古いバックアップは必ずフルバックアップ(ラベル末尾のFで識別)ですが、最新のバックアップはフル、差分(末尾がD)、増分(末尾がI)のいずれかです。

「timestamp start/stop」は、バックアップが実行された期間を示します。「timestamp stop」は、ポイントインタイムリカバリーで使用するバックアップの選択に利用できます。ポイントインタイムリカバリーの詳細は、ポイントインタイムリカバリー を参照してください。

「wal start/stop」は、リストア時にデータベースの整合性を回復するために必要なWALの範囲を示します。backupコマンドは、完了前にこの範囲のWALがアーカイブに存在することを確認します。

「database size」はデータベース全体の非圧縮サイズで、「database backup size」は実際にバックアップするデータベース内のデータ量です(フルバックアップでは両者は同じです)。

「repo」は、このバックアップを保存しているリポジトリを示します。「backup set size」には、このバックアップからデータベースをリストアするために必要な、このバックアップ自身と参照先バックアップのリポジトリ内の全ファイルが含まれます。一方、「backup size」には、このバックアップのファイルだけが含まれます(フルバックアップではこれらも同じです)。pgBackRestで圧縮を有効にしている場合、リポジトリのサイズは圧縮後のファイルサイズを表します。

「backup reference total」は、このバックアップのリストアに必要な追加バックアップの一覧の概要です。完全な参照一覧を表示するには、--setオプションを使用します。

バックアップのリストア

バックアップはさまざまな障害に備えるためのもので、特に一般的なのはハードウェア障害とデータ破損です。データ破損を最も簡単に再現する方法は、PostgreSQLクラスターの重要なファイルを削除することです。

pg-primary ⇒ デモクラスターを停止し、pg_controlファイルを削除する

sudo systemctl stop postgresql-14.service
sudo -u postgres rm /var/lib/pgsql/14/data/global/pg_control

この重要なファイルがない状態でクラスターを起動すると、エラーになります。

pg-primary ⇒ 破損したデモクラスターの起動を試みる

sudo systemctl start postgresql-14.service
sudo systemctl status postgresql-14.service
postgresql-14.service - PostgreSQL 14 database server
    Loaded: loaded (/usr/lib/systemd/system/postgresql-14.service, disabled)
    Active: failed (failed)

PostgreSQLクラスターのバックアップをリストアするには、pgBackRestのrestoreコマンドを実行します。クラスターを停止し(この例ではすでに停止しています)、PostgreSQLのデータディレクトリからすべてのファイルを削除する必要があります。

pg-primary ⇒ デモクラスターから古いファイルを削除する

sudo -u postgres find /var/lib/pgsql/14/data -mindepth 1 -delete

pg-primary ⇒ デモクラスターをリストアしてPostgreSQLを起動する

sudo -u postgres pgbackrest --stanza=demo restore
sudo systemctl start postgresql-14.service

リストアにより欠落していたpg_controlファイルが復元されたため、今回はクラスターが正常に起動しました。

restoreコマンドの詳細はリストア を参照してください。


監視

監視は、どの本番システムでも重要です。多くのツールがあり、少し手を加えれば、そのいずれでもpgBackRestを監視できます。

pgBackRestはリポジトリの情報をJSON形式で出力できます。この情報には、各stanzaのすべてのバックアップの一覧とWALアーカイブ情報が含まれます。

PostgreSQLでの監視

PostgreSQLのCOPYコマンドを使うと、pgBackRestの情報をテーブルに読み込めます。次の例では、この処理をリアルタイムのクエリーに使える関数にまとめています。

pg-primary ⇒ PostgreSQL用のpgBackRest情報関数を読み込む

sudo -u postgres cat \
       /var/lib/pgsql/pgbackrest/doc/example/pgsql-pgbackrest-info.sql
-- An example of monitoring pgBackRest from within PostgreSQL
--
-- Use copy to export data from the pgBackRest info command into the jsonb
-- type so it can be queried directly by PostgreSQL.

-- Create monitor schema
create schema monitor;

-- Get pgBackRest info in JSON format
create function monitor.pgbackrest_info()
    returns jsonb AS $$
declare
    data jsonb;
begin
    -- Create a temp table to hold the JSON data
    create temp table temp_pgbackrest_data (data text);

    -- Copy data into the table directly from the pgBackRest info command
    copy temp_pgbackrest_data (data)
        from program
            'pgbackrest --output=json info' (format text);

    select replace(temp_pgbackrest_data.data, E'\n', '\n')::jsonb
      into data
      from temp_pgbackrest_data;

    drop table temp_pgbackrest_data;

    return data;
end $$ language plpgsql;
sudo -u postgres psql -f \
       /var/lib/pgsql/pgbackrest/doc/example/pgsql-pgbackrest-info.sql

これでmonitor.pgbackrest_info()関数を使って、stanzaの最後に成功したバックアップの時刻と、アーカイブされたWALを確認できます。

pg-primary ⇒ 最後に成功したバックアップの時刻とアーカイブされたWALを取得する

sudo -u postgres cat \
       /var/lib/pgsql/pgbackrest/doc/example/pgsql-pgbackrest-query.sql
-- Get last successful backup for each stanza
--
-- Requires the monitor.pgbackrest_info function.
with stanza as
(
    select data->'name' as name,
           data->'backup'->(
               jsonb_array_length(data->'backup') - 1) as last_backup,
           data->'archive'->(
               jsonb_array_length(data->'archive') - 1) as current_archive
      from jsonb_array_elements(monitor.pgbackrest_info()) as data
)
select name,
       to_timestamp(
           (last_backup->'timestamp'->>'stop')::numeric) as last_successful_backup,
       current_archive->>'max' as last_archived_wal
  from stanza;
sudo -u postgres psql -f \
       /var/lib/pgsql/pgbackrest/doc/example/pgsql-pgbackrest-query.sql
  name  | last_successful_backup |    last_archived_wal
--------+------------------------+--------------------------
 "demo" | 2026-10-02 18:56:52+00 | 000000010000000000000005
(1 row)

バックアップ

複数のリポジトリが設定されている場合、pgBackRestは--repoオプションを指定しない限り、最も優先順位の高いリポジトリ(例:repo1)にバックアップします。

pgBackRestにはスケジューラーが組み込まれていないため、cronなどのスケジュール機構から実行することをお勧めします。

詳細と例はバックアップの実行 を参照してください。

ファイルのバンドル化

リポジトリ内でファイルをまとめると、バックアップの時間を短縮し、リポジトリの容量もある程度節約できます。特に、S3などのオブジェクトストアやブロックサイズの大きなファイルシステムにリポジトリを保存する場合に効果があります。オブジェクトストアではファイルごとの作成時間が長く、非常に小さなファイルでも大きなファイルと同程度の保存コストがかかる場合があります。

ファイルのバンドル化は、repo-bundleオプションで有効にします。

pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ repo1-bundleを設定する

[demo]

pg1-path=/var/lib/pgsql/14/data



[global]

repo1-bundle=y

repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO

repo1-cipher-type=aes-256-cbc

repo1-path=/var/lib/pgbackrest

repo1-retention-full=2

start-fast=y



[global:archive-push]

compress-level=3

ファイルをバンドル化しないフルバックアップでは、バックアップパスに1000以上のファイルがありますが、バンドル化するとファイル総数は大幅に減ります。さらに、通常のバックアップでは長さゼロのファイルも個別に保存するのに対し、バンドル化ではマニフェストへの記録を除いて保存しないという利点もあります。

pg-primary ⇒ フルバックアップを実行する

sudo -u postgres pgbackrest --stanza=demo --type=full backup

pg-primary ⇒ ファイル総数を確認する

sudo -u postgres find /var/lib/pgbackrest/backup/demo/latest/ -type f | wc -l
5

repo-bundle-sizeとrepo-bundle-limitオプションで調整できますが、ほとんどの場合はデフォルト値が最適なはずです。

ファイルのバンドル化は一般に効率的ですが、リポジトリからファイルを手動で取り出しにくくなるという欠点があります。フルバックアップのたびにバンドル内のファイル配置が変わるため、重複排除ストレージには適さない場合があります。また、ファイルバンドルの処理は中断位置から再開できないため、repo-bundle-limitを大きくしすぎないよう注意してください。

ブロック単位の増分バックアップ

ブロック単位の増分バックアップでは、ファイル全体ではなく、前のバックアップ以降に変更された部分だけを保存して容量を節約します。

ブロック単位の増分バックアップはrepo-blockオプションで有効にし、すべてのバックアップ種類で有効にすると最も効果的です。ファイルのバンドル化も有効にする必要があります。

pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ repo1-blockを設定する

[demo]

pg1-path=/var/lib/pgsql/14/data



[global]

repo1-block=y

repo1-bundle=y

repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO

repo1-cipher-type=aes-256-cbc

repo1-path=/var/lib/pgbackrest

repo1-retention-full=2

start-fast=y



[global:archive-push]

compress-level=3

バックアップの注釈

バックアップに情報を記したキーと値のペアを付けられます。このオプションは複数回指定でき、複数の注釈を付けられます。

pg-primary ⇒ 注釈付きのフルバックアップを実行する

sudo -u postgres pgbackrest --stanza=demo --annotation=source="demo backup" \
       --annotation=key=value --type=full backup

注釈は、infoコマンドで--setによりバックアップを指定した場合にテキスト出力に表示され、JSON出力には常に表示されます。

pg-primary ⇒ デモクラスターの情報を取得する

sudo -u postgres pgbackrest --stanza=demo --set=20261002-185708F info
stanza: demo
    status: ok
    cipher: aes-256-cbc

    db (current)
        wal archive min/max (14): 000000020000000000000007/000000020000000000000009

        full backup: 20261002-185708F
            timestamp start/stop: 2026-10-02 18:57:08+00 / 2026-10-02 18:57:09+00
            wal start/stop: 000000020000000000000008 / 000000020000000000000009
            lsn start/stop: 0/8000028 / 0/9000050
            database size: 25.2MB, database backup size: 25.2MB
            repo1: backup size: 3.2MB
            database list: postgres (13755)
            annotation(s)
                key: value
                source: demo backup

backupコマンドで付けた注釈は、後でannotateコマンドを使って追加、変更、削除できます。

pg-primary ⇒ バックアップの注釈を変更する

sudo -u postgres pgbackrest --stanza=demo --set=20261002-185708F \
       --annotation=key= --annotation=new_key=new_value annotate
sudo -u postgres pgbackrest --stanza=demo --set=20261002-185708F info
stanza: demo
    status: ok
    cipher: aes-256-cbc

    db (current)
        wal archive min/max (14): 000000020000000000000007/000000020000000000000009

        full backup: 20261002-185708F
            timestamp start/stop: 2026-10-02 18:57:08+00 / 2026-10-02 18:57:09+00
            wal start/stop: 000000020000000000000008 / 000000020000000000000009
            lsn start/stop: 0/8000028 / 0/9000050
            database size: 25.2MB, database backup size: 25.2MB
            repo1: backup size: 3.2MB
            database list: postgres (13755)
            annotation(s)
                new_key: new_value
                source: demo backup

保持

通常、ポイントインタイムリカバリー の可能な期間を広げるには、できるだけ多くのバックアップを保持することが望ましいですが、ディスク容量などの実際の制約も考慮する必要があります。保持オプションは、不要になった古いバックアップを削除します。

pgBackRestは、保持方式に応じてフルバックアップをローテーションします。方式には個数または期間を指定できます。個数を指定した場合、期限切れの判定はバックアップの作成日時ではなく、保持すべき個数に基づきます。差分バックアップは個数に基づきますが、依存するフルバックアップが期限切れになると必ず一緒に期限切れになります。増分バックアップが保持設定により単独で期限切れになることはなく、関連するフルバックアップまたは差分バックアップとともに期限切れになります。詳細と例はフルバックアップの保持 と差分バックアップの保持 を参照してください。

アーカイブされたWALは、デフォルトでは期限切れになっていないバックアップのために保持されます。推奨はしませんが、retention-archiveオプションでリポジトリごとにこの保持方針を変更できます。詳細と例はアーカイブの保持 を参照してください。

expireコマンドは、バックアップが成功するたびに自動実行され、ユーザーが実行することもできます。ユーザーが実行した場合、設定された各リポジトリの保持設定に従って期限切れ処理が行われます。--repoオプションを指定した場合、指定したリポジトリだけで期限切れ処理を行います。--setオプションで特定のバックアップセットに期限切れ処理を限定することもできます。この場合、--repoオプションを指定しない限り、すべてのリポジトリを検索してセットの条件に一致するものを期限切れにします。expireコマンドを実行すると、アーカイブの保持方針の確認とそれに基づく処理も毎回行われる点に注意してください。

フルバックアップの保持

repo1-retention-full-typeは、repo1-retention-fullオプションを、保持するフルバックアップの個数として解釈するか、保持日数として解釈するかを決めます。期限切れ処理には、新しいバックアップが完了している必要があります。つまり、repo1-retention-full-type=countかつrepo1-retention-full=2の場合は、3つのフルバックアップが保存された後に最も古いものが期限切れになります。repo1-retention-full-type=timeかつrepo1-retention-full=20の場合は、少なくとも20日前のフルバックアップが1つ存在しなければ期限切れ処理は行われません。

pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ repo1-retention-fullを設定する

[demo]

pg1-path=/var/lib/pgsql/14/data



[global]

repo1-block=y

repo1-bundle=y

repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO

repo1-cipher-type=aes-256-cbc

repo1-path=/var/lib/pgbackrest

repo1-retention-full=2

start-fast=y



[global:archive-push]

compress-level=3

バックアップの設定はrepo1-retention-full=2ですが、現在フルバックアップは1つしかないため、次のフルバックアップを実行しても、どのフルバックアップも期限切れになりません。

pg-primary ⇒ フルバックアップを実行する

sudo -u postgres pgbackrest --stanza=demo --type=full \
       --log-level-console=detail backup
       [filtered 963 lines of output]
P00   INFO: repo1: remove expired backup 20261002-185706F
P00 DETAIL: repo1: 14-1 archive retention on backup 20261002-185708F, start = 000000020000000000000008
P00   INFO: repo1: 14-1 remove archive, start = 000000020000000000000007, stop = 000000020000000000000007
P00   INFO: expire command end: completed successfully

一方、最も古いバックアップより前に生成されたWALセグメントがあるため、アーカイブは期限切れになります。これらはリカバリーには使えません。バックアップのリカバリーに利用できるのは、そのバックアップ以降に生成されたWALセグメントだけです。

pg-primary ⇒ フルバックアップを実行する

sudo -u postgres pgbackrest --stanza=demo --type=full \
       --log-level-console=info backup
       [filtered 11 lines of output]
P00   INFO: repo1: expire full backup 20261002-185708F
P00   INFO: repo1: remove expired backup 20261002-185708F
P00   INFO: repo1: 14-1 remove archive, start = 000000020000000000000008, stop = 000000020000000000000009
P00   INFO: expire command end: completed successfully

フルバックアップ20261002-185647Fが期限切れになり、アーカイブの保持は、最も古いフルバックアップとなった20261002-185711Fを基準に行われます。

差分バックアップの保持

repo1-retention-diffに、必要な差分バックアップの個数を設定します。差分バックアップは前のフルバックアップだけに依存するため、直近1日以上の差分バックアップを順次入れ替えながら保持できます。これにより、全体の容量を抑えながら、最近の時点へすばやくリストアできます。

pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ repo1-retention-diffを設定する

[demo]

pg1-path=/var/lib/pgsql/14/data



[global]

repo1-block=y

repo1-bundle=y

repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO

repo1-cipher-type=aes-256-cbc

repo1-path=/var/lib/pgbackrest

repo1-retention-diff=1

repo1-retention-full=2

start-fast=y



[global:archive-push]

compress-level=3

バックアップの設定はrepo1-retention-diff=1のため、1つを期限切れにするには2つの差分バックアップを実行する必要があります。増分バックアップの期限切れ処理も示すため、増分バックアップを追加します。この例では、差分バックアップの期限切れに連動します。

pg-primary ⇒ 差分バックアップと増分バックアップを実行する

sudo -u postgres pgbackrest --stanza=demo --type=diff backup
sudo -u postgres pgbackrest --stanza=demo --type=incr backup

ここで差分バックアップを実行すると、前の差分バックアップと増分バックアップが期限切れになり、差分バックアップが1つだけ残ります。

pg-primary ⇒ 差分バックアップを実行する

sudo -u postgres pgbackrest --stanza=demo --type=diff \
       --log-level-console=info backup
       [filtered 10 lines of output]
P00   INFO: backup command end: completed successfully
P00   INFO: expire command begin 2.59.3: --exec-id=2641-6abf9293 --log-level-console=info --no-log-timestamp --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-diff=1 --repo1-retention-full=2 --stanza=demo
P00   INFO: repo1: expire diff backup set 20261002-185713F_20261002-185715D, 20261002-185713F_20261002-185716I
P00   INFO: repo1: remove expired backup 20261002-185713F_20261002-185716I
P00   INFO: repo1: remove expired backup 20261002-185713F_20261002-185715D
P00   INFO: expire command end: completed successfully

アーカイブの保持

pgBackRestはバックアップの期限切れ処理時にアーカイブ済みWALセグメントを自動削除します(デフォルトではrepo1-retention-fullオプションに基づいてフルバックアップのWALを期限切れにします)。ただし、ディスク容量の節約のために、アーカイブをより積極的に期限切れにすることが有用な場合もあります。差分アーカイブの保持では、フルバックアップも差分バックアップとして扱われます。

アーカイブの期限切れ処理で、バックアップの整合性に必要なWALセグメントが削除されることはありません。ただし、ポイントインタイムリカバリー(PITR)は連続したWALストリームでしか機能しないため、通常のバックアップ期限切れ処理とは別にアーカイブを積極的に期限切れにする際は注意してください。実際には何も期限切れにせず、対象だけを確認するには、コマンドラインでexpireコマンドにdry-runオプションを指定できます。

pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ repo1-retention-diffを設定する

[demo]

pg1-path=/var/lib/pgsql/14/data



[global]

repo1-block=y

repo1-bundle=y

repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO

repo1-cipher-type=aes-256-cbc

repo1-path=/var/lib/pgbackrest

repo1-retention-diff=2

repo1-retention-full=2

start-fast=y



[global:archive-push]

compress-level=3

pg-primary ⇒ 差分バックアップを実行する

sudo -u postgres pgbackrest --stanza=demo --type=diff \
       --log-level-console=info backup
       [filtered 6 lines of output]
P00   INFO: backup stop archive = 000000020000000000000017, lsn = 0/17000050
P00   INFO: check archive for segment(s) 000000020000000000000016:000000020000000000000017
P00   INFO: new backup label = 20261002-185713F_20261002-185719D
P00   INFO: diff backup size = 11.5KB, file total = 951
P00   INFO: backup command end: completed successfully
       [filtered 2 lines of output]

pg-primary ⇒ アーカイブを期限切れにする

sudo -u postgres pgbackrest --stanza=demo --log-level-console=detail \
       --repo1-retention-archive-type=diff --repo1-retention-archive=1 expire
P00   INFO: expire command begin 2.59.3: --exec-id=2877-3548ad61 --log-level-console=detail --no-log-timestamp --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-archive=1 --repo1-retention-archive-type=diff --repo1-retention-diff=2 --repo1-retention-full=2 --stanza=demo
P00 DETAIL: repo1: 14-1 archive retention on backup 20261002-185711F, start = 00000002000000000000000A, stop = 00000002000000000000000B
P00 DETAIL: repo1: 14-1 archive retention on backup 20261002-185713F, start = 00000002000000000000000C, stop = 00000002000000000000000D
P00 DETAIL: repo1: 14-1 archive retention on backup 20261002-185713F_20261002-185717D, start = 000000020000000000000012, stop = 000000020000000000000013
P00 DETAIL: repo1: 14-1 archive retention on backup 20261002-185713F_20261002-185719D, start = 000000020000000000000016
P00   INFO: repo1: 14-1 remove archive, start = 00000002000000000000000E, stop = 000000020000000000000011
P00   INFO: repo1: 14-1 remove archive, start = 000000020000000000000014, stop = 000000020000000000000015
P00   INFO: expire command end: completed successfully

差分バックアップ20261002-185713F_20261002-185717Dには、古いバックアップの整合性を回復するために保持しなければならないアーカイブ済みWALセグメントがあります。これらを使ってPITRでさらに先へ再生することはできません。20261002-185713F_20261002-185717Dより後、20261002-185713F_20261002-185719Dより前に生成されたWALセグメントは削除されます。新しいバックアップ20261002-185713F_20261002-185719Dより後に生成されたWALセグメントは残り、PITRに利用できます。

差分アーカイブの保持ではフルバックアップも差分バックアップとして扱われるため、同じ設定でここからフルバックアップを実行すると、そのフルバックアップのアーカイブだけがPITR用に保持されます。


リストア

restoreコマンドはデフォルトで、バックアップが存在する最初のリポジトリから最新のバックアップを自動選択します(クイックスタート - バックアップのリストア を参照)。リポジトリの確認順序はpgbackrest.confで決まります(たとえばrepo1をrepo2より先に確認します)。特定のリポジトリから選択するには、--repoオプション(例:--repo=1)を指定できます。最新以外のバックアップを使用するには、--setオプションを指定します。

PITR に --type=time または --type=lsn を指定する場合は、--target オプションで対象の時刻または LSN を指定する必要があります。--set を指定しない場合、設定済みのリポジトリを順に調べ、終了時刻が対象時刻より前のバックアップ、または終了 LSN が対象 LSN 以下のバックアップを選択します。一致するバックアップが見つからない場合、--type=time と --type=lsn のどちらでも pgBackRest はエラーを返し、最新のバックアップにフォールバックしません。xid など、その他の PITR の種類では、対象が最新のバックアップより前であれば --set オプションを指定する必要があります。詳細と例については、ポイントインタイムリカバリ を参照してください。

PostgreSQLの推奨に従い、レプリケーションスロットは含めません。詳細はPostgreSQLドキュメントのデータディレクトリのバックアップ を参照してください。

以降のセクションでは、restoreコマンドの追加機能を紹介します。

ファイルの所有権

通常のようにroot以外のユーザーでrestoreを実行した場合、リストアしたすべてのファイルはpgBackRestを実行するユーザーとグループに属します。既存ファイルの所有者が実行ユーザーやグループと異なり、所有権を変更できない場合はエラーになります。この場合、権限を持つユーザーがファイルの所有権を更新してから、リストアを再試行する必要があります。

rootユーザーでrestoreを実行した場合、pgBackRestはバックアップ時にマニフェストに記録した所有権の再現を試みます。マニフェストに保存されるのはユーザーとグループの名前だけなので、リストア先ホストに同じ名前が存在する必要があります。ローカルでユーザー名やグループ名が見つからない場合は、PostgreSQLのデータディレクトリのユーザーとグループを使用します。それらにも対応する名前がない場合は、最後にrootを使用します。

deltaオプション

クイックスタート のバックアップのリストア では、restoreを実行する前にデータベースクラスターのディレクトリを空にする必要がありました。deltaオプションを使うと、pgBackRestはデータベースクラスターのディレクトリ内でそのまま残せるファイルと、バックアップからリストアすべきファイルを自動で判別できます。また、バックアップのマニフェストにないファイルも削除するため、バックアップと異なる変更を取り除きます。この判別には、データベースクラスターのディレクトリ内の各ファイルについて計算したSHA-1 暗号学的ハッシュを使用します。SHA-1ハッシュがバックアップに保存されたハッシュと一致しない場合、そのファイルをリストアします。process-maxオプションと組み合わせると、非常に効率的に処理できます。リストア中はPostgreSQLサーバーが停止しているため、サーバーが稼働するバックアップ時より多くのプロセスを使用できます。

pg-primary ⇒ デモクラスターを停止し、deltaリストアを実行する

sudo systemctl stop postgresql-14.service
sudo -u postgres pgbackrest --stanza=demo --delta \
       --log-level-console=detail restore
       [filtered 2 lines of output]
P00 DETAIL: check '/var/lib/pgsql/14/data' exists
P00 DETAIL: remove 'global/pg_control' so cluster will not start if restore does not complete
P00   INFO: remove invalid files/links/paths from '/var/lib/pgsql/14/data'
P00 DETAIL: remove invalid file '/var/lib/pgsql/14/data/backup_label.old'
P00 DETAIL: remove invalid file '/var/lib/pgsql/14/data/base/13755/pg_internal.init'
       [filtered 996 lines of output]

pg-primary ⇒ PostgreSQLを再起動する

sudo systemctl start postgresql-14.service

選択したデータベースのリストア

クラスターのバックアップから、特定のデータベースだけを選んでリストアしたい場合があります。性能上の理由や、クラスター全体のバックアップをリストアする容量がないマシンに、選択したデータベースを移動する場合などです。

この機能を示すため、test1とtest2の2つのデータベースを作成します。

pg-primary ⇒ テスト用データベースを2つ作成する

sudo -u postgres psql -c "create database test1;"
CREATE DATABASE
sudo -u postgres psql -c "create database test2;"
CREATE DATABASE

選択的なリストアでもリカバリーが機能することを示すため、各テスト用データベースにテーブルとデータを用意します。

pg-primary ⇒ 各データベースにテスト用テーブルを作成する

sudo -u postgres psql -c "create table test1_table (id int); \
       insert into test1_table (id) values (1);" test1
CREATE TABLE
INSERT 0 1
sudo -u postgres psql -c "create table test2_table (id int); \
       insert into test2_table (id) values (2);" test2
CREATE TABLE
INSERT 0 1

pgBackRestが新しいデータベースを認識できるよう、新しくバックアップを取ります。

pg-primary ⇒ バックアップを実行する

sudo -u postgres pgbackrest --stanza=demo --type=incr backup

選択的リストアを使う主な理由の1つは容量の節約です。リストア後のディスク使用量と比較できるよう、ここでtest1データベースのサイズを表示します。

pg-primary ⇒ test1データベースの使用容量を表示する

sudo -u postgres du -sh /var/lib/pgsql/14/data/base/32768
8.4M	/var/lib/pgsql/14/data/base/32768

リストアするデータベースが分からない場合は、infoコマンドのsetオプションを使って、バックアップセットに含まれるデータベースを調べます。

pg-primary ⇒ バックアップのデータベース一覧を表示する

sudo -u postgres pgbackrest --stanza=demo \
       --set=20261002-185713F_20261002-185728I info
       [filtered 12 lines of output]
            repo1: backup size: 2.1MB
            backup reference list: 20261002-185713F, 20261002-185713F_20261002-185719D
            database list: postgres (13755), test1 (32768), test2 (32769)

クラスターを停止し、test2データベースだけをリストアします。組み込みデータベース(template0、template1、postgres)は常にリストアされます。

警告:

--type=immediateを指定しないと、リカバリーでエラーが発生する場合があります。整合性が確立された後は、PostgreSQLがフルページ書き込みの場合でもゼロ埋めページをエラーとして扱うためです。PostgreSQL ≥ 13では、ignore_invalid_pages設定で無効なページを無視できます。その場合は、リカバリー後にログを確認し、選択したデータベースで無効なページが報告されていないことを確かめることが重要です。

pg-primary ⇒ 最後のバックアップからtest2データベースだけを含めてリストアする

sudo systemctl stop postgresql-14.service
sudo -u postgres pgbackrest --stanza=demo --delta \
       --db-include=test2 --type=immediate --target-action=promote restore
sudo systemctl start postgresql-14.service

リカバリーが完了すると、test2データベースには以前に作成したすべてのテーブルとデータが含まれます。

pg-primary ⇒ test2データベースがリカバリーされたことを確認する

sudo -u postgres psql -c "select * from test2_table;" test2
 id
----
  2
(1 row)

test1データベースは、リカバリー自体は成功していてもアクセスできません。データベース全体をゼロ埋めのスパースファイルとしてリストアしたためです。PostgreSQLはゼロ埋めファイルにWALを正常に適用できますが、重要なファイルにデータがないため、データベース全体としては無効です。これは意図した動作で、WALの再生中に適用された一部のデータだけを含む可能性があるデータベースを、誤って使用することを防ぎます。

pg-primary ⇒ test1データベースへの接続を試みるとエラーになる

sudo -u postgres psql -c "select * from test1_table;" test1
psql: error: connection to server on socket "/run/postgresql/.s.PGSQL.5432" failed: FATAL:  relation mapping file "base/32768/pg_filenode.map" contains invalid data

test1データベースはゼロ埋めのスパースファイルとしてリストアされるため、必要な容量はリカバリー中に書き込まれるWALの量だけです。バックアップ中に生成され、リカバリー中に適用されるWALの量は大きくなることもありますが、通常はデータベース全体のサイズのごく一部です。この機能が特に役立つ大規模なデータベースでは、なおさらです。

選択的リストアでtest1データベースが使用するディスク容量は、データベース全体をリストアした場合より大幅に少ないことが分かります。

pg-primary ⇒ リカバリー後のtest1データベースの使用容量を表示する

sudo -u postgres du -sh /var/lib/pgsql/14/data/base/32768
8.0K	/var/lib/pgsql/14/data/base/32768

この時点で無効なtest1データベースに行える操作は、drop databaseだけです。リカバリーが完了してクラスターにアクセスできるようになるまでデータベースを削除できないため、pgBackRestは自動削除を行いません。

pg-primary ⇒ test1データベースを削除する

sudo -u postgres psql -c "drop database test1;"
DROP DATABASE

無効なtest1データベースを削除したので、test2と組み込みデータベースだけが残ります。

pg-primary ⇒ 残っているデータベースを一覧表示する

sudo -u postgres psql -c "select oid, datname from pg_database order by oid;"
  oid  |  datname
-------+-----------
     1 | template1
 13754 | template0
 13755 | postgres
 32769 | test2
(4 rows)

ポイントインタイムリカバリー

クイックスタート のバックアップのリストア では、WALストリームの末尾まで再生するデフォルトのリカバリーを行いました。ハードウェア障害の場合は通常これが最適ですが、機械または人の操作に起因するデータ破損の場合は、ポイントインタイムリカバリー(PITR)のほうが適していることがよくあります。

ポイントインタイムリカバリー(PITR)では、バックアップから、指定したlsn、時刻、トランザクションID、またはリカバリーポイントまでWALを再生できます。一般的なリカバリーでは、時刻に基づく方式が最も有用でしょう。典型的な例は、誤って削除したテーブルやデータを復元する場合です。ここでは効果が分かりやすいテーブルの復元を例にしますが、削除されたデータもまったく同じ方法で復元できます。

pg-primary ⇒ 非常に重要なデータを持つテーブルを作成する

sudo -u postgres psql -c "begin; \
       create table important_table (message text); \
       insert into important_table values ('Important Data'); \
       commit; \
       select * from important_table;"
       [filtered 4 lines of output]
    message
----------------
 Important Data
(1 row)

時刻はPostgreSQLが認識する値で表し、タイムゾーンのオフセットを含めることが重要です。これにより、意図しないタイムゾーン変換や、予想外のリカバリー結果の可能性を減らせます。

pg-primary ⇒ PostgreSQLから時刻を取得する

sudo -u postgres psql -Atc "select current_timestamp"
2026-10-02 18:57:39.575732+00

時刻を記録したので、テーブルを削除します。実際には、テーブルが削除された正確な時刻を見つけるのは、この例よりはるかに困難です。正確な時刻が分からないこともありますが、履歴などを調べれば近い時刻を特定できるはずです。

pg-primary ⇒ 重要なテーブルを削除する

sudo -u postgres psql -c "begin; \
       drop table important_table; \
       commit; \
       select * from important_table;"
BEGIN
DROP TABLE
COMMITERROR:  relation "important_table" does not exist
LINE 1: ...le important_table;     commit;     select * from important_...
                                                             ^

リストアするバックアップを誤って選ぶと、必要な目標時刻へのリカバリーは失敗します。これを示すために、important_tableが存在しない状態で新しい増分バックアップを実行します。

pg-primary ⇒ 増分バックアップを実行する

sudo -u postgres pgbackrest --stanza=demo --type=incr backup
sudo -u postgres pgbackrest info
       [filtered 38 lines of output]
            backup reference total: 1 full, 1 diff

        incr backup: 20261002-185713F_20261002-185741I
            timestamp start/stop: 2026-10-02 18:57:41+00 / 2026-10-02 18:57:42+00
            wal start/stop: 00000004000000000000001A / 00000004000000000000001A
       [filtered 2 lines of output]

PostgreSQLは前方への再生しかできず、後方には戻れないため、このバックアップから失われたテーブルを復元することはできません。

pg-primary ⇒ 誤ったバックアップからのリカバリーを試みる

sudo systemctl stop postgresql-14.service
sudo -u postgres pgbackrest --stanza=demo --delta \
       --set=20261002-185713F_20261002-185741I --target-timeline=current \
       --type=time "--target=2026-10-02 18:57:39.575732+00" --target-action=promote restore
sudo systemctl start postgresql-14.service
sudo -u postgres cat /var/lib/pgsql/14/data/log/postgresql.log
       [filtered 11 lines of output]
LOG:  database system is ready to accept read-only connections
LOG:  redo done at 0/1A000100 system usage: CPU: user: 0.00 s, system: 0.00 s, elapsed: 0.01 s
FATAL:  recovery ended before configured recovery target was reached
LOG:  startup process (PID 4045) exited with exit code 1
LOG:  terminating any other active server processes
LOG:  database system is shut down

確実な方法は、目標時刻までリカバリーできるバックアップ、つまり指定した時刻より前に完了したバックアップを、pgBackRestに自動選択させることです。

注:

リストアの種類がxidまたはnameの場合、pgBackRestはバックアップを自動選択できません。

pg-primary ⇒ デモクラスターを2026-10-02 18:57:39.575732+00の時点にリストアする

sudo -u postgres pgbackrest --stanza=demo --delta \
       --type=time "--target=2026-10-02 18:57:39.575732+00" \
       --target-action=promote restore
sudo -u postgres cat /var/lib/pgsql/14/data/postgresql.auto.conf
       [filtered 9 lines of output]
# Recovery settings generated by pgBackRest restore on 2026-10-02 18:57:47
restore_command = 'pgbackrest --stanza=demo archive-get %f "%p"'
recovery_target_time = '2026-10-02 18:57:39.575732+00'
recovery_target_action = 'promote'

pgBackRestがpostgresql.auto.confにリカバリー設定を生成したので、すぐにPostgreSQLを起動できます。%fはPostgreSQLが必要とするWALセグメントの指定、%pはそのコピー先の場所です。PostgreSQLのリカバリーが完了すると、テーブルが再び存在するようになり、クエリーを実行できます。

pg-primary ⇒ PostgreSQLを起動し、重要なテーブルが存在することを確認する

sudo systemctl start postgresql-14.service
sudo -u postgres psql -c "select * from important_table"
    message
----------------
 Important Data
(1 row)

PostgreSQLのログにも有用な情報があります。リカバリーが停止した時刻とトランザクションに加え、最後に適用したトランザクションの時刻も表示されます。

pg-primary ⇒ PostgreSQLのログ出力を確認する

sudo -u postgres cat /var/lib/pgsql/14/data/log/postgresql.log
       [filtered 5 lines of output]
LOG:  database system was interrupted; last known up at 2026-10-02 18:57:28 UTC
LOG:  restored log file "00000004.history" from archive
LOG:  starting point-in-time recovery to 2026-10-02 18:57:39.575732+00
LOG:  restored log file "00000004.history" from archive
LOG:  restored log file "000000040000000000000019" from archive
       [filtered 2 lines of output]
LOG:  consistent recovery state reached at 0/19000100
LOG:  database system is ready to accept read-only connections
LOG:  recovery stopping before commit of transaction 743, time 2026-10-02 18:57:40.904112+00
LOG:  redo done at 0/1901E6C0 system usage: CPU: user: 0.00 s, system: 0.00 s, elapsed: 0.00 s
LOG:  last completed transaction was at log time 2026-10-02 18:57:38.228184+00
LOG:  selected new timeline ID: 5
LOG:  archive recovery complete
LOG:  database system is ready to accept connections

stanzaの削除

stanza-deleteコマンドは、stanzaに関連するデータをリポジトリから削除します。

警告:

このコマンドは慎重に使用してください。指定したstanzaのすべてのバックアップとアーカイブを、pgBackRestリポジトリから完全に削除します。

stanzaを削除するには、次の手順を実行します。

  • stanzaに関連付けられたPostgreSQLクラスターを停止します(または–forceでこの要件を無視します)。
  • stanza-deleteコマンドを実行するホストで、stopコマンドを実行します。
  • stanza-deleteコマンドを実行します。

コマンドが正常に完了したら、すべてのpgBackRest設定ファイルや環境変数からstanzaを削除するのはユーザーの責任です。

stanzaは一度に1つのリポジトリからしか削除できません。複数のリポジトリから削除するには、--repoオプションを指定し、リポジトリごとにstanza-deleteコマンドを繰り返し実行してください。

pg-primary ⇒ 削除対象のPostgreSQLクラスターを停止する

sudo systemctl stop postgresql-14.service

pg-primary ⇒ 対象のstanzaについてpgBackRestを停止する

sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stop
P00   INFO: stop command begin 2.59.3: --exec-id=4396-32c67a63 --log-level-console=info --no-log-timestamp --stanza=demo
P00   INFO: stop command end: completed successfully

pg-primary ⇒ 1つのリポジトリからstanzaを削除する

sudo -u postgres pgbackrest --stanza=demo --repo=1 \
       --log-level-console=info stanza-delete
P00   INFO: stanza-delete command begin 2.59.3: --exec-id=4428-6f4dadb2 --log-level-console=info --no-log-timestamp --pg1-path=/var/lib/pgsql/14/data --repo=1 --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --stanza=demo
P00   INFO: stanza-delete command end: completed successfully

複数のリポジトリ

S3のサポート に示すように、複数のリポジトリを設定できます。利点の1つは、高速なリストア用のローカルリポジトリと、冗長性のためのリモートリポジトリを併用できることです。

stanza-create /stanza-upgrade など、一部のコマンドは設定済みのすべてのリポジトリを自動で処理します。一方、stanza-delete などのコマンドでは、repoオプションでリポジトリを指定する必要があります。

後方互換性を維持するため、repo1だけが設定されている場合はrepoオプションは不要です。ただし、リポジトリが1つでも、たとえばrepo2として設定されている場合はrepoオプションが必要です。これは、後で新しいリポジトリを追加した際に、コマンドが動作しなくなることを防ぐためです。

archive-pushコマンドは、設定済みのすべてのリポジトリのアーカイブに常にWALを送信します。あるリポジトリに接続できなくても、ほかのリポジトリへの送信は続きます。ただし、これを有効に機能させるにはarchive-async=yを有効にする必要があります。そうしないと、ほかのリポジトリは接続できないリポジトリよりWALセグメント1つ分しか先に進めません。また、いずれかのリポジトリにWALを送信できない場合、PostgreSQLはそのWALをpg_walディレクトリから削除しないため、ボリュームの空き容量がなくなる可能性があります。

バックアップはリポジトリごとに個別にスケジュールする必要があります。バックアップの種類や保持設定はリポジトリごとに異なるため、多くの場合これは望ましい動作です。同様に、リストアでもリポジトリを指定する必要があります。一般に、リカバリー時間が長くなっても、レイテンシーやコストの低いリポジトリをリストアに指定するほうが適しています。どのリポジトリが最も効率的かは、リストアのテストでしか判断できません。


Azure互換オブジェクトストアのサポート

pgBackRestは、Azure互換オブジェクトストアへのリポジトリの配置をサポートします。リポジトリを保存するコンテナーは事前に作成する必要があり、pgBackRestは自動作成しません。コンテナーのルート(/)にもリポジトリを配置できますが、通常はサブパスに配置するほうが適しています。これにより、オブジェクトストアのログなどのデータも競合せずに同じコンテナーに保存できます。

警告:

階層型名前空間を有効にしないでください。期限切れ処理でエラーが発生します。

pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Azureを設定する

[demo]

pg1-path=/var/lib/pgsql/14/data



[global]

repo1-block=y

repo1-bundle=y

repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO

repo1-cipher-type=aes-256-cbc

repo1-path=/var/lib/pgbackrest

repo1-retention-diff=2

repo1-retention-full=2

repo2-azure-account=pgbackrest

repo2-azure-container=demo-container

repo2-azure-key=YXpLZXk=

repo2-path=/demo-repo

repo2-retention-full=4

repo2-type=azure

start-fast=y



[global:archive-push]

compress-level=3

repo2-azure-key-typeオプションをsasに、repo2-azure-keyオプションを共有アクセス署名トークンに設定すると、共有アクセス署名を使用できます。

コマンドは、リポジトリをローカルディスクに保存した場合とまったく同じように実行します。

pg-primary ⇒ stanzaを作成する

sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stanza-create
P00   INFO: stanza-create command begin 2.59.3: --exec-id=4635-4a99c6c0 --log-level-console=info --no-log-timestamp --pg1-path=/var/lib/pgsql/14/data --repo2-azure-account=<redacted> --repo2-azure-container=demo-container --repo2-azure-key=<redacted> --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo2-path=/demo-repo --repo2-type=azure --stanza=demo
P00   INFO: stanza-create for stanza 'demo' on repo1
P00   INFO: stanza-create for stanza 'demo' on repo2
P00   INFO: stanza-create command end: completed successfully

Azureではファイル作成に比較的時間がかかるため、ファイルのバンドル化 を有効にするとbackup/restoreの性能が向上します。

pg-primary ⇒ デモクラスターをバックアップする

sudo -u postgres pgbackrest --stanza=demo --repo=2 \
       --log-level-console=info backup
P00   INFO: backup command begin 2.59.3: --exec-id=4667-a84748a5 --log-level-console=info --no-log-timestamp --pg1-path=/var/lib/pgsql/14/data --repo=2 --repo2-azure-account=<redacted> --repo2-azure-container=demo-container --repo2-azure-key=<redacted> --repo1-block --repo1-bundle --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo2-path=/demo-repo --repo1-retention-diff=2 --repo1-retention-full=2 --repo2-retention-full=4 --repo2-type=azure --stanza=demo --start-fast
P00   WARN: no prior backup exists, incr backup has been changed to full
P00   INFO: execute backup start: backup begins after the requested immediate checkpoint completes
P00   INFO: backup start archive = 00000005000000000000001B, lsn = 0/1B000028
       [filtered 3 lines of output]
P00   INFO: check archive for segment(s) 00000005000000000000001B:00000005000000000000001B
P00   INFO: new backup label = 20261002-185802F
P00   INFO: full backup size = 33.5MB, file total = 1249
P00   INFO: backup command end: completed successfully
P00   INFO: expire command begin 2.59.3: --exec-id=4667-a84748a5 --log-level-console=info --no-log-timestamp --repo=2 --repo2-azure-account=<redacted> --repo2-azure-container=demo-container --repo2-azure-key=<redacted> --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo2-path=/demo-repo --repo1-retention-diff=2 --repo1-retention-full=2 --repo2-retention-full=4 --repo2-type=azure --stanza=demo

S3互換オブジェクトストアのサポート

pgBackRestは、S3互換オブジェクトストアへのリポジトリの配置をサポートします。リポジトリを保存するバケットは事前に作成する必要があり、pgBackRestは自動作成しません。バケットのルート(/)にもリポジトリを配置できますが、通常はサブパスに配置するほうが適しています。これにより、オブジェクトストアのログなどのデータも競合せずに同じバケットに保存できます。

pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ S3を設定する

[demo]

pg1-path=/var/lib/pgsql/14/data



[global]

repo1-block=y

repo1-bundle=y

repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO

repo1-cipher-type=aes-256-cbc

repo1-path=/var/lib/pgbackrest

repo1-retention-diff=2

repo1-retention-full=2

repo2-azure-account=pgbackrest

repo2-azure-container=demo-container

repo2-azure-key=YXpLZXk=

repo2-path=/demo-repo

repo2-retention-full=4

repo2-type=azure

repo3-path=/demo-repo

repo3-retention-full=4

repo3-s3-bucket=demo-bucket

repo3-s3-endpoint=s3.us-east-1.amazonaws.com

repo3-s3-key=accessKey1

repo3-s3-key-secret=verySecretKey1

repo3-s3-region=us-east-1

repo3-type=s3

start-fast=y



[global:archive-push]

compress-level=3

注:

リージョンとエンドポイントは、バケットの配置場所に合わせて設定する必要があります。ここに示す値はus-east-1リージョン用です。

pgBackRestを実行するロールを作成し、バケットの権限は可能な限り制限することをお勧めします。AWSのインスタンスにロールが関連付けられている場合、repo3-s3-key-type=autoにするとpgBackRestが一時的な認証情報を自動取得するため、/etc/pgbackrest/pgbackrest.confにキーを明示的に設定する必要はありません。

このAmazon S3ポリシーの例では、すべての読み取りと書き込みを、指定のバケットとリポジトリパスに制限します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::demo-bucket"
            ],
            "Condition": {
                "StringEquals": {
                    "s3:prefix": [
                        "",
                        "demo-repo"
                    ],
                    "s3:delimiter": [
                        "/"
                    ]
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::demo-bucket"
            ],
            "Condition": {
                "StringLike": {
                    "s3:prefix": [
                        "demo-repo/*"
                    ]
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:PutObjectTagging",
                "s3:GetObject",
                "s3:GetObjectVersion",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::demo-bucket/demo-repo/*"
            ]
        }
    ]
}

コマンドは、リポジトリをローカルディスクに保存した場合とまったく同じように実行します。

pg-primary ⇒ stanzaを作成する

sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stanza-create
       [filtered 4 lines of output]
P00   INFO: stanza 'demo' already exists on repo2 and is valid
P00   INFO: stanza-create for stanza 'demo' on repo3
P00   INFO: stanza-create command end: completed successfully

S3ではファイル作成に比較的時間がかかるため、ファイルのバンドル化 を有効にするとbackup/restoreの性能が向上します。

pg-primary ⇒ デモクラスターをバックアップする

sudo -u postgres pgbackrest --stanza=demo --repo=3 \
       --log-level-console=info backup
P00   INFO: backup command begin 2.59.3: --exec-id=5060-13323a52 --log-level-console=info --no-log-timestamp --pg1-path=/var/lib/pgsql/14/data --repo=3 --repo2-azure-account=<redacted> --repo2-azure-container=demo-container --repo2-azure-key=<redacted> --repo1-block --repo1-bundle --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo2-path=/demo-repo --repo3-path=/demo-repo --repo1-retention-diff=2 --repo1-retention-full=2 --repo2-retention-full=4 --repo3-retention-full=4 --repo3-s3-bucket=demo-bucket --repo3-s3-endpoint=s3.us-east-1.amazonaws.com --repo3-s3-key=<redacted> --repo3-s3-key-secret=<redacted> --repo3-s3-region=us-east-1 --repo2-type=azure --repo3-type=s3 --stanza=demo --start-fast
P00   WARN: no prior backup exists, incr backup has been changed to full
P00   INFO: execute backup start: backup begins after the requested immediate checkpoint completes
P00   INFO: backup start archive = 00000005000000000000001D, lsn = 0/1D000028
       [filtered 3 lines of output]
P00   INFO: check archive for segment(s) 00000005000000000000001D:00000005000000000000001D
P00   INFO: new backup label = 20261002-185820F
P00   INFO: full backup size = 33.5MB, file total = 1249
P00   INFO: backup command end: completed successfully
P00   INFO: expire command begin 2.59.3: --exec-id=5060-13323a52 --log-level-console=info --no-log-timestamp --repo=3 --repo2-azure-account=<redacted> --repo2-azure-container=demo-container --repo2-azure-key=<redacted> --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo2-path=/demo-repo --repo3-path=/demo-repo --repo1-retention-diff=2 --repo1-retention-full=2 --repo2-retention-full=4 --repo3-retention-full=4 --repo3-s3-bucket=demo-bucket --repo3-s3-endpoint=s3.us-east-1.amazonaws.com --repo3-s3-key=<redacted> --repo3-s3-key-secret=<redacted> --repo3-s3-region=us-east-1 --repo2-type=azure --repo3-type=s3 --stanza=demo

SFTPのサポート

pgBackRestは、SFTPホストへのリポジトリの配置をサポートします。SFTPのファイル転送は比較的遅いため、process-maxを増やしてファイル転送を並列化するとコマンドの性能が向上します。

pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ SFTPを設定する

[demo]

pg1-path=/var/lib/pgsql/14/data



[global]

process-max=4

repo1-block=y

repo1-bundle=y

repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO

repo1-cipher-type=aes-256-cbc

repo1-path=/var/lib/pgbackrest

repo1-retention-diff=2

repo1-retention-full=2

repo2-azure-account=pgbackrest

repo2-azure-container=demo-container

repo2-azure-key=YXpLZXk=

repo2-path=/demo-repo

repo2-retention-full=4

repo2-type=azure

repo3-path=/demo-repo

repo3-retention-full=4

repo3-s3-bucket=demo-bucket

repo3-s3-endpoint=s3.us-east-1.amazonaws.com

repo3-s3-key=accessKey1

repo3-s3-key-secret=verySecretKey1

repo3-s3-region=us-east-1

repo3-type=s3

repo4-bundle=y

repo4-path=/demo-repo

repo4-sftp-host=sftp-server

repo4-sftp-host-key-hash-type=sha1

repo4-sftp-host-user=pgbackrest

repo4-sftp-private-key-file=/var/lib/pgsql/.ssh/id_rsa_sftp

repo4-sftp-public-key-file=/var/lib/pgsql/.ssh/id_rsa_sftp.pub

repo4-type=sftp

start-fast=y



[global:archive-push]

compress-level=3

SFTPを利用する場合、libssh2がOpenSSHに対してコンパイルされていれば、repo4-sftp-public-key-fileは省略できます。

pg-primary ⇒ SFTPバックアップ用のSSHキーペアを生成する

sudo -u postgres mkdir -m 750 -p /var/lib/pgsql/.ssh
sudo -u postgres ssh-keygen -f /var/lib/pgsql/.ssh/id_rsa_sftp \
       -t rsa -b 4096 -N "" -m PEM

sftp-server ⇒ pg-primaryのSFTPバックアップ用公開鍵をsftp-serverにコピーする

sudo -u pgbackrest mkdir -m 750 -p /home/pgbackrest/.ssh
(sudo ssh root@pg-primary cat /var/lib/pgsql/.ssh/id_rsa_sftp.pub) | \
       sudo -u pgbackrest tee -a /home/pgbackrest/.ssh/authorized_keys

コマンドは、リポジトリをローカルディスクに保存した場合とまったく同じように実行します。

pg-primary ⇒ repo4-sftp-host-key-check-typeのデフォルトが「strict」のため、sftp-serverのフィンガープリントをknown_hostsファイルに追加する

ssh-keyscan -H sftp-server >> /var/lib/pgsql/.ssh/known_hosts 2>/dev/null

pg-primary ⇒ stanzaを作成する

sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stanza-create
       [filtered 6 lines of output]
P00   INFO: stanza 'demo' already exists on repo3 and is valid
P00   INFO: stanza-create for stanza 'demo' on repo4
P00   INFO: stanza-create command end: completed successfully

pg-primary ⇒ デモクラスターをバックアップする

sudo -u postgres pgbackrest --stanza=demo --repo=4 \
       --log-level-console=info backup
P00   INFO: backup command begin 2.59.3: --exec-id=5361-dd15b633 --log-level-console=info --no-log-timestamp --pg1-path=/var/lib/pgsql/14/data --process-max=4 --repo=4 --repo2-azure-account=<redacted> --repo2-azure-container=demo-container --repo2-azure-key=<redacted> --repo1-block --repo1-bundle --repo4-bundle --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo2-path=/demo-repo --repo3-path=/demo-repo --repo4-path=/demo-repo --repo1-retention-diff=2 --repo1-retention-full=2 --repo2-retention-full=4 --repo3-retention-full=4 --repo3-s3-bucket=demo-bucket --repo3-s3-endpoint=s3.us-east-1.amazonaws.com --repo3-s3-key=<redacted> --repo3-s3-key-secret=<redacted> --repo3-s3-region=us-east-1 --repo4-sftp-host=sftp-server --repo4-sftp-host-key-hash-type=sha1 --repo4-sftp-host-user=pgbackrest --repo4-sftp-private-key-file=/var/lib/pgsql/.ssh/id_rsa_sftp --repo4-sftp-public-key-file=/var/lib/pgsql/.ssh/id_rsa_sftp.pub --repo2-type=azure --repo3-type=s3 --repo4-type=sftp --stanza=demo --start-fast
P00   WARN: option 'repo4-retention-full' is not set for 'repo4-retention-full-type=count', the repository may run out of space
            HINT: to retain full backups indefinitely (without warning), set option 'repo4-retention-full' to the maximum.
P00   WARN: no prior backup exists, incr backup has been changed to full
P00   INFO: execute backup start: backup begins after the requested immediate checkpoint completes
P00   INFO: backup start archive = 00000005000000000000001E, lsn = 0/1E000028
       [filtered 3 lines of output]
P00   INFO: check archive for segment(s) 00000005000000000000001E:00000005000000000000001F
P00   INFO: new backup label = 20261002-185837F
P00   INFO: full backup size = 33.5MB, file total = 1249
P00   INFO: backup command end: completed successfully
P00   INFO: expire command begin 2.59.3: --exec-id=5361-dd15b633 --log-level-console=info --no-log-timestamp --repo=4 --repo2-azure-account=<redacted> --repo2-azure-container=demo-container --repo2-azure-key=<redacted> --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo2-path=/demo-repo --repo3-path=/demo-repo --repo4-path=/demo-repo --repo1-retention-diff=2 --repo1-retention-full=2 --repo2-retention-full=4 --repo3-retention-full=4 --repo3-s3-bucket=demo-bucket --repo3-s3-endpoint=s3.us-east-1.amazonaws.com --repo3-s3-key=<redacted> --repo3-s3-key-secret=<redacted> --repo3-s3-region=us-east-1 --repo4-sftp-host=sftp-server --repo4-sftp-host-key-hash-type=sha1 --repo4-sftp-host-user=pgbackrest --repo4-sftp-private-key-file=/var/lib/pgsql/.ssh/id_rsa_sftp --repo4-sftp-public-key-file=/var/lib/pgsql/.ssh/id_rsa_sftp.pub --repo2-type=azure --repo3-type=s3 --repo4-type=sftp --stanza=demo
P00   INFO: expire command end: completed successfully

GCS互換オブジェクトストアのサポート

pgBackRestは、GCS互換オブジェクトストアへのリポジトリの配置をサポートします。リポジトリを保存するバケットは事前に作成する必要があり、pgBackRestは自動作成しません。バケットのルート(/)にもリポジトリを配置できますが、通常はサブパスに配置するほうが適しています。これにより、オブジェクトストアのログなどのデータも競合せずに同じバケットに保存できます。

pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ GCSを設定する

[demo]

pg1-path=/var/lib/pgsql/14/data



[global]

process-max=4

repo1-block=y

repo1-bundle=y

repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO

repo1-cipher-type=aes-256-cbc

repo1-path=/var/lib/pgbackrest

repo1-retention-diff=2

repo1-retention-full=2

repo2-azure-account=pgbackrest

repo2-azure-container=demo-container

repo2-azure-key=YXpLZXk=

repo2-path=/demo-repo

repo2-retention-full=4

repo2-type=azure

repo3-path=/demo-repo

repo3-retention-full=4

repo3-s3-bucket=demo-bucket

repo3-s3-endpoint=s3.us-east-1.amazonaws.com

repo3-s3-key=accessKey1

repo3-s3-key-secret=verySecretKey1

repo3-s3-region=us-east-1

repo3-type=s3

repo4-bundle=y

repo4-path=/demo-repo

repo4-sftp-host=sftp-server

repo4-sftp-host-key-hash-type=sha1

repo4-sftp-host-user=pgbackrest

repo4-sftp-private-key-file=/var/lib/pgsql/.ssh/id_rsa_sftp

repo4-sftp-public-key-file=/var/lib/pgsql/.ssh/id_rsa_sftp.pub

repo4-type=sftp

repo5-gcs-bucket=demo-bucket

repo5-gcs-key=/etc/pgbackrest/gcs-key.json

repo5-path=/demo-repo

repo5-type=gcs

start-fast=y



[global:archive-push]

compress-level=3

GCEで実行する場合は、repo5-gcs-key-type=autoを設定すると、インスタンスのサービスアカウントを使用して自動認証します。

コマンドは、リポジトリをローカルディスクに保存した場合とまったく同じように実行します。

GCSではファイル作成に比較的時間がかかるため、ファイルのバンドル化 を有効にするとbackup/restoreの性能が向上します。


リポジトリの目標時刻

目標時刻は、バージョン管理されたストレージ上のリポジトリをコマンドが読み込む際の時点を指定します。これにより、ある時点のリポジトリを読み込み、ユーザーの誤操作やマルウェアによって削除または破損されたデータを復元できます。

S3、GCS、Azureはストレージのバージョン管理に対応していますが、通常はデフォルトで有効になっていません。バージョン管理に加えて、S3ではオブジェクトロック、GCSやAzureでは論理削除を有効にすると有用な場合があります。

repo-target-timeオプションを指定する場合は、repoオプションも指定する必要があります。すべてのリポジトリ種類がバージョン管理に対応するとは限らず、一般にリカバリーでは単一のリポジトリを対象にするのが妥当です。

ストレージのタイムスタンプとの比較は、指定したタイムスタンプ以下(<=)で行われ、指定したタイムスタンプのミリ秒部分は切り捨てられます。

この機能を示すため、S3リポジトリのdemostanzaを削除します。

pg-primary ⇒ S3リポジトリのstanzaを削除する

sudo systemctl stop postgresql-14.service
sudo -u postgres pgbackrest --stanza=demo stop
sudo -u postgres pgbackrest --stanza=demo --repo=3 stanza-delete

stanzaを削除すると、infoコマンドはリポジトリがエラー状態であることを示します。

pg-primary ⇒ infoでエラーを確認する

sudo -u postgres pgbackrest --stanza=demo --repo=3 info
stanza: demo
    status: error (missing stanza path)

ただし、ストレージはバージョン管理されているため、stanzaの削除前の時点のリポジトリを確認できます。状況によっては目標時刻の特定が難しい場合もありますが、この例ではbackup.infoの削除時刻を調べることで、stanzaが削除された時刻を特定できます。

pg-primary ⇒ バケット内のbackup.infoのバージョンを一覧表示する

key=demo-repo/backup/demo/backup.info; \
       aws s3api list-object-versions --bucket demo-bucket \
       --prefix $key --output table \
       --query "sort_by([Versions[?Key=='$key'].{Action:'PUT', \
       Modified:LastModified,Object:Key}, \
       DeleteMarkers[?Key=='$key'].{Action:'DELETE', \
       Modified:LastModified,Object:Key}][],&Modified)"
-------------------------------------------------------------------------------------
|                                ListObjectVersions                                 |
+--------+------------------------------------+-------------------------------------+
| Action |             Modified               |               Object                |
+--------+------------------------------------+-------------------------------------+
|  PUT   |  2026-10-02T18:58:20.631000+00:00  |  demo-repo/backup/demo/backup.info  |
|  PUT   |  2026-10-02T18:58:33.900000+00:00  |  demo-repo/backup/demo/backup.info  |
|  DELETE|  2026-10-02T18:58:45.634000+00:00  |  demo-repo/backup/demo/backup.info  |
+--------+------------------------------------+-------------------------------------+

これで、目標時刻を指定してinfoコマンドを実行すると、削除前のリポジトリを表示できます。

pg-primary ⇒ 目標時刻を指定してinfoを実行する

sudo -u postgres pgbackrest --stanza=demo --repo=3 \
       --repo-target-time="2026-10-02 18:58:34+00" info
       [filtered 5 lines of output]
        wal archive min/max (14): 00000005000000000000001C/00000005000000000000001D

        full backup: 20261002-185820F
            timestamp start/stop: 2026-10-02 18:58:20+00 / 2026-10-02 18:58:33+00
            wal start/stop: 00000005000000000000001D / 00000005000000000000001D
            repo3: backup set size: 4.2MB, backup size: 4.2MB

必要なバックアップがinfoコマンドで表示されれば、同じ目標時刻を使ってリストアできます。

pg-primary ⇒ 目標時刻を指定してリストアする

sudo -u postgres pgbackrest --stanza=demo --repo=3 --delta \
       --repo-target-time="2026-10-02 18:58:34+00" --log-level-console=info restore
P00   INFO: restore command begin 2.59.3: --delta --exec-id=5686-f718513c --log-level-console=info --no-log-timestamp --pg1-path=/var/lib/pgsql/14/data --process-max=4 --repo=3 --repo2-azure-account=<redacted> --repo2-azure-container=demo-container --repo2-azure-key=<redacted> --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo5-gcs-bucket=demo-bucket --repo5-gcs-key=<redacted> --repo1-path=/var/lib/pgbackrest --repo2-path=/demo-repo --repo3-path=/demo-repo --repo4-path=/demo-repo --repo5-path=/demo-repo --repo3-s3-bucket=demo-bucket --repo3-s3-endpoint=s3.us-east-1.amazonaws.com --repo3-s3-key=<redacted> --repo3-s3-key-secret=<redacted> --repo3-s3-region=us-east-1 --repo4-sftp-host=sftp-server --repo4-sftp-host-key-hash-type=sha1 --repo4-sftp-host-user=pgbackrest --repo4-sftp-private-key-file=/var/lib/pgsql/.ssh/id_rsa_sftp --repo4-sftp-public-key-file=/var/lib/pgsql/.ssh/id_rsa_sftp.pub --repo-target-time="2026-10-02 18:58:34+00" --repo2-type=azure --repo3-type=s3 --repo4-type=sftp --repo5-type=gcs --stanza=demo
P00   INFO: repo3: restore backup set 20261002-185820F, recovery will start at 2026-10-02 18:58:20
P00   INFO: remove invalid files/links/paths from '/var/lib/pgsql/14/data'
P00   INFO: write updated /var/lib/pgsql/14/data/postgresql.auto.conf
       [filtered 2 lines of output]
sudo systemctl start postgresql-14.service

専用リポジトリホスト

クイックスタート で説明した構成は単純な構成に適していますが、企業での構成では通常、バックアップとWALアーカイブファイルを保存する専用リポジトリホストを用意します。これにより、バックアップとWALアーカイブをデータベースサーバーから分離し、データベースホストの障害による影響を減らせます。それでも、従来のバックアップソフトウェアでリポジトリホストをバックアップすることをお勧めします。

PostgreSQLホストでは、pg1-pathをローカルのPostgreSQLクラスターのパスにする必要があり、pg1-hostは設定しないことをお勧めします。リポジトリホストを設定する際は、pgbackrest設定ファイルのpg-hostオプションで、プライマリーホストとスタンバイホスト(存在する場合)への接続を設定する必要があります。複数のPostgreSQLホストを認識するpgbackrest設定は、リポジトリホストのものだけにします。順序は関係なく、たとえばpg1-path/pg1-hostとpg2-path/pg2-hostは、どちらをプライマリーまたはスタンバイにしてもかまいません。

インストール

クラスターのバックアップを保存するため、repositoryという新しいホストを作成します。

注:

リポジトリホストにインストールするpgBackRestのバージョンは、PostgreSQLホストのバージョンと完全に一致する必要があります。

pgBackRestリポジトリの所有者として、pgbackrestユーザーを作成します。どのユーザーでもリポジトリの所有者にできますが、混乱を避けるため、postgresが存在しても使用しないことをお勧めします。

注:

pgBackRestをパッケージからインストールすると、/etc/logrotate.d/pgbackrestのようなlogrotate設定が付属し、suディレクティブ(例:su postgres postgres)により特定のユーザーでログをローテーションする場合があります。/var/log/pgbackrestのファイルは、pgBackRestを実行するユーザー(ここではpgbackrest)が所有するため、suディレクティブもそのユーザーに合わせて更新する必要があります。そうしないとlogrotateが権限エラーで失敗します。

repository ⇒ pgbackrestユーザーを作成する

sudo groupadd pgbackrest
sudo adduser -gpgbackrest -n pgbackrest

pgBackRestはソースからビルドするより、パッケージからインストールすることをお勧めします。パッケージからインストールする場合、このセクションの残りの手順は通常不要ですが、パッケージが一部のディレクトリを作成しなかったり、誤った権限を設定したりする可能性があります。その場合は、手動でディレクトリを作成したり権限を更新したりする必要がある場合があります。

pgBackRestのRHELパッケージはyum.postgresql.org から入手できます。

使用するディストリビューションやバージョン向けのパッケージがない場合は、ソースからビルド し、ここに示す手順で手動インストールできます。

repository ⇒ 依存パッケージをインストールする

sudo yum install postgresql-libs libssh2

repository ⇒ ビルド用ホストからpgBackRestバイナリをコピーする

sudo scp build:/build/pgbackrest/src/pgbackrest /usr/bin
sudo chmod 755 /usr/bin/pgbackrest

pgBackRestには、ログディレクトリ、設定ディレクトリ、設定ファイルが必要です。

repository ⇒ pgBackRestの設定ファイルとディレクトリを作成する

sudo mkdir -p -m 770 /var/log/pgbackrest
sudo chown pgbackrest:pgbackrest /var/log/pgbackrest
sudo mkdir -p /etc/pgbackrest
sudo mkdir -p /etc/pgbackrest/conf.d
sudo touch /etc/pgbackrest/pgbackrest.conf
sudo chmod 640 /etc/pgbackrest/pgbackrest.conf
sudo chown pgbackrest:pgbackrest /etc/pgbackrest/pgbackrest.conf

repository ⇒ pgBackRestのリポジトリを作成する

sudo mkdir -p /var/lib/pgbackrest
sudo chmod 750 /var/lib/pgbackrest
sudo chown pgbackrest:pgbackrest /var/lib/pgbackrest

設定

pgBackRestは、クライアント証明書付きのTLSを使用してホスト間で通信できます。SSHも使用できます。SSHの設定 を参照してください。

pgBackRestのクライアント証明書とサーバー証明書は、PostgreSQLと同じ方法で生成することを想定しています。証明書の生成手順の詳細はTLSによる安全なTCP/IP接続 を参照してください。

リポジトリホストには、pg-primaryのホスト名、ユーザー、データベースパスを設定する必要があります。後でスタンバイを追加できるよう、プライマリーはpg1として設定します。

repository:/etc/pgbackrest/pgbackrest.conf ⇒ pg1-host/pg1-host-userとpg1-pathを設定する

[demo]

pg1-host=pg-primary

pg1-host-ca-file=/etc/pgbackrest/cert/ca.crt

pg1-host-cert-file=/etc/pgbackrest/cert/client.crt

pg1-host-key-file=/etc/pgbackrest/cert/client.key

pg1-host-type=tls

pg1-path=/var/lib/pgsql/14/data



[global]

repo1-path=/var/lib/pgbackrest

repo1-retention-full=2

start-fast=y

tls-server-address=*

tls-server-auth=pgbackrest-client=*

tls-server-ca-file=/etc/pgbackrest/cert/ca.crt

tls-server-cert-file=/etc/pgbackrest/cert/server.crt

tls-server-key-file=/etc/pgbackrest/cert/server.key

データベースホストには、リポジトリのホスト名とユーザーを設定する必要があります。repo1-host-userオプションのデフォルトはpgbackrestです。postgresユーザーがリポジトリホストでリストアを行う場合は、同じpostgresユーザーにバックアップも許可しないことをお勧めします。ただし、postgresユーザーがpgbackrestユーザーと同じグループに属していれば、リポジトリを直接読み取ることはできます。

pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ repo1-host/repo1-host-userを設定する

[demo]

pg1-path=/var/lib/pgsql/14/data



[global]

log-level-file=detail

repo1-host=repository

repo1-host-ca-file=/etc/pgbackrest/cert/ca.crt

repo1-host-cert-file=/etc/pgbackrest/cert/client.crt

repo1-host-key-file=/etc/pgbackrest/cert/client.key

repo1-host-type=tls

tls-server-address=*

tls-server-auth=pgbackrest-client=demo

tls-server-ca-file=/etc/pgbackrest/cert/ca.crt

tls-server-cert-file=/etc/pgbackrest/cert/server.crt

tls-server-key-file=/etc/pgbackrest/cert/server.key

PostgreSQLの設定はアーカイブの設定 を参照してください。

コマンドの実行方法は単一ホスト構成と同じですが、backupやexpireなど、一部のコマンドはデータベースホストではなくリポジトリホストから実行します。

TLSサーバーの設定

各ホストで、pgBackRestのTLSサーバーを設定して起動する必要があります。

repository ⇒ pgBackRestサーバーを設定する

sudo cat /etc/systemd/system/pgbackrest.service
[Unit]
Description=pgBackRest Server
After=network.target
StartLimitIntervalSec=0

[Service]
Type=notify
Restart=always
RestartSec=1
User=pgbackrest
ExecStart=/usr/bin/pgbackrest server
ExecStartPost=/bin/sleep 3
ExecStartPost=/bin/bash -c "[ ! -z $MAINPID ]"
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target
sudo systemctl enable pgbackrest
sudo systemctl start pgbackrest

pg-primary ⇒ pgBackRestサーバーを設定する

sudo cat /etc/systemd/system/pgbackrest.service
[Unit]
Description=pgBackRest Server
After=network.target
StartLimitIntervalSec=0

[Service]
Type=notify
Restart=always
RestartSec=1
User=postgres
ExecStart=/usr/bin/pgbackrest server
ExecStartPost=/bin/sleep 3
ExecStartPost=/bin/bash -c "[ ! -z $MAINPID ]"
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target
sudo systemctl enable pgbackrest
sudo systemctl start pgbackrest

stanzaの作成と確認

新しいリポジトリにstanzaを作成します。

repository ⇒ stanzaを作成する

sudo -u pgbackrest pgbackrest --stanza=demo stanza-create

データベースホストとリポジトリホストの両方で、設定が正しいことを確認します。checkコマンドの詳細は設定の確認 を参照してください。

pg-primary ⇒ 設定を確認する

sudo -u postgres pgbackrest --stanza=demo check

repository ⇒ 設定を確認する

sudo -u pgbackrest pgbackrest --stanza=demo check

バックアップの実行

PostgreSQLクラスターのバックアップを行うには、リポジトリホストでpgBackRestのbackupコマンドを実行します。

repository ⇒ デモクラスターをバックアップする

sudo -u pgbackrest pgbackrest --stanza=demo backup
P00   WARN: no prior backup exists, incr backup has been changed to full

リポジトリホストに新しいリポジトリを作成したため、増分バックアップをフルバックアップに変更するという警告が表示されました。

バックアップのリストア

PostgreSQLクラスターをリストアするには、データベースホストでpgBackRestのrestoreコマンドを実行します。

pg-primary ⇒ デモクラスターを停止し、リストアしてPostgreSQLを再起動する

sudo systemctl stop postgresql-14.service
sudo -u postgres pgbackrest --stanza=demo --delta restore
sudo systemctl start postgresql-14.service

バックアップとリストアの並列実行

pgBackRestは並列処理により、圧縮と転送の性能を向上させます。この機能で使用するプロセス数は、--process-maxオプションで設定します。

通常、backupコマンドで使用するCPUは、利用可能なCPUの25%以内に抑えることをお勧めします。バックアップは定期的に行っていればそれほど高速である必要はなく、できる限りデータベースの性能に影響を与えないようにすることが望まれます。

restoreコマンドでは利用可能なすべてのCPUを使用でき、そうすることをお勧めします。リストア中はPostgreSQLクラスターが停止し、通常はホストでほかの重要な処理が行われていないためです。ホストに複数のクラスターがある場合は、それを考慮してリストアの並列度を設定してください。

repository ⇒ 単一プロセスでバックアップを実行する

sudo -u pgbackrest pgbackrest --stanza=demo --type=full backup

repository:/etc/pgbackrest/pgbackrest.conf ⇒ 複数のbackupプロセスを使用するようpgBackRestを設定する

[demo]

pg1-host=pg-primary

pg1-host-ca-file=/etc/pgbackrest/cert/ca.crt

pg1-host-cert-file=/etc/pgbackrest/cert/client.crt

pg1-host-key-file=/etc/pgbackrest/cert/client.key

pg1-host-type=tls

pg1-path=/var/lib/pgsql/14/data



[global]

process-max=3

repo1-path=/var/lib/pgbackrest

repo1-retention-full=2

start-fast=y

tls-server-address=*

tls-server-auth=pgbackrest-client=*

tls-server-ca-file=/etc/pgbackrest/cert/ca.crt

tls-server-cert-file=/etc/pgbackrest/cert/server.crt

tls-server-key-file=/etc/pgbackrest/cert/server.key

repository ⇒ 複数プロセスでバックアップを実行する

sudo -u pgbackrest pgbackrest --stanza=demo --type=full backup

repository ⇒ デモクラスターのバックアップ情報を取得する

sudo -u pgbackrest pgbackrest info
stanza: demo
    status: ok
    cipher: none

    db (current)
        wal archive min/max (14): 000000070000000000000023/000000070000000000000025

        full backup: 20261002-185937F
            timestamp start/stop: 2026-10-02 18:59:37+00 / 2026-10-02 18:59:40+00
            wal start/stop: 000000070000000000000023 / 000000070000000000000023
            database size: 33.5MB, database backup size: 33.5MB
            repo1: backup set size: 4.2MB, backup size: 4.2MB

        full backup: 20261002-185941F
            timestamp start/stop: 2026-10-02 18:59:41+00 / 2026-10-02 18:59:43+00
            wal start/stop: 000000070000000000000024 / 000000070000000000000025
            database size: 33.5MB, database backup size: 33.5MB
            repo1: backup set size: 4.2MB, backup size: 4.2MB

複数プロセスを使うことで、最後のバックアップの性能は向上しているはずです。非常に小さなバックアップでは違いが明確でない場合もありますが、データベースが大きくなるほど短縮できる時間も増えます。


開始と停止

テストのためにスタンバイを昇格させたり、本番バックアップからテスト用クラスターをリストアしたりする場合、それらのクラスターがpgBackRestリポジトリに書き込めないようにしておくことをお勧めします。これはstopコマンドで行えます。

stopによってブロックされる書き込みコマンドは、archive-push、backup、expire、stanza-create、stanza-upgradeです。stanza-deleteはこの規則の例外です(詳細はstanzaの削除 を参照)。

pg-primary ⇒ pgBackRestの書き込みコマンドを停止する

sudo -u postgres pgbackrest stop

新たなpgBackRestの書き込みコマンドは実行されなくなります。

repository ⇒ バックアップを試みる

sudo -u pgbackrest pgbackrest --stanza=demo backup
P00   WARN: unable to check pg1: [StopError] raised from remote-0 tls protocol on 'pg-primary': stop file exists for all stanzas
P00  ERROR: [056]: unable to find primary cluster - cannot proceed
            HINT: are all available clusters in recovery?

現在実行中のpgBackRest書き込みコマンドも終了するには、--forceオプションを指定します。非同期のarchive-getも対象に含まれますが、PostgreSQLが必要とすれば再び実行されます。pgBackRestがすでに停止している場合、再度停止すると警告が出ます。

pg-primary ⇒ pgBackRestのサービスを再度停止する

sudo -u postgres pgbackrest stop
P00   WARN: stop file already exists for all stanzas

pgBackRestの書き込みコマンドを再び許可するには、startコマンドを使用します。停止前に進行中だった書き込みコマンドが自動で再開されることはありませんが、新たに開始することは許可されます。

pg-primary ⇒ pgBackRestの書き込みコマンドを開始する

sudo -u postgres pgbackrest start

単一のstanzaについてのみpgBackRestを停止することもできます。

pg-primary ⇒ demostanzaのpgBackRest書き込みコマンドを停止する

sudo -u postgres pgbackrest --stanza=demo stop

指定したstanzaでは、新たなpgBackRestの書き込みコマンドは実行されなくなります。

repository ⇒ バックアップを試みる

sudo -u pgbackrest pgbackrest --stanza=demo backup
P00   WARN: unable to check pg1: [StopError] raised from remote-0 tls protocol on 'pg-primary': stop file exists for stanza demo
P00  ERROR: [056]: unable to find primary cluster - cannot proceed
            HINT: are all available clusters in recovery?

単一のstanzaのpgBackRest書き込みコマンドを開始する場合も、stanzaを指定する必要があります。

pg-primary ⇒ demostanzaのpgBackRest書き込みコマンドを開始する

sudo -u postgres pgbackrest --stanza=demo start

レプリケーション

レプリケーションでは、単一のプライマリーからPostgreSQLクラスターの複数のコピー(スタンバイと呼びます)を作成できます。スタンバイは読み取り負荷の分散に利用でき、プライマリーホストの障害に備えた冗長性も提供します。

インストール

スタンバイを実行するため、pg-standbyという新しいホストを作成します。

pgBackRestはソースからビルドするより、パッケージからインストールすることをお勧めします。パッケージからインストールする場合、このセクションの残りの手順は通常不要ですが、パッケージが一部のディレクトリを作成しなかったり、誤った権限を設定したりする可能性があります。その場合は、手動でディレクトリを作成したり権限を更新したりする必要がある場合があります。

pgBackRestのRHELパッケージはyum.postgresql.org から入手できます。

使用するディストリビューションやバージョン向けのパッケージがない場合は、ソースからビルド し、ここに示す手順で手動インストールできます。

pg-standby ⇒ 依存パッケージをインストールする

sudo yum install postgresql-libs libssh2

pg-standby ⇒ ビルド用ホストからpgBackRestバイナリをコピーする

sudo scp build:/build/pgbackrest/src/pgbackrest /usr/bin
sudo chmod 755 /usr/bin/pgbackrest

pgBackRestには、ログディレクトリ、設定ディレクトリ、設定ファイルが必要です。

pg-standby ⇒ pgBackRestの設定ファイルとディレクトリを作成する

sudo mkdir -p -m 770 /var/log/pgbackrest
sudo chown postgres:postgres /var/log/pgbackrest
sudo mkdir -p /etc/pgbackrest
sudo mkdir -p /etc/pgbackrest/conf.d
sudo touch /etc/pgbackrest/pgbackrest.conf
sudo chmod 640 /etc/pgbackrest/pgbackrest.conf
sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf

ホットスタンバイ

ホットスタンバイは、WALアーカイブを使ってレプリケーションを行い、読み取り専用のクエリーを受け付けます。

pgBackRestの設定はpg-primaryとほぼ同じですが、WALストリームの末尾に達してもクラスターをリカバリーモードに保つため、リカバリーの種類にstandbyを使用します。

pg-standby:/etc/pgbackrest/pgbackrest.conf ⇒ スタンバイのpgBackRestを設定する

[demo]

pg1-path=/var/lib/pgsql/14/data



[global]

log-level-file=detail

repo1-host=repository

repo1-host-ca-file=/etc/pgbackrest/cert/ca.crt

repo1-host-cert-file=/etc/pgbackrest/cert/client.crt

repo1-host-key-file=/etc/pgbackrest/cert/client.key

repo1-host-type=tls

tls-server-address=*

tls-server-auth=pgbackrest-client=demo

tls-server-ca-file=/etc/pgbackrest/cert/ca.crt

tls-server-cert-file=/etc/pgbackrest/cert/server.crt

tls-server-key-file=/etc/pgbackrest/cert/server.key

pg-standby ⇒ pgBackRestサーバーを設定する

sudo cat /etc/systemd/system/pgbackrest.service
[Unit]
Description=pgBackRest Server
After=network.target
StartLimitIntervalSec=0

[Service]
Type=notify
Restart=always
RestartSec=1
User=postgres
ExecStart=/usr/bin/pgbackrest server
ExecStartPost=/bin/sleep 3
ExecStartPost=/bin/bash -c "[ ! -z $MAINPID ]"
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target
sudo systemctl enable pgbackrest
sudo systemctl start pgbackrest

PostgreSQLのリストア先パスを作成します。

pg-standby ⇒ PostgreSQLのパスを作成する

sudo -u postgres mkdir -p -m 700 /var/lib/pgsql/14/data

これでrestoreコマンドを使ってスタンバイを作成できます。

重要:

新しいプライマリーにする目的ではなく、レポート作成やテストなどのためにクラスターを昇格させる場合は、--archive-mode=offを使うか、postgresql.confにarchive_mode=offを設定してアーカイブを無効にしてください。無効にしないと、リポジトリに不要なWALが混入し、リストアが難しくなる可能性があります。

pg-standby ⇒ デモのスタンバイクラスターをリストアする

sudo -u postgres pgbackrest --stanza=demo --type=standby restore
sudo -u postgres cat /var/lib/pgsql/14/data/postgresql.auto.conf
# Do not edit this file manually!
# It will be overwritten by the ALTER SYSTEM command.

# Recovery settings generated by pgBackRest restore on 2026-10-02 18:57:00
restore_command = 'pgbackrest --stanza=demo archive-get %f "%p"'

# Recovery settings generated by pgBackRest restore on 2026-10-02 18:57:22
restore_command = 'pgbackrest --stanza=demo archive-get %f "%p"'

# Recovery settings generated by pgBackRest restore on 2026-10-02 18:57:47
restore_command = 'pgbackrest --stanza=demo archive-get %f "%p"'
# Removed by pgBackRest restore on 2026-10-02 18:58:52 # recovery_target_time = '2026-10-02 18:57:39.575732+00'
# Removed by pgBackRest restore on 2026-10-02 18:58:52 # recovery_target_action = 'promote'

# Recovery settings generated by pgBackRest restore on 2026-10-02 18:58:52
restore_command = 'pgbackrest --repo=3 --repo-target-time="2026-10-02 18:58:34+00" --stanza=demo archive-get %f "%p"'

# Recovery settings generated by pgBackRest restore on 2026-10-02 18:59:32
restore_command = 'pgbackrest --stanza=demo archive-get %f "%p"'

# Recovery settings generated by pgBackRest restore on 2026-10-02 19:00:04
restore_command = 'pgbackrest --stanza=demo archive-get %f "%p"'

この設定は、スタンバイがプライマリーに昇格した場合に備えたものです。

pg-standby:/var/lib/pgsql/14/data/postgresql.conf ⇒ PostgreSQLを設定する

archive_command = 'pgbackrest --stanza=demo archive-push %p'

archive_mode = on

log_filename = 'postgresql.log'

pg-standby ⇒ PostgreSQLを起動する

sudo systemctl start postgresql-14.service

PostgreSQLのログから、リカバリーについて有用な情報が得られます。特に、クラスターがスタンバイモードに入り、読み取り専用接続を受け付ける準備ができたことを確認してください。

pg-standby ⇒ PostgreSQLのログ出力で、成功を示すメッセージを確認する

sudo -u postgres cat /var/lib/pgsql/14/data/log/postgresql.log
       [filtered 4 lines of output]
LOG:  listening on Unix socket "/tmp/.s.PGSQL.5432"
LOG:  database system was interrupted; last known up at 2026-10-02 18:59:41 UTC
LOG:  entering standby mode
LOG:  restored log file "00000007.history" from archive
LOG:  restored log file "000000070000000000000024" from archive
       [filtered 3 lines of output]

レプリケーションが正しく設定されているかを簡単にテストするには、pg-primaryにテーブルを作成します。

pg-primary ⇒ プライマリーに新しいテーブルを作成する

sudo -u postgres psql -c " \
       begin; \
       create table replicated_table (message text); \
       insert into replicated_table values ('Important Data'); \
       commit; \
       select * from replicated_table";
       [filtered 4 lines of output]
    message
----------------
 Important Data
(1 row)

続いて、pg-standbyで同じテーブルにクエリーを実行します。

pg-standby ⇒ スタンバイで新しいテーブルにクエリーを実行する

sudo -u postgres psql -c "select * from replicated_table;"
ERROR:  relation "replicated_table" does not exist
LINE 1: select * from replicated_table;
                      ^

ここで失敗するのは、PostgreSQLがアーカイブからWALセグメントを取得してレプリケーションしているためです。変更を含むWALセグメントがpg-primaryから送信されるまで、その変更はスタンバイに現れません。

pg_switch_wal()を呼び出すと、現在のWALセグメントをアーカイブに手動で送信できます(以後の変更を格納する新しいWALセグメントが作成されます)。

pg-primary ⇒ pg_switch_wal()を呼び出す

sudo -u postgres psql -c "select *, current_timestamp from pg_switch_wal()";
 pg_switch_wal |       current_timestamp
---------------+-------------------------------
 0/2601E7C0    | 2026-10-02 19:00:10.880013+00
(1 row)

少し待つと、pg-standbyにテーブルが現れます。

pg-standby ⇒ スタンバイに新しいテーブルが存在することを確認する(数回の再試行が必要な場合があります)

sudo -u postgres psql -c " \
       select *, current_timestamp from replicated_table"
    message     |       current_timestamp
----------------+-------------------------------
 Important Data | 2026-10-02 19:00:11.954843+00
(1 row)

スタンバイがリポジトリにアクセスできる設定になっていることを確認します。

pg-standby ⇒ 設定を確認する

sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check
P00   INFO: check command begin 2.59.3: --exec-id=1250-e6a5e2d8 --log-level-console=info --log-level-file=detail --no-log-timestamp --pg1-path=/var/lib/pgsql/14/data --repo1-host=repository --repo1-host-ca-file=/etc/pgbackrest/cert/ca.crt --repo1-host-cert-file=/etc/pgbackrest/cert/client.crt --repo1-host-key-file=/etc/pgbackrest/cert/client.key --repo1-host-type=tls --stanza=demo
P00   INFO: check repo1 (standby)
P00   INFO: switch wal not performed because this is a standby
P00   INFO: check command end: completed successfully

ストリーミングレプリケーション

ストリーミングレプリケーションは、WALアーカイブだけに頼らず、プライマリーに直接接続して、プライマリーで変更が行われるとすぐに適用します。そのため、プライマリーとスタンバイの間の遅延が大幅に減ります。

ストリーミングレプリケーションには、レプリケーション権限を持つユーザーが必要です。

pg-primary ⇒ レプリケーション用ユーザーを作成する

sudo -u postgres psql -c " \
       create user replicator password 'jw8s0F4' replication";
CREATE ROLE

スタンバイがレプリケーション用ユーザーとして接続できるよう、pg_hba.confを更新する必要があります。以下のIPアドレスは、必ずpg-standbyの実際のIPアドレスに置き換えてください。pg_hba.confの変更後は再読み込みが必要です。

pg-primary ⇒ レプリケーション用ユーザーのエントリをpg_hba.confに作成する

sudo -u postgres sh -c 'echo \
       "host    replication     replicator      172.17.0.8/32           md5" \
       >> /var/lib/pgsql/14/data/pg_hba.conf'
sudo systemctl reload postgresql-14.service

スタンバイにはプライマリーへの接続方法を知らせる必要があるため、pgBackRestでprimary_conninfoを設定します。

pg-standby:/etc/pgbackrest/pgbackrest.conf ⇒ primary_conninfoを設定する

[demo]

pg1-path=/var/lib/pgsql/14/data

recovery-option=primary_conninfo=host=172.17.0.6 port=5432 user=replicator



[global]

log-level-file=detail

repo1-host=repository

repo1-host-ca-file=/etc/pgbackrest/cert/ca.crt

repo1-host-cert-file=/etc/pgbackrest/cert/client.crt

repo1-host-key-file=/etc/pgbackrest/cert/client.key

repo1-host-type=tls

tls-server-address=*

tls-server-auth=pgbackrest-client=demo

tls-server-ca-file=/etc/pgbackrest/cert/ca.crt

tls-server-cert-file=/etc/pgbackrest/cert/server.crt

tls-server-key-file=/etc/pgbackrest/cert/server.key

primary_conninfoにパスワードを設定することもできますが、.pgpassファイルのほうが柔軟かつ安全です。

pg-standby ⇒ .pgpassファイルにレプリケーションのパスワードを設定する。

sudo -u postgres sh -c 'echo \
       "172.17.0.6:*:replication:replicator:jw8s0F4" \
       >> /var/lib/pgsql/.pgpass'
sudo -u postgres chmod 600 /var/lib/pgsql/.pgpass

これでrestoreコマンドを使ってスタンバイを作成できます。

pg-standby ⇒ PostgreSQLを停止し、デモのスタンバイクラスターをリストアする

sudo systemctl stop postgresql-14.service
sudo -u postgres pgbackrest --stanza=demo --delta --type=standby restore
sudo -u postgres cat /var/lib/pgsql/14/data/postgresql.auto.conf
# Do not edit this file manually!
# It will be overwritten by the ALTER SYSTEM command.

# Recovery settings generated by pgBackRest restore on 2026-10-02 18:57:00
restore_command = 'pgbackrest --stanza=demo archive-get %f "%p"'

# Recovery settings generated by pgBackRest restore on 2026-10-02 18:57:22
restore_command = 'pgbackrest --stanza=demo archive-get %f "%p"'

# Recovery settings generated by pgBackRest restore on 2026-10-02 18:57:47
restore_command = 'pgbackrest --stanza=demo archive-get %f "%p"'
# Removed by pgBackRest restore on 2026-10-02 18:58:52 # recovery_target_time = '2026-10-02 18:57:39.575732+00'
# Removed by pgBackRest restore on 2026-10-02 18:58:52 # recovery_target_action = 'promote'

# Recovery settings generated by pgBackRest restore on 2026-10-02 18:58:52
restore_command = 'pgbackrest --repo=3 --repo-target-time="2026-10-02 18:58:34+00" --stanza=demo archive-get %f "%p"'

# Recovery settings generated by pgBackRest restore on 2026-10-02 18:59:32
restore_command = 'pgbackrest --stanza=demo archive-get %f "%p"'

# Recovery settings generated by pgBackRest restore on 2026-10-02 19:00:18
primary_conninfo = 'host=172.17.0.6 port=5432 user=replicator'
restore_command = 'pgbackrest --stanza=demo archive-get %f "%p"'

注:

primary_conninfoは、pgbackrest.confでrecovery-optionとして設定したため、postgresql.auto.confファイルに書き込まれています。既存のpostgresql.auto.confファイルをそのまま残したい場合は、restoreに--type=preserveオプションを指定できます。

RHELではデフォルトで、postgresql.confファイルをPostgreSQLのデータディレクトリに保存します。そのため、前回のリストアでpostgresql.confへの変更が上書きされており、hot_standbyを再度有効にする必要があります。別の対処方法として、postgresql.confをほかの場所に保存するか、pg-primaryホストでhot_standbyを有効にしておくこともできます。プライマリーではこの設定は無視されます。

pg-standby:/var/lib/pgsql/14/data/postgresql.conf ⇒ hot_standbyを有効にする

archive_command = 'pgbackrest --stanza=demo archive-push %p'

archive_mode = on

hot_standby = on

log_filename = 'postgresql.log'

pg-standby ⇒ PostgreSQLを起動する

sudo systemctl start postgresql-14.service

PostgreSQLのログで、ストリーミングレプリケーションが開始したことを確認できます。

pg-standby ⇒ PostgreSQLのログ出力で、成功を示すメッセージを確認する

sudo -u postgres cat /var/lib/pgsql/14/data/log/postgresql.log
       [filtered 12 lines of output]
LOG:  database system is ready to accept read-only connections
LOG:  restored log file "000000070000000000000026" from archive
LOG:  started streaming WAL from primary at 0/27000000 on timeline 7

これでpg-primaryにテーブルを作成すると、pg_switch_wal()を呼び出さなくても、pg-standbyにすぐ現れます。

pg-primary ⇒ プライマリーに新しいテーブルを作成する

sudo -u postgres psql -c " \
       begin; \
       create table stream_table (message text); \
       insert into stream_table values ('Important Data'); \
       commit; \
       select *, current_timestamp from stream_table";
       [filtered 4 lines of output]
    message     |       current_timestamp
----------------+-------------------------------
 Important Data | 2026-10-02 19:00:24.428653+00
(1 row)

pg-standby ⇒ スタンバイでテーブルにクエリーを実行する

sudo -u postgres psql -c " \
       select *, current_timestamp from stream_table"
    message     |       current_timestamp
----------------+-------------------------------
 Important Data | 2026-10-02 19:00:24.605628+00
(1 row)

複数のstanza

pgBackRestは複数のstanzaをサポートします。最も一般的な用途は、複数のstanzaでリポジトリホストを共有することです。

インストール

新しいプライマリーを実行するため、pg-altという新しいホストを作成します。

pgBackRestはソースからビルドするより、パッケージからインストールすることをお勧めします。パッケージからインストールする場合、このセクションの残りの手順は通常不要ですが、パッケージが一部のディレクトリを作成しなかったり、誤った権限を設定したりする可能性があります。その場合は、手動でディレクトリを作成したり権限を更新したりする必要がある場合があります。

pgBackRestのRHELパッケージはyum.postgresql.org から入手できます。

使用するディストリビューションやバージョン向けのパッケージがない場合は、ソースからビルド し、ここに示す手順で手動インストールできます。

pg-alt ⇒ 依存パッケージをインストールする

sudo yum install postgresql-libs libssh2

pg-alt ⇒ ビルド用ホストからpgBackRestバイナリをコピーする

sudo scp build:/build/pgbackrest/src/pgbackrest /usr/bin
sudo chmod 755 /usr/bin/pgbackrest

pgBackRestには、ログディレクトリ、設定ディレクトリ、設定ファイルが必要です。

pg-alt ⇒ pgBackRestの設定ファイルとディレクトリを作成する

sudo mkdir -p -m 770 /var/log/pgbackrest
sudo chown postgres:postgres /var/log/pgbackrest
sudo mkdir -p /etc/pgbackrest
sudo mkdir -p /etc/pgbackrest/conf.d
sudo touch /etc/pgbackrest/pgbackrest.conf
sudo chmod 640 /etc/pgbackrest/pgbackrest.conf
sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf

設定

pgBackRestの設定はpg-primaryとほぼ同じですが、demo-altstanzaを使うため、バックアップとアーカイブは別の場所に保存されます。

pg-alt:/etc/pgbackrest/pgbackrest.conf ⇒ 新しいプライマリーのpgBackRestを設定する

[demo-alt]

pg1-path=/var/lib/pgsql/14/data



[global]

log-level-file=detail

repo1-host=repository

repo1-host-ca-file=/etc/pgbackrest/cert/ca.crt

repo1-host-cert-file=/etc/pgbackrest/cert/client.crt

repo1-host-key-file=/etc/pgbackrest/cert/client.key

repo1-host-type=tls

tls-server-address=*

tls-server-auth=pgbackrest-client=demo-alt

tls-server-ca-file=/etc/pgbackrest/cert/ca.crt

tls-server-cert-file=/etc/pgbackrest/cert/server.crt

tls-server-key-file=/etc/pgbackrest/cert/server.key

repository:/etc/pgbackrest/pgbackrest.conf ⇒ pg1-host/pg1-host-userとpg1-pathを設定する

[demo]

pg1-host=pg-primary

pg1-host-ca-file=/etc/pgbackrest/cert/ca.crt

pg1-host-cert-file=/etc/pgbackrest/cert/client.crt

pg1-host-key-file=/etc/pgbackrest/cert/client.key

pg1-host-type=tls

pg1-path=/var/lib/pgsql/14/data



[demo-alt]

pg1-host=pg-alt

pg1-host-ca-file=/etc/pgbackrest/cert/ca.crt

pg1-host-cert-file=/etc/pgbackrest/cert/client.crt

pg1-host-key-file=/etc/pgbackrest/cert/client.key

pg1-host-type=tls

pg1-path=/var/lib/pgsql/14/data



[global]

process-max=3

repo1-path=/var/lib/pgbackrest

repo1-retention-full=2

start-fast=y

tls-server-address=*

tls-server-auth=pgbackrest-client=*

tls-server-ca-file=/etc/pgbackrest/cert/ca.crt

tls-server-cert-file=/etc/pgbackrest/cert/server.crt

tls-server-key-file=/etc/pgbackrest/cert/server.key

pg-alt ⇒ pgBackRestサーバーを設定する

sudo cat /etc/systemd/system/pgbackrest.service
[Unit]
Description=pgBackRest Server
After=network.target
StartLimitIntervalSec=0

[Service]
Type=notify
Restart=always
RestartSec=1
User=postgres
ExecStart=/usr/bin/pgbackrest server
ExecStartPost=/bin/sleep 3
ExecStartPost=/bin/bash -c "[ ! -z $MAINPID ]"
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target
sudo systemctl enable pgbackrest
sudo systemctl start pgbackrest

デモクラスターのセットアップ

pg-alt ⇒ デモクラスターを作成する

sudo -u postgres /usr/pgsql-14/bin/initdb \
       -D /var/lib/pgsql/14/data -k -A peer

pg-alt:/var/lib/pgsql/14/data/postgresql.conf ⇒ PostgreSQLを設定する

archive_command = 'pgbackrest --stanza=demo-alt archive-push %p'

archive_mode = on

log_filename = 'postgresql.log'

pg-alt ⇒ デモクラスターを起動する

sudo systemctl restart postgresql-14.service

stanzaの作成と設定の確認

stanzaを初期化するには、stanza-createコマンドを実行する必要があります。アーカイブとバックアップが正しく設定されていることを確認するため、stanza-createの後にcheckコマンドを実行することをお勧めします。

pg-alt ⇒ stanzaを作成して設定を確認する

sudo -u postgres pgbackrest --stanza=demo-alt --log-level-console=info stanza-create
P00   INFO: stanza-create command begin 2.59.3: --exec-id=929-571b66d7 --log-level-console=info --log-level-file=detail --no-log-timestamp --pg1-path=/var/lib/pgsql/14/data --repo1-host=repository --repo1-host-ca-file=/etc/pgbackrest/cert/ca.crt --repo1-host-cert-file=/etc/pgbackrest/cert/client.crt --repo1-host-key-file=/etc/pgbackrest/cert/client.key --repo1-host-type=tls --stanza=demo-alt
P00   INFO: stanza-create for stanza 'demo-alt' on repo1
P00   INFO: stanza-create command end: completed successfully
sudo -u postgres pgbackrest --log-level-console=info check
P00   INFO: check command begin 2.59.3: --exec-id=962-2cadc106 --log-level-console=info --log-level-file=detail --no-log-timestamp --repo1-host=repository --repo1-host-ca-file=/etc/pgbackrest/cert/ca.crt --repo1-host-cert-file=/etc/pgbackrest/cert/client.crt --repo1-host-key-file=/etc/pgbackrest/cert/client.key --repo1-host-type=tls
P00   INFO: check stanza 'demo-alt'
P00   INFO: check repo1 configuration (primary)
P00   INFO: check repo1 archive for WAL (primary)
P00   INFO: WAL segment 000000010000000000000001 successfully archived to '/var/lib/pgbackrest/archive/demo-alt/14-1/0000000100000000/000000010000000000000001-5cb25be2e89d0324cc2a94cbc964295204118888.gz' on repo1
P00   INFO: check command end: completed successfully

リポジトリホストでcheckコマンドを実行すると、すべてのstanzaが確認されます。

repository ⇒ すべてのstanzaの設定を確認する

sudo -u pgbackrest pgbackrest --log-level-console=info check
P00   INFO: check command begin 2.59.3: --exec-id=1384-3bcda35c --log-level-console=info --no-log-timestamp --repo1-path=/var/lib/pgbackrest
P00   INFO: check stanza 'demo'
P00   INFO: check repo1 configuration (primary)
P00   INFO: check repo1 archive for WAL (primary)
P00   INFO: WAL segment 000000070000000000000027 successfully archived to '/var/lib/pgbackrest/archive/demo/14-1/0000000700000000/000000070000000000000027-b36b790bcf0b1a9f54bc84458117feb77853d452.gz' on repo1
P00   INFO: check stanza 'demo-alt'
P00   INFO: check repo1 configuration (primary)
P00   INFO: check repo1 archive for WAL (primary)
P00   INFO: WAL segment 000000010000000000000002 successfully archived to '/var/lib/pgbackrest/archive/demo-alt/14-1/0000000100000000/000000010000000000000002-c303ffb17f8a111070459593520aa35640317a38.gz' on repo1
P00   INFO: check command end: completed successfully

非同期アーカイブ

非同期アーカイブはarchive-asyncオプションで有効にします。このオプションにより、archive-pushとarchive-getの両コマンドが非同期に動作します。

スプールパスが必要です。各コマンドはここに一時的なデータを保存しますが、動作が大きく異なるため、スプールパスの使用方法は各セクションで詳しく説明します。

pg-primary ⇒ スプールディレクトリを作成する

sudo mkdir -p -m 750 /var/spool/pgbackrest
sudo chown postgres:postgres /var/spool/pgbackrest

pg-standby ⇒ スプールディレクトリを作成する

sudo mkdir -p -m 750 /var/spool/pgbackrest
sudo chown postgres:postgres /var/spool/pgbackrest

スプールパスを設定し、非同期アーカイブを有効にする必要があります。非同期アーカイブだけでもリモートストレージへの接続回数が減る利点がありますが、process-maxを設定して処理を並列化すると、性能が大幅に向上します。通常のデータベース操作に影響が出るほどprocess-maxを大きくしないようにしてください。

pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ スプールパスと非同期アーカイブを設定する

[demo]

pg1-path=/var/lib/pgsql/14/data



[global]

archive-async=y

log-level-file=detail

repo1-host=repository

repo1-host-ca-file=/etc/pgbackrest/cert/ca.crt

repo1-host-cert-file=/etc/pgbackrest/cert/client.crt

repo1-host-key-file=/etc/pgbackrest/cert/client.key

repo1-host-type=tls

spool-path=/var/spool/pgbackrest

tls-server-address=*

tls-server-auth=pgbackrest-client=demo

tls-server-ca-file=/etc/pgbackrest/cert/ca.crt

tls-server-cert-file=/etc/pgbackrest/cert/server.crt

tls-server-key-file=/etc/pgbackrest/cert/server.key



[global:archive-get]

process-max=2



[global:archive-push]

process-max=2

pg-standby:/etc/pgbackrest/pgbackrest.conf ⇒ スプールパスと非同期アーカイブを設定する

[demo]

pg1-path=/var/lib/pgsql/14/data

recovery-option=primary_conninfo=host=172.17.0.6 port=5432 user=replicator



[global]

archive-async=y

log-level-file=detail

repo1-host=repository

repo1-host-ca-file=/etc/pgbackrest/cert/ca.crt

repo1-host-cert-file=/etc/pgbackrest/cert/client.crt

repo1-host-key-file=/etc/pgbackrest/cert/client.key

repo1-host-type=tls

spool-path=/var/spool/pgbackrest

tls-server-address=*

tls-server-auth=pgbackrest-client=demo

tls-server-ca-file=/etc/pgbackrest/cert/ca.crt

tls-server-cert-file=/etc/pgbackrest/cert/server.crt

tls-server-key-file=/etc/pgbackrest/cert/server.key



[global:archive-get]

process-max=2



[global:archive-push]

process-max=2

注:

process-maxは、バックアップとリストアでこの設定を使わないよう、コマンド別のセクションで設定します。これにより、archive-pushとarchive-getに異なる値を設定することもできます。

デモのためにストリーミングレプリケーションを切断し、PostgreSQLがrestore_commandを使ってWALを取得するようにします。

pg-primary ⇒ レプリケーションのパスワードを変更してストリーミングレプリケーションを切断する

sudo -u postgres psql -c "alter user replicator password 'bogus'"
ALTER ROLE

pg-standby ⇒ スタンバイを再起動して接続を切断する

sudo systemctl restart postgresql-14.service

アーカイブへの送信

非同期のarchive-pushコマンドは、WALのアーカイブ処理を別のプロセス(または複数のプロセス)に任せてスループットを向上させます。PostgreSQLが現在archive_commandで要求しているセグメントの先を調べ、アーカイブ可能なWALセグメントを確認して処理します。WALセグメントはpg_xlog/pg_walディレクトリから直接アーカイブに転送され、archive_commandが成功を返すのは、WALセグメントがアーカイブに安全に保存された後だけです。

スプールパスには、WALアーカイブの現在の状態を保存します。スプールディレクトリに書き込まれる状態ファイルは通常長さゼロで、使用する容量はごくわずか(最大でも数MB)、I/Oも非常に少ないはずです。このディレクトリの情報はすべて再作成できるため、クラスターを新しいハードウェアに移動する場合も、スプールディレクトリを保持する必要はありません。

重要:

非同期アーカイブの当初の実装では、圧縮と転送の前にWALセグメントをスプールディレクトリにコピーしていました。新しい実装では、pg_xlogディレクトリからWALを直接コピーします。v1.12以前で非同期アーカイブを利用していた場合は、アップグレード前にv1.13のリリースノートをよく読んでください。

[stanza]-archive-push-async.logファイルで、非同期プロセスの動作を監視できます。短時間に複数のWALセグメントを送信すると、動作のテストに適しています。

pg-primary ⇒ 並列の非同期アーカイブをテストする

sudo -u postgres psql -c " \
       select pg_create_restore_point('test async push'); select pg_switch_wal(); \
       select pg_create_restore_point('test async push'); select pg_switch_wal(); \
       select pg_create_restore_point('test async push'); select pg_switch_wal(); \
       select pg_create_restore_point('test async push'); select pg_switch_wal(); \
       select pg_create_restore_point('test async push'); select pg_switch_wal();"
sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check
P00   INFO: check command begin 2.59.3: --exec-id=6864-e51531e7 --log-level-console=info --log-level-file=detail --no-log-timestamp --pg1-path=/var/lib/pgsql/14/data --repo1-host=repository --repo1-host-ca-file=/etc/pgbackrest/cert/ca.crt --repo1-host-cert-file=/etc/pgbackrest/cert/client.crt --repo1-host-key-file=/etc/pgbackrest/cert/client.key --repo1-host-type=tls --stanza=demo
P00   INFO: check repo1 configuration (primary)
P00   INFO: check repo1 archive for WAL (primary)
P00   INFO: WAL segment 00000007000000000000002D successfully archived to '/var/lib/pgbackrest/archive/demo/14-1/0000000700000000/00000007000000000000002D-7addc4d9a1861c1b8b68300ea3a7db01fbe08ae2.gz' on repo1
P00   INFO: check command end: completed successfully

これでログファイルに並列かつ非同期の処理が記録されます。

pg-primary ⇒ ログで結果を確認する

sudo -u postgres cat /var/log/pgbackrest/demo-archive-push-async.log
-------------------PROCESS START-------------------
P00   INFO: archive-push:async command begin 2.59.3: [/var/lib/pgsql/14/data/pg_wal] --archive-async --exec-id=6828-6cf1b924 --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/14/data --process-max=2 --repo1-host=repository --repo1-host-ca-file=/etc/pgbackrest/cert/ca.crt --repo1-host-cert-file=/etc/pgbackrest/cert/client.crt --repo1-host-key-file=/etc/pgbackrest/cert/client.key --repo1-host-type=tls --spool-path=/var/spool/pgbackrest --stanza=demo
P00   INFO: push 1 WAL file(s) to archive: 000000070000000000000028
P01 DETAIL: pushed WAL file '000000070000000000000028' to the archive
P00 DETAIL: statistics: {"socket.client":{"total":1},"socket.session":{"total":1},"tls.client":{"total":1},"tls.session":{"total":1}}
P00   INFO: archive-push:async command end: completed successfully

-------------------PROCESS START-------------------
P00   INFO: archive-push:async command begin 2.59.3: [/var/lib/pgsql/14/data/pg_wal] --archive-async --exec-id=6866-2a936d60 --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/14/data --process-max=2 --repo1-host=repository --repo1-host-ca-file=/etc/pgbackrest/cert/ca.crt --repo1-host-cert-file=/etc/pgbackrest/cert/client.crt --repo1-host-key-file=/etc/pgbackrest/cert/client.key --repo1-host-type=tls --spool-path=/var/spool/pgbackrest --stanza=demo
P00   INFO: push 5 WAL file(s) to archive: 000000070000000000000029...00000007000000000000002D
P02 DETAIL: pushed WAL file '00000007000000000000002A' to the archive
P01 DETAIL: pushed WAL file '000000070000000000000029' to the archive
P01 DETAIL: pushed WAL file '00000007000000000000002C' to the archive
P02 DETAIL: pushed WAL file '00000007000000000000002B' to the archive
P01 DETAIL: pushed WAL file '00000007000000000000002D' to the archive
P00 DETAIL: statistics: {"socket.client":{"total":1},"socket.session":{"total":1},"tls.client":{"total":1},"tls.session":{"total":1}}
P00   INFO: archive-push:async command end: completed successfully

アーカイブからの取得

非同期のarchive-getコマンドは、WALのローカルキューを維持してスループットを向上させます。要求されたWALセグメントがキューにない場合は、キューを満たすだけの後続WALとともにリポジトリから取得します。キューの最大サイズはarchive-get-queue-maxで定義します。キューが半分未満になるたびに、追加のWALを取得して満たします。

非同期動作は、大量のWALを生成する環境や、リポジトリストレージ(S3などのオブジェクトストア)との接続のレイテンシーが高い環境で特に有用です。レイテンシーが高い場合は、process-maxを増やすとよい場合があります。

[stanza]-archive-get-async.logファイルで、非同期プロセスの動作を監視できます。

pg-standby ⇒ ログで結果を確認する

sudo -u postgres cat /var/log/pgbackrest/demo-archive-get-async.log
-------------------PROCESS START-------------------
P00   INFO: archive-get:async command begin 2.59.3: [000000070000000000000024, 000000070000000000000025, 000000070000000000000026, 000000070000000000000027, 000000070000000000000028, 000000070000000000000029, 00000007000000000000002A, 00000007000000000000002B] --archive-async --exec-id=1919-a90112cb --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/14/data --process-max=2 --repo1-host=repository --repo1-host-ca-file=/etc/pgbackrest/cert/ca.crt --repo1-host-cert-file=/etc/pgbackrest/cert/client.crt --repo1-host-key-file=/etc/pgbackrest/cert/client.key --repo1-host-type=tls --spool-path=/var/spool/pgbackrest --stanza=demo
P00   INFO: get 8 WAL file(s) from archive: 000000070000000000000024...00000007000000000000002B
P01 DETAIL: found 000000070000000000000024 in the repo1: 14-1 archive
P02 DETAIL: found 000000070000000000000025 in the repo1: 14-1 archive
P02 DETAIL: found 000000070000000000000027 in the repo1: 14-1 archive
P01 DETAIL: found 000000070000000000000026 in the repo1: 14-1 archive
P00 DETAIL: unable to find 000000070000000000000028 in the archive
P00 DETAIL: statistics: {"socket.client":{"total":1},"socket.session":{"total":1},"tls.client":{"total":1},"tls.session":{"total":1}}
       [filtered 31 lines of output]
P00   INFO: archive-get:async command begin 2.59.3: [000000070000000000000028, 000000070000000000000029, 00000007000000000000002A, 00000007000000000000002B, 00000007000000000000002C, 00000007000000000000002D, 00000007000000000000002E, 00000007000000000000002F] --archive-async --exec-id=1976-2ef79408 --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/14/data --process-max=2 --repo1-host=repository --repo1-host-ca-file=/etc/pgbackrest/cert/ca.crt --repo1-host-cert-file=/etc/pgbackrest/cert/client.crt --repo1-host-key-file=/etc/pgbackrest/cert/client.key --repo1-host-type=tls --spool-path=/var/spool/pgbackrest --stanza=demo
P00   INFO: get 8 WAL file(s) from archive: 000000070000000000000028...00000007000000000000002F
P01 DETAIL: found 000000070000000000000028 in the repo1: 14-1 archive
P02 DETAIL: found 000000070000000000000029 in the repo1: 14-1 archive
P01 DETAIL: found 00000007000000000000002A in the repo1: 14-1 archive
P02 DETAIL: found 00000007000000000000002B in the repo1: 14-1 archive
P02 DETAIL: found 00000007000000000000002D in the repo1: 14-1 archive
P01 DETAIL: found 00000007000000000000002C in the repo1: 14-1 archive
P00 DETAIL: unable to find 00000007000000000000002E in the archive
P00 DETAIL: statistics: {"socket.client":{"total":1},"socket.session":{"total":1},"tls.client":{"total":1},"tls.session":{"total":1}}
       [filtered 14 lines of output]

pg-primary ⇒ レプリケーションのパスワードを変更してストリーミングレプリケーションを修復する

sudo -u postgres psql -c "alter user replicator password 'jw8s0F4'"
ALTER ROLE

スタンバイからのバックアップ

pgBackRestは、プライマリーの代わりにスタンバイでバックアップを実行できます。スタンバイからのバックアップには、pg-standbyホストの設定とbackup-standbyオプションの有効化が必要です。複数のスタンバイが設定されている場合は、最初に見つかった稼働中のスタンバイをバックアップに使用します。

repository:/etc/pgbackrest/pgbackrest.conf ⇒ pg2-host/pg2-host-userとpg2-pathを設定する

[demo]

pg1-host=pg-primary

pg1-host-ca-file=/etc/pgbackrest/cert/ca.crt

pg1-host-cert-file=/etc/pgbackrest/cert/client.crt

pg1-host-key-file=/etc/pgbackrest/cert/client.key

pg1-host-type=tls

pg1-path=/var/lib/pgsql/14/data

pg2-host=pg-standby

pg2-host-ca-file=/etc/pgbackrest/cert/ca.crt

pg2-host-cert-file=/etc/pgbackrest/cert/client.crt

pg2-host-key-file=/etc/pgbackrest/cert/client.key

pg2-host-type=tls

pg2-path=/var/lib/pgsql/14/data



[demo-alt]

pg1-host=pg-alt

pg1-host-ca-file=/etc/pgbackrest/cert/ca.crt

pg1-host-cert-file=/etc/pgbackrest/cert/client.crt

pg1-host-key-file=/etc/pgbackrest/cert/client.key

pg1-host-type=tls

pg1-path=/var/lib/pgsql/14/data



[global]

backup-standby=y

process-max=3

repo1-path=/var/lib/pgbackrest

repo1-retention-full=2

start-fast=y

tls-server-address=*

tls-server-auth=pgbackrest-client=*

tls-server-ca-file=/etc/pgbackrest/cert/ca.crt

tls-server-cert-file=/etc/pgbackrest/cert/server.crt

tls-server-key-file=/etc/pgbackrest/cert/server.key

バックアップの実行には、プライマリーとスタンバイの両データベースが必要ですが、プライマリーの負荷を減らすため、ファイルの大半はスタンバイからコピーします。データベースホストの設定順序は任意です。pgBackRestがプライマリーとスタンバイを自動判別します。

repository ⇒ pg2からデモクラスターをバックアップする

sudo -u pgbackrest pgbackrest --stanza=demo --log-level-console=detail backup
       [filtered 2 lines of output]
P00   INFO: execute backup start: backup begins after the requested immediate checkpoint completes
P00   INFO: backup start archive = 00000007000000000000002F, lsn = 0/2F000028
P00   INFO: wait for replay on the standby to reach 0/2F000028
P00   INFO: replay on the standby reached 0/2F000028
P00   INFO: check archive for prior segment 00000007000000000000002E
P01 DETAIL: backup file pg-primary:/var/lib/pgsql/14/data/log/postgresql.log (10.9KB, 0.42%) checksum dbfa988289c2ff32dcd198f19455165722870b43
P01 DETAIL: backup file pg-primary:/var/lib/pgsql/14/data/global/pg_control (8KB, 0.73%) checksum 0a793efbb7bb2e255bbb2bfac8f612bc943c7f31
P01 DETAIL: backup file pg-primary:/var/lib/pgsql/14/data/pg_hba.conf (4.5KB, 0.90%) checksum cfa97af1dab1b130f0a921fa2d10d76fe0c5f630
P01 DETAIL: match file from prior backup pg-primary:/var/lib/pgsql/14/data/current_logfiles (26B, 0.91%) checksum 78a9f5c10960f0d91fcd313937469824861795a2
P01 DETAIL: match file from prior backup pg-primary:/var/lib/pgsql/14/data/pg_logical/replorigin_checkpoint (8B, 0.91%) checksum 347fc8f2df71bd4436e38bd1516ccd7ea0d46532
       [filtered 1263 lines of output]

この増分バックアップでは、大半のファイルをpg-standbyホストからコピーし、pg-primaryホストからは少数のファイルだけをコピーしていることが分かります。

pgBackRestがスタンバイから作成するバックアップは、プライマリーで実行したバックアップと同一です。そのために、pg-primaryホストでバックアップを開始・停止し、レプリケーションされるファイルだけをpg-standbyホストからコピーして、残りの少数のファイルをpg-primaryホストからコピーします。したがって、プライマリーデータベースのログと統計情報もバックアップに含まれます。


PostgreSQLのアップグレード

PostgreSQLを新しいメジャーバージョンにアップグレードしたら、直ちにすべてのpgBackRest設定のpg-pathを新しいデータベースの場所に変更し、stanza-upgradeコマンドを実行する必要があります。ホストに複数のリポジトリが設定されている場合は、それぞれでstanzaをアップグレードします。データベースがオフラインの場合は、--no-onlineオプションを使用してください。

以下はPostgreSQLのアップグレードを網羅した手順ではありません。pgBackRestの再設定に必要な手順を示すため、プライマリーとスタンバイのアップグレードの大まかな流れを説明します。アップグレード前にバックアップを取ることをお勧めします。

pg-primary ⇒ 古いクラスターを停止する

sudo systemctl stop postgresql-14.service

スタンバイはアップグレードした新しいクラスターからリストアするため、スタンバイの古いクラスターも停止します。

pg-standby ⇒ 古いクラスターを停止する

sudo systemctl stop postgresql-14.service

新しいクラスターを作成してアップグレードします。

pg-primary ⇒ 新しいクラスターを作成してアップグレードする

sudo -u postgres /usr/pgsql-15/bin/initdb \
       -D /var/lib/pgsql/15/data -k -A peer
sudo -u postgres sh -c 'cd /var/lib/pgsql && \
       /usr/pgsql-15/bin/pg_upgrade \
       --old-bindir=/usr/pgsql-14/bin \
       --new-bindir=/usr/pgsql-15/bin \
       --old-datadir=/var/lib/pgsql/14/data \
       --new-datadir=/var/lib/pgsql/15/data \
       --old-options=" -c config_file=/var/lib/pgsql/14/data/postgresql.conf" \
       --new-options=" -c config_file=/var/lib/pgsql/15/data/postgresql.conf"'
       [filtered 41 lines of output]
Checking for extension updates                              ok
Upgrade Complete
----------------
Optimizer statistics are not transferred by pg_upgrade.
       [filtered 4 lines of output]

新しいクラスターの設定とポートを設定します。

pg-primary:/var/lib/pgsql/15/data/postgresql.conf ⇒ PostgreSQLを設定する

archive_command = 'pgbackrest --stanza=demo archive-push %p'

archive_mode = on

log_filename = 'postgresql.log'

すべてのシステムでpgBackRestの設定を更新し、新しいクラスターを参照させます。

pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ pg1-pathを更新する

[demo]

pg1-path=/var/lib/pgsql/15/data



[global]

archive-async=y

log-level-file=detail

repo1-host=repository

repo1-host-ca-file=/etc/pgbackrest/cert/ca.crt

repo1-host-cert-file=/etc/pgbackrest/cert/client.crt

repo1-host-key-file=/etc/pgbackrest/cert/client.key

repo1-host-type=tls

spool-path=/var/spool/pgbackrest

tls-server-address=*

tls-server-auth=pgbackrest-client=demo

tls-server-ca-file=/etc/pgbackrest/cert/ca.crt

tls-server-cert-file=/etc/pgbackrest/cert/server.crt

tls-server-key-file=/etc/pgbackrest/cert/server.key



[global:archive-get]

process-max=2



[global:archive-push]

process-max=2

pg-standby:/etc/pgbackrest/pgbackrest.conf ⇒ pg-pathを更新する

[demo]

pg1-path=/var/lib/pgsql/15/data

recovery-option=primary_conninfo=host=172.17.0.6 port=5432 user=replicator



[global]

archive-async=y

log-level-file=detail

repo1-host=repository

repo1-host-ca-file=/etc/pgbackrest/cert/ca.crt

repo1-host-cert-file=/etc/pgbackrest/cert/client.crt

repo1-host-key-file=/etc/pgbackrest/cert/client.key

repo1-host-type=tls

spool-path=/var/spool/pgbackrest

tls-server-address=*

tls-server-auth=pgbackrest-client=demo

tls-server-ca-file=/etc/pgbackrest/cert/ca.crt

tls-server-cert-file=/etc/pgbackrest/cert/server.crt

tls-server-key-file=/etc/pgbackrest/cert/server.key



[global:archive-get]

process-max=2



[global:archive-push]

process-max=2

repository:/etc/pgbackrest/pgbackrest.conf ⇒ pg1-pathとpg2-pathを更新し、スタンバイからのバックアップを無効にする

[demo]

pg1-host=pg-primary

pg1-host-ca-file=/etc/pgbackrest/cert/ca.crt

pg1-host-cert-file=/etc/pgbackrest/cert/client.crt

pg1-host-key-file=/etc/pgbackrest/cert/client.key

pg1-host-type=tls

pg1-path=/var/lib/pgsql/15/data

pg2-host=pg-standby

pg2-host-ca-file=/etc/pgbackrest/cert/ca.crt

pg2-host-cert-file=/etc/pgbackrest/cert/client.crt

pg2-host-key-file=/etc/pgbackrest/cert/client.key

pg2-host-type=tls

pg2-path=/var/lib/pgsql/15/data



[demo-alt]

pg1-host=pg-alt

pg1-host-ca-file=/etc/pgbackrest/cert/ca.crt

pg1-host-cert-file=/etc/pgbackrest/cert/client.crt

pg1-host-key-file=/etc/pgbackrest/cert/client.key

pg1-host-type=tls

pg1-path=/var/lib/pgsql/14/data



[global]

backup-standby=n

process-max=3

repo1-path=/var/lib/pgbackrest

repo1-retention-full=2

start-fast=y

tls-server-address=*

tls-server-auth=pgbackrest-client=*

tls-server-ca-file=/etc/pgbackrest/cert/ca.crt

tls-server-cert-file=/etc/pgbackrest/cert/server.crt

tls-server-key-file=/etc/pgbackrest/cert/server.key

pg-primary ⇒ hba設定をコピーする

sudo cp /var/lib/pgsql/14/data/pg_hba.conf \
       /var/lib/pgsql/15/data/pg_hba.conf

新しいクラスターを起動する前に、stanza-upgradeコマンドを実行する必要があります。

pg-primary ⇒ stanzaをアップグレードする

sudo -u postgres pgbackrest --stanza=demo --no-online \
       --log-level-console=info stanza-upgrade
P00   INFO: stanza-upgrade command begin 2.59.3: --exec-id=7454-62cfb155 --log-level-console=info --log-level-file=detail --no-log-timestamp --no-online --pg1-path=/var/lib/pgsql/15/data --repo1-host=repository --repo1-host-ca-file=/etc/pgbackrest/cert/ca.crt --repo1-host-cert-file=/etc/pgbackrest/cert/client.crt --repo1-host-key-file=/etc/pgbackrest/cert/client.key --repo1-host-type=tls --stanza=demo
P00   INFO: stanza-upgrade for stanza 'demo' on repo1
P00   INFO: stanza-upgrade command end: completed successfully

新しいクラスターを起動し、正しくインストールされたことを確認します。

pg-primary ⇒ 新しいクラスターを起動する

sudo systemctl start postgresql-15.service

checkコマンドを使って設定をテストします。

pg-primary ⇒ 設定を確認する

sudo systemctl status postgresql-15.service
sudo -u postgres pgbackrest --stanza=demo check

古いクラスターを削除します。

pg-primary ⇒ 古いクラスターを削除する

sudo rm -rf /var/lib/pgsql/14/data

スタンバイに新しいPostgreSQLバイナリをインストールし、クラスターを作成します。

pg-standby ⇒ 古いクラスターを削除し、新しいクラスターを作成する

sudo rm -rf /var/lib/pgsql/14/data
sudo -u postgres mkdir -p -m 700 /usr/pgsql-15/bin

リポジトリホストでcheckを実行します。スタンバイクラスターは停止しているため、スタンバイが停止しているという警告は想定どおりです。このコマンドの実行により、リポジトリサーバーがスタンバイを認識し、プライマリーサーバーに対して正しく設定されていることを確認できます。

repository ⇒ 設定を確認する

sudo -u pgbackrest pgbackrest --stanza=demo check
P00   WARN: unable to check pg2: [DbConnectError] raised from remote-0 tls protocol on 'pg-standby': unable to connect to 'dbname='postgres' port=5432': connection to server on socket "/run/postgresql/.s.PGSQL.5432" failed: No such file or directory
                Is the server running locally and accepting connections on that socket?

新しいクラスターでフルバックアップを実行し、そのバックアップからスタンバイをリストアします。incrまたはdiffを要求しても、バックアップの種類は自動でfullに変更されます。

repository ⇒ フルバックアップを実行する

sudo -u pgbackrest pgbackrest --stanza=demo --type=full backup

pg-standby ⇒ デモのスタンバイクラスターをリストアする

sudo -u postgres pgbackrest --stanza=demo --type=standby restore

pg-standby ⇒ PostgreSQLを起動し、pgBackRestの設定を確認する

sudo systemctl start postgresql-15.service
sudo -u postgres pgbackrest --stanza=demo check

スタンバイのリストアが完了したので、スタンバイからのバックアップを有効にできます。

repository:/etc/pgbackrest/pgbackrest.conf ⇒ スタンバイからのバックアップを再び有効にする

[demo]

pg1-host=pg-primary

pg1-host-ca-file=/etc/pgbackrest/cert/ca.crt

pg1-host-cert-file=/etc/pgbackrest/cert/client.crt

pg1-host-key-file=/etc/pgbackrest/cert/client.key

pg1-host-type=tls

pg1-path=/var/lib/pgsql/15/data

pg2-host=pg-standby

pg2-host-ca-file=/etc/pgbackrest/cert/ca.crt

pg2-host-cert-file=/etc/pgbackrest/cert/client.crt

pg2-host-key-file=/etc/pgbackrest/cert/client.key

pg2-host-type=tls

pg2-path=/var/lib/pgsql/15/data



[demo-alt]

pg1-host=pg-alt

pg1-host-ca-file=/etc/pgbackrest/cert/ca.crt

pg1-host-cert-file=/etc/pgbackrest/cert/client.crt

pg1-host-key-file=/etc/pgbackrest/cert/client.key

pg1-host-type=tls

pg1-path=/var/lib/pgsql/14/data



[global]

backup-standby=y

process-max=3

repo1-path=/var/lib/pgbackrest

repo1-retention-full=2

start-fast=y

tls-server-address=*

tls-server-auth=pgbackrest-client=*

tls-server-ca-file=/etc/pgbackrest/cert/ca.crt

tls-server-cert-file=/etc/pgbackrest/cert/server.crt

tls-server-key-file=/etc/pgbackrest/cert/server.key

4 - コマンドリファレンス

バックアップ、リストア、アーカイブ、管理操作の全オプションを網羅したpgBackRestのコマンドリファレンス。

はじめに

コマンドは、pgBackRestのさまざまな機能を実行するために使用します。ここでは、各コマンドのオプションを網羅しています。複数のコマンドに適用されるオプションも、該当する各コマンドのページに記載しています。pgbackrest.confで設定できるオプションもすべて含まれます。

pgbackrest.confに設定した非ブール型のオプションは、コマンドラインでreset-接頭辞を使用するとデフォルト値に戻せます。この機能を使うと、リポジトリホスト上で直接バックアップをリストアできます。通常、pgBackRestはデータベースホストがリモートにあることを認識し、リモートでのリストアはできないためエラーになります。コマンドラインに--reset-pg1-hostを追加すると、リモートのデータベースホストを無視してローカルにリストアします。データベースホストで使用していたパスではなく、特定のパスにリストアするには、--pg1-pathに新しい値を指定する必要がある場合があります。

コマンドラインでno-接頭辞を使用すると、ブール型のオプションを偽に設定できます。

すべてのオプションは、PGBACKREST_接頭辞に、-を_に置き換えた大文字のオプション名を続けることで、環境変数に設定できます。たとえば、pg1-pathはPGBACKREST_PG1_PATH、stanzaはPGBACKREST_STANZAになります。ブール型のオプションは、PGBACKREST_COMPRESS="n"のように設定ファイルと同じ形式で表し、reset-*形式は使用できません。コマンドラインや設定ファイルで複数回指定できるオプションは、PGBACKREST_DB_INCLUDE="db1:db2"のように値をコロンで区切って表せます。

コマンドラインのオプションは環境変数のオプションより優先され、環境変数のオプションは設定ファイルのオプションより優先されます。

オプションの型については、構成の概要 を参照してください。

コマンド

コマンド 概要
annotate バックアップの作成後に注釈を追加、変更、削除します。
archive-get リストア、PITR、レプリカのリカバリーに使用する、アーカイブ済みWALセグメントを取得します。
archive-push PostgreSQLからWALセグメントを受け取り、設定したリポジトリに送信します。
backup 対象リポジトリにバックアップを作成します。デフォルトでは最も優先度の高いリポジトリを使用します。
check stanzaのバックアップ・アーカイブ設定と、WALアーカイブの正常性を検証します。
expire 設定した保持ポリシーに基づき、バックアップとアーカイブ済みWALを期限切れとして削除します。
help 全般、コマンド、オプションの各レベルでヘルプを表示します。
info stanzaとバックアップの状態・メタデータをテキストまたはJSON形式で表示します。
repo-get 管理、調査、テストのため、catと同様にリポジトリ内のファイルを読み取ります。
repo-ls 管理、調査、テストのため、lsと同様にリポジトリ内のファイル・パスを一覧表示します。
restore バックアップからリストアします。デフォルトでは最新のバックアップを使用し、ポイントインタイムリカバリーも指定できます。
server SSHを使わずにリモートホストにアクセスするため、pgBackRestのTLSサーバーを実行します。
server-ping pgBackRestのTLSサーバーにpingを送信し、接続を受け付けていることを確認します。
stanza-create 設定したすべてのリポジトリにstanzaのメタデータを作成します。
stanza-delete stanzaのすべてのバックアップとアーカイブを完全に削除します。
stanza-upgrade PostgreSQLのメジャーバージョンアップグレード後にstanzaのメタデータを更新します。
start stopによって停止したpgBackRestプロセスの実行を再び許可します。
stop 新しいpgBackRestプロセスの実行を禁止し、指定に応じて実行中のプロセスを強制停止します。
verify リポジトリ内のバックアップとアーカイブデータが有効であることを検証します。
version インストールされているpgBackRestのバージョンを表示します。

4.1 - 注釈コマンド(annotate)

pgBackRestのannotateコマンドのオプションと動作のリファレンス。

backupコマンドで付けた注釈は、後からannotateコマンドで追加、変更、削除できます。

コマンドオプション

バックアップ注釈オプション(--annotation)

ユーザー定義のキー/値ペアでバックアップに注釈を付けます。

バックアップに情報を示すキー/値ペアを付加できます。このオプションを複数回指定して、複数の注釈を付けられます。

注釈は、--setでバックアップを指定した場合にinfoコマンドのテキスト出力に表示されます。JSON出力には常に表示されます。

example: --annotation=source="Sunday backup for website database"

バックアップセットオプション(--set)

注釈を付けるバックアップセットです。

注釈の対象となるバックアップセットです。

example: --set=20150131-153358F_20150131-153401I

一般オプション

rootでの実行許可オプション(--allow-root)

rootユーザーによるコマンドの実行を許可します。

デフォルトでは、ファイルの所有権を慎重に管理するように設計されたrestoreコマンドのみをrootユーザーで実行できます。ほかのコマンドをrootで実行すると、たとえばリポジトリ内にroot所有のファイルが作成され、PostgreSQLユーザーがアクセスできなくなって、後続のコマンドが失敗するおそれがあります。

それでもコマンドをrootで実行する場合は、このオプションを有効にします。ただし、リポジトリとPostgreSQLクラスターを所有するユーザーとしてpgBackRestを実行する方がはるかに適切です。

default: n
example: --allow-root

バッファーサイズオプション(--buffer-size)

I/O処理のバッファーサイズです。

コピー、圧縮、暗号化などの処理に使用するバッファーサイズです。使用するバッファーの数はオプションによって異なり、各処理で追加のメモリを使用する場合があります。たとえば、gz圧縮では256KiBのメモリを追加で使用する場合があります。

指定できる値は、16KiB、32KiB、64KiB、128KiB、256KiB、512KiB、1MiB、2MiB、4MiB、8MiB、16MiBです。

default: 1MiB
example: --buffer-size=2MiB

SSHクライアントコマンドオプション(--cmd-ssh)

SSHクライアントのコマンドです。

別のSSHクライアントを使用したい場合や、sshコマンドが$PATHに含まれていない場合に、使用するSSHクライアントコマンドを指定します。

default: ssh
example: --cmd-ssh=/usr/bin/ssh

ネットワーク圧縮レベルオプション(--compress-level-network)

ネットワークの圧縮レベルです。

compress-type=noneで、コマンドがリポジトリと同じホストで実行されない場合のネットワーク圧縮レベルを設定します。圧縮によってネットワークトラフィックを削減します。compress-typeがnoneでない場合は、ファイルを1回だけ圧縮するように、compress-level-network設定を無視して代わりにcompress-levelを使用します。

default: 1
allowed: [-5, 12]
example: --compress-level-network=1

設定ファイルオプション(--config)

pgBackRestの設定ファイルです。

デフォルトとは異なる設定ファイルを指定するには、このオプションを使用します。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --config=/conf/pgbackrest/pgbackrest.conf

追加設定パスオプション(--config-include-path)

追加のpgBackRest設定ファイルへのパスです。

指定した場所にある拡張子.confの設定ファイルをpgBackRest設定ファイルと連結し、1つの設定ファイルとして扱います。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --config-include-path=/conf/pgbackrest/conf.d

設定パスオプション(--config-path)

pgBackRest設定ファイルの基準パスです。

この設定は、--configと--config-include-pathの各オプションがコマンドラインで明示的に設定されていない場合に、それらのデフォルトの基準パスを上書きします。

たとえば、--config-path=/conf/pgbackrestだけを渡すと、--configのデフォルトは/conf/pgbackrest/pgbackrest.confに、--config-include-pathのデフォルトは/conf/pgbackrest/conf.dに設定されます。

default: CFGOPTDEF_CONFIG_PATH
example: --config-path=/conf/pgbackrest

I/Oタイムアウトオプション(--io-timeout)

I/Oのタイムアウトです。

接続および読み取り/書き込み処理に使用する、秒単位のタイムアウトです。

読み取り/書き込み処理全体がこのタイムアウト内に完了する必要はありませんが、わずか1バイトでも、何らかの進展が必要です。

default: 1m
allowed: [100ms, 1h]
example: --io-timeout=120

ロックパスオプション(--lock-path)

ロックファイルを保存するパスです。

ロックパスは、pgBackRestが競合する処理の同時実行を防ぐためのロックファイルを作成する場所です。

default: /tmp/pgbackrest
example: --lock-path=/backup/db/lock

固定umaskオプション(--neutral-umask)

固定のumaskを使用します。

umaskを0000に設定し、リポジトリ内のファイルやディレクトリが適切な権限で作成されるようにします。デフォルトのディレクトリ権限は0750、ファイル権限は0640です。

代わりに実行ユーザーのumaskを使用するには、設定ファイルにneutral-umask=n、またはコマンドラインに--no-neutral-umaskを指定します。

default: y
example: --no-neutral-umask

プロセス優先度設定オプション(--priority)

プロセスの優先度を設定します。

カーネルのスケジューラーがプロセスに与える優先度(niceness)を定義します。正の値は優先度を下げ、負の値は優先度を上げます。通常、プロセスには自身の優先度を上げる権限がありません。

allowed: [-20, 19]
example: --priority=19

プロトコルタイムアウトオプション(--protocol-timeout)

プロトコルのタイムアウトです。

ローカルまたはリモートのプロセスが、プロトコル層で新しいメッセージの受信を待つタイムアウトを秒単位で設定します。これにより、プロセスがメッセージを無期限に待ち続けることを防ぎます。

注記: protocol-timeoutオプションは、db-timeoutオプションより大きくする必要があります。

default: 31m
allowed: [100ms, 7d]
example: --protocol-timeout=630

キープアライブオプション(--sck-keep-alive)

キープアライブを有効にします。

ソケット接続でキープアライブメッセージを有効にします。

default: y
example: --no-sck-keep-alive

stanzaオプション(--stanza)

stanzaを定義します。

stanzaは、PostgreSQLデータベースクラスターの場所、バックアップ方法、アーカイブオプションなどを定義する設定です。ほとんどのデータベースサーバーにはPostgreSQLデータベースクラスターが1つだけ存在し、stanzaも1つになります。一方、バックアップサーバーには、バックアップが必要なデータベースクラスターごとにstanzaがあります。

stanzaにはプライマリークラスターにちなんだ名前を付けたくなりますが、クラスターに含まれるデータベースを表す名前の方が適しています。stanza名はプライマリーとすべてのレプリカで使用するため、mainやprodなどのローカルクラスター名よりも、appやdwなど、クラスターの実際の役割を表す名前を選ぶ方が適切です。

example: --stanza=main

キープアライブ回数オプション(--tcp-keep-alive-count)

キープアライブの回数です。

接続が切れたと判断するまでに、応答がなくても許容するTCPキープアライブメッセージの数を指定します。

このオプションは、TCP_KEEPCNTソケットオプションをサポートするシステムで利用できます。

allowed: [1, 32]
example: --tcp-keep-alive-count=3

キープアライブ待機時間オプション(--tcp-keep-alive-idle)

キープアライブの待機時間です。

ネットワーク通信がない状態で、オペレーティングシステムがTCPキープアライブメッセージを送信するまでの時間を秒単位で指定します。

このオプションは、TCP_KEEPIDLEソケットオプションをサポートするシステムで利用できます。

allowed: [1, 3600]
example: --tcp-keep-alive-idle=60

キープアライブ間隔オプション(--tcp-keep-alive-interval)

キープアライブの送信間隔です。

応答のないTCPキープアライブメッセージを再送信するまでの時間を秒単位で指定します。

このオプションは、TCP_KEEPINTVLソケットオプションをサポートするシステムで利用できます。

allowed: [1, 900]
example: --tcp-keep-alive-interval=30

TLSv1.2暗号スイートオプション(--tls-cipher-12)

許可するTLSv1.2暗号スイートです。

pgBackRestクライアントとサーバー間のすべてのTLS接続は暗号化されます。デフォルトでは、オブジェクトストア(例:S3)への接続も暗号化されます。

注記: どのトランスポート接続でも、セキュリティーの最低要件はTLSv1.2です。

必要に応じて、受け入れる暗号スイートを調整できます。特別なセキュリティー要件がなければ、例に示す値が妥当な選択です。未設定(デフォルト)の場合は、使用するOpenSSLライブラリのデフォルトが適用されます。

example: --tls-cipher-12=HIGH:MEDIUM:+3DES:!aNULL

TLSv1.3暗号スイートオプション(--tls-cipher-13)

許可するTLSv1.3暗号スイートです。

pgBackRestクライアントとサーバー間のすべてのTLS接続は暗号化されます。デフォルトでは、オブジェクトストア(例:S3)への接続も暗号化されます。

注記: どのトランスポート接続でも、セキュリティーの最低要件はTLSv1.2です。

必要に応じて、受け入れる暗号スイートを調整できます。未設定(デフォルト)の場合は、使用するOpenSSLライブラリのデフォルトが適用されます。

example: --tls-cipher-13=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256

ログオプション

コンソールログレベルオプション(--log-level-console)

コンソールに出力するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: warn
example: --log-level-console=error

ファイルログレベルオプション(--log-level-file)

ファイルに記録するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: info
example: --log-level-file=debug

標準エラーログレベルオプション(--log-level-stderr)

stderrに出力するログのレベルです。

stdout(log-level-consoleで指定)の代わりにstderrへ出力するログレベルを指定します。stderrにはタイムスタンプとプロセスを出力しません。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: off
example: --log-level-stderr=error

ログパスオプション(--log-path)

ログファイルを保存するパスです。

ログパスは、pgBackRestがログファイルを保存する場所です。log-level-file=offの場合、ログパスは不要です。

default: /var/log/pgbackrest
example: --log-path=/backup/db/log

サブプロセスログオプション(--log-subprocess)

サブプロセスでのログ記録を有効にします。

このプロセスが作成するすべてのサブプロセスで、log-level-fileで指定したログレベルによるファイルへのログ記録を有効にします。

default: n
example: --log-subprocess

ログタイムスタンプオプション(--log-timestamp)

ログのタイムスタンプを有効にします。

コンソールとファイルのログでタイムスタンプを有効にします。このオプションは、ドキュメント生成などの特殊な状況では無効にします。

default: y
example: --no-log-timestamp

リポジトリオプション

リポジトリ指定オプション(--repo)

リポジトリを指定します。

コマンドの操作対象となるリポジトリを指定します。

たとえば、このオプションを使用すると、pgBackRestに選択させずに、特定のリポジトリからリストアできます。

allowed: [1, 256]
example: --repo=1

Azureリポジトリコンテナーオプション(--repo-azure-container)

Azureリポジトリのコンテナーです。

リポジトリの保存に使用するAzureコンテナーです。

repo-path=/を設定するとpgBackRestリポジトリをコンテナーのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのAzureが生成するコンテンツもコンテナーに保存できるようにすることを推奨します。

example: --repo1-azure-container=pg-backup

Azureリポジトリキー種別オプション(--repo-azure-key-type)

Azureリポジトリのキー種別です。

認可には次の種別をサポートします。

  • shared - 共有キー
  • sas - 共有アクセス署名
  • auto - AzureマネージドIDを使用して自動的に認可
default: shared
example: --repo1-azure-key-type=sas

AzureリポジトリURI形式オプション(--repo-azure-uri-style)

AzureのURI形式です。

次のURI形式をサポートします。

  • host - account.endpointホストに接続します。
  • path - endpointホストに接続し、URIの先頭にアカウントを付加します。
default: host
example: --repo1-azure-uri-style=path

リポジトリ暗号方式オプション(--repo-cipher-type)

リポジトリの暗号化に使用する暗号方式です。

次の暗号方式をサポートします。

  • none - リポジトリを暗号化しません
  • aes-256-cbc - 鍵長256ビットのAdvanced Encryption Standard

リポジトリの種類(例:S3)が暗号化をサポートしていても、暗号化は常にクライアント側で実行されます。

default: none
example: --repo1-cipher-type=aes-256-cbc

GCSリポジトリバケットオプション(--repo-gcs-bucket)

GCSリポジトリのバケットです。

リポジトリの保存に使用するGCSバケットです。

repo-path=/を設定するとpgBackRestリポジトリをバケットのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのGCSが生成するコンテンツもバケットに保存できるようにすることを推奨します。

example: --repo1-gcs-bucket=/pg-backup

GCSリポジトリエンドポイントオプション(--repo-gcs-endpoint)

GCSリポジトリのエンドポイントです。

ストレージサービスへの接続に使用するエンドポイントです。ローカルのGCSサーバーや別のエンドポイントを使用するように変更できます。

default: storage.googleapis.com
example: --repo1-gcs-endpoint=localhost

GCSリポジトリキー種別オプション(--repo-gcs-key-type)

GCSリポジトリのキー種別です。

認可には次の種別をサポートします。

  • auto - インスタンスのサービスアカウントを使用して認可します。
  • service - ローカルに保存したキーでサービスアカウントを使用します。
  • token - fakegcsなどを使用するローカルテスト用です。

repo-gcs-key-type=serviceの場合、認証トークンの更新時に認証情報を再読み込みします。

default: service
example: --repo1-gcs-key-type=auto

GCSリポジトリプロジェクトIDオプション(--repo-gcs-user-project)

GCSのプロジェクトIDです。

リクエストの課金先を決定するために使用するGCSプロジェクトIDです。

example: --repo1-gcs-user-project=my-project

リポジトリホストオプション(--repo-host)

リモート操作時のリポジトリホストです。

ローカルにマウントされたファイルシステムにバックアップおよびアーカイブする場合、この設定は不要です。

example: --repo1-host=repo1.domain.com

非推奨の名前:backup-host

リポジトリホスト認証局ファイルオプション(--repo-host-ca-file)

リポジトリホストの認証局ファイルです。

リポジトリホストへの接続に、システムのデフォルト以外のCAファイルを使用します。

example: --repo1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt

リポジトリホスト認証局パスオプション(--repo-host-ca-path)

リポジトリホストの認証局パスです。

リポジトリホストへの接続に、システムのデフォルト以外のCAパスを使用します。

example: --repo1-host-ca-path=/etc/pki/tls/certs

リポジトリホスト証明書ファイルオプション(--repo-host-cert-file)

リポジトリホストの証明書ファイルです。

クライアントの身元を証明するためにリポジトリホストに送信します。

example: --repo1-host-cert-file=/path/to/client.crt

リポジトリホストコマンドオプション(--repo-host-cmd)

リポジトリホストのpgBackRestコマンドです。

pgBackRestコマンドのパスがローカルホストとリポジトリホストで異なる場合にのみ必要です。未定義の場合、リポジトリホストのコマンドにはローカルと同じコマンドを設定します。

default: [path of executed pgbackrest binary]
example: --repo1-host-cmd=/usr/lib/backrest/bin/pgbackrest

非推奨の名前:backup-cmd

リポジトリホスト設定オプション(--repo-host-config)

pgBackRestリポジトリホストの設定ファイルです。

リポジトリホスト上の設定ファイルの場所を設定します。リポジトリホストの設定ファイルがローカルの設定ファイルと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --repo1-host-config=/conf/pgbackrest/pgbackrest.conf

非推奨の名前:backup-config

リポジトリホスト追加設定パスオプション(--repo-host-config-include-path)

pgBackRestリポジトリホストの追加設定パスです。

リポジトリホスト上の追加設定パスの場所を設定します。リポジトリホストの追加設定パスがローカルの追加設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --repo1-host-config-include-path=/conf/pgbackrest/conf.d

リポジトリホスト設定パスオプション(--repo-host-config-path)

pgBackRestリポジトリホストの設定パスです。

リポジトリホスト上の設定パスの場所を設定します。リポジトリホストの設定パスがローカルの設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH
example: --repo1-host-config-path=/conf/pgbackrest

リポジトリホストキーファイルオプション(--repo-host-key-file)

リポジトリホストのキーファイルです。

クライアント証明書が所有者によって送信されたことを証明します。

example: --repo1-host-key-file=/path/to/client.key

リポジトリホストポートオプション(--repo-host-port)

repo-hostが設定されている場合のリポジトリホストのポートです。

リポジトリホストのプロトコルにデフォルト以外のポートを指定するには、このオプションを使用します。

注記: repo-host-type=sshの場合、repo-host-portにデフォルト値はありません。この場合、ポートはcmd-sshで指定したコマンドの設定に従います。

default (depending on repo-host-type):
    tls - 8432

allowed: [0, 65535]
example: --repo1-host-port=25

非推奨の名前:backup-ssh-port

リポジトリホストプロトコル種別オプション(--repo-host-type)

リポジトリホストのプロトコル種別です。

次のプロトコル種別をサポートします。

  • ssh - Secure Shell。
  • tls - pgBackRest TLSサーバー。
default: ssh
example: --repo1-host-type=tls

リポジトリホストユーザーオプション(--repo-host-user)

repo-hostが設定されている場合のリポジトリホストのユーザーです。

リポジトリホスト上の操作に使用するユーザーを定義します。postgresユーザーではなく、pgbackrestなどの別のユーザーを使用することを推奨します。リポジトリホストでPostgreSQLを実行する場合は、postgresユーザーをpgbackrestグループに追加することで、リポジトリの内容を誤って破損させずに読み取り権限を与えられます。

default: pgbackrest
example: --repo1-host-user=repo-user

非推奨の名前:backup-user

リポジトリパスオプション(--repo-path)

バックアップとアーカイブを保存するパスです。

リポジトリは、pgBackRestがバックアップを保存し、WALセグメントをアーカイブする場所です。

必要な容量を事前に見積もるのは難しい場合があります。まずいくつかバックアップを取得し、各種類(full/incr/diff)のバックアップサイズを記録して、1日当たりに生成されるWALの量を測定するのが最善です。これにより、必要な容量のおおよその見当が付きます。ただし、データベースの変化に伴い、必要量も時間とともに変わる可能性があります。

default: /var/lib/pgbackrest
example: --repo1-path=/backup/db/backrest

S3リポジトリバケットオプション(--repo-s3-bucket)

S3リポジトリのバケットです。

リポジトリの保存に使用するS3バケットです。

repo-path=/を設定するとpgBackRestリポジトリをバケットのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのAWSが生成するコンテンツもバケットに保存できるようにすることを推奨します。

example: --repo1-s3-bucket=pg-backup

S3リポジトリエンドポイントオプション(--repo-s3-endpoint)

S3リポジトリのエンドポイントです。

選択したリージョンに対して有効なAWSエンドポイントを使用してください。

独自の構成やテスト構成では、repo-storage-ca-file、repo-storage-ca-path、repo-storage-host、repo-storage-port、repo-storage-verify-tlsの各オプションが役立つ場合があります。

example: --repo1-s3-endpoint=s3.amazonaws.com

S3リポジトリキー種別オプション(--repo-s3-key-type)

S3リポジトリのキー種別です。

次の種別をサポートします。

  • shared - 共有キー
  • auto - 一時認証情報を自動取得
  • web-id - ウェブID認証情報を自動取得
  • pod-id - EKS Pod Identityの認証情報を自動取得
  • process - プロセスを実行して認証情報を取得
default: shared
example: --repo1-s3-key-type=auto

S3リポジトリKMSキーIDオプション(--repo-s3-kms-key-id)

S3リポジトリのKMSキーです。

指定したAWS Key Management Serviceのキーを使用して、S3のサーバー側暗号化を有効にします。

example: --repo1-s3-kms-key-id=bceb4f13-6939-4be3-910d-df54dee817b7

S3認証プロセスコマンドオプション(--repo-s3-process-cmd)

S3の認証プロセスコマンドです。

一時的なS3認証情報を取得するために実行するコマンド(および任意の引数)です。リストの最初の要素がコマンドで、残りの要素はパラメーターとして渡します。

プロセスは、AccessKeyId、SecretAccessKey、SessionToken、Expirationフィールドを含むJSONを出力する必要があります。認証情報は有効期限の前に自動更新されます。形式の詳細は、プロセス認証情報プロバイダー を参照してください。

example: --repo1-s3-process-cmd=/usr/local/bin/get-credentials --repo1-s3-process-cmd=--role --repo1-s3-process-cmd=my-role

S3リポジトリリージョンオプション(--repo-s3-region)

S3リポジトリのリージョンです。

バケットを作成したAWSリージョンです。

example: --repo1-s3-region=us-east-1

S3リポジトリのリクエスタ支払いオプション(--repo-s3-requester-pays)

S3リポジトリのリクエスタ支払いです。

S3のリクエスタ支払いを有効にします。

default: n
example: --no-repo1-s3-requester-pays

S3リポジトリロールオプション(--repo-s3-role)

S3リポジトリのロールです。

repo-s3-key-type=autoの場合に、一時認証情報の取得に使用するAWSロール名(完全なARNではありません)です。

example: --repo1-s3-role=authrole

S3リポジトリサービスオプション(--repo-s3-service)

S3の署名サービスです。

SigV4認証で使用するS3署名サービスです。標準のS3エンドポイントでは、デフォルトはs3です。S3 Outpostsエンドポイントを使用する場合は、s3-outpostsに設定します。

default: s3
example: --repo1-s3-service=s3-outposts

S3リポジトリSTSエンドポイントオプション(--repo-s3-sts-host)

S3リポジトリのSTSエンドポイントです。

repo-s3-key-type=web-idを設定した場合に、一時認証情報の取得に使用するSTSエンドポイントです。リージョン別STSを使用するには、リージョン別エンドポイント(例:sts.us-east-1.amazonaws.com)を設定します。GovCloudや中国リージョンで必要になる場合や、レイテンシーを低減するために使用する場合があります。

default: sts.amazonaws.com
example: --repo1-s3-sts-host=sts.us-east-1.amazonaws.com

S3リポジトリURI形式オプション(--repo-s3-uri-style)

S3のURI形式です。

次のURI形式をサポートします。

  • host - bucket.endpointホストに接続します。
  • path - endpointホストに接続し、URIの先頭にバケットを付加します。
default: host
example: --repo1-s3-uri-style=path

SFTPリポジトリホストオプション(--repo-sftp-host)

SFTPリポジトリのホストです。

リポジトリが存在するSFTPホストです。

example: --repo1-sftp-host=sftprepo.domain

SFTPリポジトリホストフィンガープリントオプション(--repo-sftp-host-fingerprint)

SFTPリポジトリホストのフィンガープリントです。

SFTPリポジトリホストのフィンガープリントの生成方法は、repo-sftp-host-key-hash-typeと一致させてください。awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -bでフィンガープリントを生成します。sshホストキーは通常、/etc/sshディレクトリにあります。

example: --repo1-sftp-host-fingerprint=f84e172dfead7aeeeae6c1fdfb5aa8cf

SFTPホストキー確認方式オプション(--repo-sftp-host-key-check-type)

SFTPのホストキー確認方式です。

次のSFTPホストキー確認方式をサポートします。

  • strict - pgBackRestは~/.ssh/known_hostsファイルにホストキーを自動追加せず、ホストキーが変更されたホスト、または既知のホストファイルで見つからないホストへの接続を拒否します。このオプションでは、新しいホストをすべて手動で追加する必要があります。
  • accept-new - pgBackRestは新しいホストキーをユーザーの既知のホストファイルに自動追加しますが、ホストキーが変更されたホストへの接続は許可しません。
  • fingerprint - pgBackRestは、repo-sftp-host-fingerprintオプションで指定したフィンガープリントとホストキーを照合します。
  • none - ホストキーを確認しません。
default: strict
example: --repo1-sftp-host-key-check-type=accept-new

SFTPリポジトリホストキーハッシュ種別オプション(--repo-sftp-host-key-hash-type)

SFTPリポジトリのホストキーハッシュ種別です。

SFTPリポジトリのホストキーハッシュ種別です。SSHの開始時に、リモートシステムのホストキーのダイジェスト計算に使用するハッシュ種別を指定します。新しいバージョンのlibssh2は、md5とsha1に加えてsha256もサポートします。

example: --repo1-sftp-host-key-hash-type=sha256

SFTPリポジトリホストポートオプション(--repo-sftp-host-port)

SFTPリポジトリホストのポートです。

SFTPリポジトリホストのポートです。

default: 22
allowed: [1, 65535]
example: --repo1-sftp-host-port=22

SFTPリポジトリホストユーザーオプション(--repo-sftp-host-user)

SFTPリポジトリホストのユーザーです。

リポジトリの保存に使用するホスト上のユーザーです。

example: --repo1-sftp-host-user=pg-backup

SFTP既知ホストファイルオプション(--repo-sftp-known-host)

SFTPの既知のホストファイルです。

認証時に一致するSFTPホストを探す既知のホストファイルです。未指定の場合、pgBackRestはデフォルトで~/.ssh/known_hosts、~/.ssh/known_hosts2、/etc/ssh/ssh_known_hosts、/etc/ssh/ssh_known_hosts2を検索します。1つ以上のファイルパスを設定した場合は、それらを検索して一致を確認します。ファイルパスは絶対パス、または先頭がチルダのパスである必要があります。repo-sftp-known-hostオプションを複数回指定することで、検索する既知のホストファイルを複数指定できます。既知のホストファイルによる確認を使用するには、repo-sftp-host-fingerprintを指定してはいけません。repo-sftp-host-check-typeオプションも参照してください。

example: --repo1-sftp-known-host=/home/postgres/.ssh/known_hosts

SFTPリポジトリ秘密鍵ファイルオプション(--repo-sftp-private-key-file)

SFTPの秘密鍵ファイルです。

認証に使用するSFTP秘密鍵ファイルです。

example: --repo1-sftp-private-key-file=~/.ssh/id_ed25519

SFTPリポジトリ公開鍵ファイルオプション(--repo-sftp-public-key-file)

SFTPの公開鍵ファイルです。

認証に使用するSFTP公開鍵ファイルです。OpenSSLに対してコンパイルした場合は任意ですが、別のライブラリに対してコンパイルした場合は必須です。

example: --repo1-sftp-public-key-file=~/.ssh/id_ed25519.pub

リポジトリストレージCAファイルオプション(--repo-storage-ca-file)

リポジトリストレージのCAファイルです。

ストレージ(例:S3、Azure)の証明書に、システムのデフォルト以外のCAファイルを使用します。

example: --repo1-storage-ca-file=/etc/pki/tls/certs/ca-bundle.crt

非推奨の名前:repo-azure-ca-file, repo-s3-ca-file

リポジトリストレージTLS CAパスオプション(--repo-storage-ca-path)

リポジトリストレージのCAパスです。

ストレージ(例:S3、Azure)の証明書に、システムのデフォルト以外のCAパスを使用します。

example: --repo1-storage-ca-path=/etc/pki/tls/certs

非推奨の名前:repo-azure-ca-path, repo-s3-ca-path

リポジトリストレージホストオプション(--repo-storage-host)

リポジトリストレージのホストです。

ストレージ(例:S3、Azure)のエンドポイントとは異なるホストに接続します。通常はテストに使用します。

example: --repo1-storage-host=127.0.0.1

非推奨の名前:repo-azure-host, repo-s3-host

リポジトリストレージポートオプション(--repo-storage-port)

リポジトリストレージのポートです。

ストレージ(例:S3、Azure)のエンドポイント(ホストを指定した場合はそのホスト)への接続に使用するポートです。

default: 443
allowed: [1, 65535]
example: --repo1-storage-port=9000

非推奨の名前:repo-azure-port, repo-s3-port

リポジトリストレージタグオプション(--repo-storage-tag)

リポジトリストレージのタグです。

リポジトリがオブジェクトストア(例:S3)の場合に、オブジェクトに付加するタグを指定します。このオプションを繰り返して、複数のタグを追加できます。

pgBackRestにはこれらのタグを変更する機能がないため、リポジトリ全体でタグを統一するには、stanza-createを実行する前に正しく設定してください。

example: --repo1-storage-tag=key1=value1

リポジトリストレージアップロードチャンクサイズオプション(--repo-storage-upload-chunk-size)

リポジトリストレージのアップロードチャンクサイズです。

S3などのオブジェクトストアでは、ファイルが大きすぎてメモリに格納できない場合に、チャンクに分けてアップロードできます。ファイルをメモリに格納できる場合でも、アップロードに使用するメモリ量を制限する方がメモリ効率は高くなります。

チャンクサイズを大きくすると、アップロードリクエストを最小限に抑え、チャンク分割せずに1回のリクエストでアップロードできるファイルが増えるため、一般にパフォーマンスが向上します。一方、メモリ使用量は増加します。チャンクバッファーはプロセスごとに割り当てる必要があるため、process-maxの値が大きいほど、全体のメモリ消費量も増えます。

有効なチャンクサイズは、ストレージの種類やプラットフォームによって異なります。たとえば、AWS S3の最小チャンクサイズは5MiBです。チャンクサイズの呼び方もストレージの種類によって異なるため、最小値/最大値を調べる際は、AWS S3では「part size」、GCSでは「chunk size」、Azureでは「block size」を使用してください。

ファイルが1GiB(PostgreSQLがデフォルトで作成する最大サイズ)より大きい場合、ファイルのアップロードを完了するために、許容される最大値までチャンクサイズを段階的に増やします。

default (depending on repo-type):
    azure - 4MiB
    gcs - 4MiB
    s3 - 5MiB

allow range (depending on repo-type):
    azure - [4MiB, 1GiB]
    gcs - [4MiB, 1GiB]
    s3 - [5MiB, 1GiB]

example: --repo1-storage-upload-chunk-size=16MiB

リポジトリストレージ証明書検証オプション(--repo-storage-verify-tls)

リポジトリストレージの証明書を検証します。

このオプションでは、ストレージ(例:S3、Azure)サーバーのTLS証明書の検証を有効/無効にできます。無効化は、テストや自己署名証明書を使用する場合に限ってください。

default: y
example: --no-repo1-storage-verify-tls

非推奨の名前:repo-azure-verify-tls, repo-s3-verify-ssl, repo-s3-verify-tls

リポジトリ種別オプション(--repo-type)

リポジトリに使用するストレージの種類です。

次のリポジトリ種類をサポートします。

  • azure - Azure Blob Storage Service
  • cifs - posixと同様ですが、リンクとディレクトリのfsyncを無効にします
  • gcs - Google Cloud Storage
  • posix - Posix準拠のファイルシステム
  • s3 - AWS Simple Storage Service
  • sftp - Secure File Transfer Protocol

NFSマウントをposixリポジトリとして使用する場合、PostgreSQLのドキュメントに記載されたものと同じ規則がpgBackRestにも適用されます。データベースクラスターの作成 - ファイルシステム を参照してください。

default: posix
example: --repo1-type=cifs

4.2 - アーカイブ取得コマンド(archive-get)

pgBackRestのarchive-getコマンドのオプションと動作のリファレンス。

このコマンドは、PostgreSQLがバックアップのリストアやPITRを実行する際、またはレプリカを最新の状態に保つためにストリーミングの代わりとして使用します。WALセグメントは、PostgreSQLのリカバリーやレプリカの維持に必要です。

複数のリポジトリが設定されている場合、WALは優先度順(例:repo1、repo2など)にリポジトリから取得します。一般に、より高速または低コストのストレージを高い優先度にする方が適切です。--repoオプションでリポジトリを指定した場合は、そのリポジトリだけを検索します。

archive-getコマンドは、リストア時にpgBackRestがPostgreSQLで使用するように設定し、生成します。例は、ポイントインタイムリカバリー を参照してください。

コマンドオプション

非同期アーカイブオプション(--archive-async)

WALセグメントを非同期に送信/取得します。

archive-pushコマンドとarchive-getコマンドの非同期処理を有効にします。

非同期処理では接続の再利用と並列処理が可能なため、効率が向上します。詳細はspool-path、archive-get-queue-max、archive-push-queue-maxの各オプションを参照してください。

default: n
example: --archive-async

アーカイブ取得キューの最大サイズオプション(--archive-get-queue-max)

pgBackRestのarchive-getキューの最大サイズです。

archive-asyncが有効な場合のarchive-getキューの最大サイズを指定します。キューはspool-pathに格納され、PostgreSQLへのWALの提供を高速化するために使用されます。

default: 128MiB
allowed: [0B, 4PiB]
example: --archive-get-queue-max=1GiB

欠落WALセグメントの再試行オプション(--archive-missing-retry)

欠落したWALセグメントの取得を再試行します。

非同期モードのarchive-getコマンドが以前に欠落を報告したWALセグメントの取得を再試行します。これにより、以前のリストアでスプールパスに残された通知が使用され、一貫性が確保される前にリカバリーが失敗する事態を防ぎます。

このオプションを無効にすると、PostgreSQLはアーカイブ内のWALの末尾に到達したことをより確実に認識し、プライマリーからのストリーミングに切り替えられます。再試行が有効な場合は、WALが継続的にアーカイブされると、PostgreSQLはストリーミングに切り替えずにアーカイブからのWAL取得を続けます。

このオプションを無効にする場合は、stanzaのスプールパスが空であることを必ず確認してください。リストア時にスプールパスが設定されていれば、restoreコマンドが自動的に空にします。それ以外の場合は、ユーザーがスプールパスを空にする必要があります。

default: y
example: --no-archive-missing-retry

アーカイブタイムアウトオプション(--archive-timeout)

アーカイブのタイムアウトです。

各WALセグメントがpgBackRestのアーカイブリポジトリに到達するまで待機する最大時間を秒単位で設定します。このタイムアウトは、バックアップの一貫性に必要なWALセグメントのアーカイブを待つ際に、checkコマンドとbackupコマンドに適用されます。

default: 1m
allowed: [100ms, 1d]
example: --archive-timeout=30

一般オプション

rootでの実行許可オプション(--allow-root)

rootユーザーによるコマンドの実行を許可します。

デフォルトでは、ファイルの所有権を慎重に管理するように設計されたrestoreコマンドのみをrootユーザーで実行できます。ほかのコマンドをrootで実行すると、たとえばリポジトリ内にroot所有のファイルが作成され、PostgreSQLユーザーがアクセスできなくなって、後続のコマンドが失敗するおそれがあります。

それでもコマンドをrootで実行する場合は、このオプションを有効にします。ただし、リポジトリとPostgreSQLクラスターを所有するユーザーとしてpgBackRestを実行する方がはるかに適切です。

default: n
example: --allow-root

バッファーサイズオプション(--buffer-size)

I/O処理のバッファーサイズです。

コピー、圧縮、暗号化などの処理に使用するバッファーサイズです。使用するバッファーの数はオプションによって異なり、各処理で追加のメモリを使用する場合があります。たとえば、gz圧縮では256KiBのメモリを追加で使用する場合があります。

指定できる値は、16KiB、32KiB、64KiB、128KiB、256KiB、512KiB、1MiB、2MiB、4MiB、8MiB、16MiBです。

default: 1MiB
example: --buffer-size=2MiB

pgBackRestコマンドオプション(--cmd)

pgBackRestコマンドです。

pgBackRestは、たとえばrestoreコマンドがrestore_command設定を生成する際に、コマンド文字列を生成することがあります。この場合、cmdオプションを指定しない限り、pgBackRestプロセスの実行に使用したコマンドが使われます。

注意:

pgBackRestコマンドをラッパー経由で実行すると、予測できない動作を引き起こす可能性があるため、推奨しません。

default: [path of executed pgbackrest binary]
example: --cmd=/var/lib/pgsql/bin/pgbackrest_wrapper.sh

SSHクライアントコマンドオプション(--cmd-ssh)

SSHクライアントのコマンドです。

別のSSHクライアントを使用したい場合や、sshコマンドが$PATHに含まれていない場合に、使用するSSHクライアントコマンドを指定します。

default: ssh
example: --cmd-ssh=/usr/bin/ssh

ネットワーク圧縮レベルオプション(--compress-level-network)

ネットワークの圧縮レベルです。

compress-type=noneで、コマンドがリポジトリと同じホストで実行されない場合のネットワーク圧縮レベルを設定します。圧縮によってネットワークトラフィックを削減します。compress-typeがnoneでない場合は、ファイルを1回だけ圧縮するように、compress-level-network設定を無視して代わりにcompress-levelを使用します。

default: 1
allowed: [-5, 12]
example: --compress-level-network=1

設定ファイルオプション(--config)

pgBackRestの設定ファイルです。

デフォルトとは異なる設定ファイルを指定するには、このオプションを使用します。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --config=/conf/pgbackrest/pgbackrest.conf

追加設定パスオプション(--config-include-path)

追加のpgBackRest設定ファイルへのパスです。

指定した場所にある拡張子.confの設定ファイルをpgBackRest設定ファイルと連結し、1つの設定ファイルとして扱います。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --config-include-path=/conf/pgbackrest/conf.d

設定パスオプション(--config-path)

pgBackRest設定ファイルの基準パスです。

この設定は、--configと--config-include-pathの各オプションがコマンドラインで明示的に設定されていない場合に、それらのデフォルトの基準パスを上書きします。

たとえば、--config-path=/conf/pgbackrestだけを渡すと、--configのデフォルトは/conf/pgbackrest/pgbackrest.confに、--config-include-pathのデフォルトは/conf/pgbackrest/conf.dに設定されます。

default: CFGOPTDEF_CONFIG_PATH
example: --config-path=/conf/pgbackrest

I/Oタイムアウトオプション(--io-timeout)

I/Oのタイムアウトです。

接続および読み取り/書き込み処理に使用する、秒単位のタイムアウトです。

読み取り/書き込み処理全体がこのタイムアウト内に完了する必要はありませんが、わずか1バイトでも、何らかの進展が必要です。

default: 1m
allowed: [100ms, 1h]
example: --io-timeout=120

ロックパスオプション(--lock-path)

ロックファイルを保存するパスです。

ロックパスは、pgBackRestが競合する処理の同時実行を防ぐためのロックファイルを作成する場所です。

default: /tmp/pgbackrest
example: --lock-path=/backup/db/lock

固定umaskオプション(--neutral-umask)

固定のumaskを使用します。

umaskを0000に設定し、リポジトリ内のファイルやディレクトリが適切な権限で作成されるようにします。デフォルトのディレクトリ権限は0750、ファイル権限は0640です。

代わりに実行ユーザーのumaskを使用するには、設定ファイルにneutral-umask=n、またはコマンドラインに--no-neutral-umaskを指定します。

default: y
example: --no-neutral-umask

プロセス優先度設定オプション(--priority)

プロセスの優先度を設定します。

カーネルのスケジューラーがプロセスに与える優先度(niceness)を定義します。正の値は優先度を下げ、負の値は優先度を上げます。通常、プロセスには自身の優先度を上げる権限がありません。

allowed: [-20, 19]
example: --priority=19

最大プロセス数オプション(--process-max)

圧縮/転送に使用する最大プロセス数です。

各プロセスが圧縮と転送を実行することでコマンドを高速化しますが、データベースのパフォーマンスに影響するほどprocess-maxを高く設定しないでください。

default: 1
allowed: [1, 999]
example: --process-max=4

プロトコルタイムアウトオプション(--protocol-timeout)

プロトコルのタイムアウトです。

ローカルまたはリモートのプロセスが、プロトコル層で新しいメッセージの受信を待つタイムアウトを秒単位で設定します。これにより、プロセスがメッセージを無期限に待ち続けることを防ぎます。

注記: protocol-timeoutオプションは、db-timeoutオプションより大きくする必要があります。

default: 31m
allowed: [100ms, 7d]
example: --protocol-timeout=630

キープアライブオプション(--sck-keep-alive)

キープアライブを有効にします。

ソケット接続でキープアライブメッセージを有効にします。

default: y
example: --no-sck-keep-alive

スプールパスオプション(--spool-path)

一時的なデータを保存するパスです。

このパスは、非同期のarchive-pushコマンドとarchive-getコマンドのデータを保存するために使用します。

非同期のarchive-pushコマンドは、アーカイブへのWALの保存が成功すると確認応答を(失敗時にはエラーを)スプールパスに書き込み、フォアグラウンドプロセスがPostgreSQLに速やかに通知できるようにします。確認応答ファイルは非常に小さく、成功時は0バイト、エラー時も数百バイトです。

非同期のarchive-getコマンドは、PostgreSQLの要求時にWALをすぐに提供できるよう、スプールパスにWALをキューイングします。スプールパスがpg_xlog/pg_walと同じファイルシステム上にあると、PostgreSQLへのファイル移動が最も効率的です。ただし、スプールパスをpg_xlog/pg_walディレクトリの内部に配置すると、pg_rewindなどのPostgreSQLユーティリティーに問題が生じる可能性があるため、推奨しません。

スプールパスに保存されたデータは再起動後も保持でき、保持することが望ましいため、厳密には一時データではありません。ただし、スプールパス内のデータが失われても問題はありません。pgBackRestは、archive-pushでは各WALセグメントが安全にアーカイブされていることを再確認し、archive-getではキューを再構築するだけです。

スプールパスは、NFSやCIFSなどのリモートファイルシステムではなく、ローカルのPosix互換ファイルシステム上に置くことを想定しています。

default: /var/spool/pgbackrest
example: --spool-path=/backup/db/spool

stanzaオプション(--stanza)

stanzaを定義します。

stanzaは、PostgreSQLデータベースクラスターの場所、バックアップ方法、アーカイブオプションなどを定義する設定です。ほとんどのデータベースサーバーにはPostgreSQLデータベースクラスターが1つだけ存在し、stanzaも1つになります。一方、バックアップサーバーには、バックアップが必要なデータベースクラスターごとにstanzaがあります。

stanzaにはプライマリークラスターにちなんだ名前を付けたくなりますが、クラスターに含まれるデータベースを表す名前の方が適しています。stanza名はプライマリーとすべてのレプリカで使用するため、mainやprodなどのローカルクラスター名よりも、appやdwなど、クラスターの実際の役割を表す名前を選ぶ方が適切です。

example: --stanza=main

キープアライブ回数オプション(--tcp-keep-alive-count)

キープアライブの回数です。

接続が切れたと判断するまでに、応答がなくても許容するTCPキープアライブメッセージの数を指定します。

このオプションは、TCP_KEEPCNTソケットオプションをサポートするシステムで利用できます。

allowed: [1, 32]
example: --tcp-keep-alive-count=3

キープアライブ待機時間オプション(--tcp-keep-alive-idle)

キープアライブの待機時間です。

ネットワーク通信がない状態で、オペレーティングシステムがTCPキープアライブメッセージを送信するまでの時間を秒単位で指定します。

このオプションは、TCP_KEEPIDLEソケットオプションをサポートするシステムで利用できます。

allowed: [1, 3600]
example: --tcp-keep-alive-idle=60

キープアライブ間隔オプション(--tcp-keep-alive-interval)

キープアライブの送信間隔です。

応答のないTCPキープアライブメッセージを再送信するまでの時間を秒単位で指定します。

このオプションは、TCP_KEEPINTVLソケットオプションをサポートするシステムで利用できます。

allowed: [1, 900]
example: --tcp-keep-alive-interval=30

TLSv1.2暗号スイートオプション(--tls-cipher-12)

許可するTLSv1.2暗号スイートです。

pgBackRestクライアントとサーバー間のすべてのTLS接続は暗号化されます。デフォルトでは、オブジェクトストア(例:S3)への接続も暗号化されます。

注記: どのトランスポート接続でも、セキュリティーの最低要件はTLSv1.2です。

必要に応じて、受け入れる暗号スイートを調整できます。特別なセキュリティー要件がなければ、例に示す値が妥当な選択です。未設定(デフォルト)の場合は、使用するOpenSSLライブラリのデフォルトが適用されます。

example: --tls-cipher-12=HIGH:MEDIUM:+3DES:!aNULL

TLSv1.3暗号スイートオプション(--tls-cipher-13)

許可するTLSv1.3暗号スイートです。

pgBackRestクライアントとサーバー間のすべてのTLS接続は暗号化されます。デフォルトでは、オブジェクトストア(例:S3)への接続も暗号化されます。

注記: どのトランスポート接続でも、セキュリティーの最低要件はTLSv1.2です。

必要に応じて、受け入れる暗号スイートを調整できます。未設定(デフォルト)の場合は、使用するOpenSSLライブラリのデフォルトが適用されます。

example: --tls-cipher-13=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256

ログオプション

コンソールログレベルオプション(--log-level-console)

コンソールに出力するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: warn
example: --log-level-console=error

ファイルログレベルオプション(--log-level-file)

ファイルに記録するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: info
example: --log-level-file=debug

標準エラーログレベルオプション(--log-level-stderr)

stderrに出力するログのレベルです。

stdout(log-level-consoleで指定)の代わりにstderrへ出力するログレベルを指定します。stderrにはタイムスタンプとプロセスを出力しません。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: off
example: --log-level-stderr=error

ログパスオプション(--log-path)

ログファイルを保存するパスです。

ログパスは、pgBackRestがログファイルを保存する場所です。log-level-file=offの場合、ログパスは不要です。

default: /var/log/pgbackrest
example: --log-path=/backup/db/log

サブプロセスログオプション(--log-subprocess)

サブプロセスでのログ記録を有効にします。

このプロセスが作成するすべてのサブプロセスで、log-level-fileで指定したログレベルによるファイルへのログ記録を有効にします。

default: n
example: --log-subprocess

ログタイムスタンプオプション(--log-timestamp)

ログのタイムスタンプを有効にします。

コンソールとファイルのログでタイムスタンプを有効にします。このオプションは、ドキュメント生成などの特殊な状況では無効にします。

default: y
example: --no-log-timestamp

メンテナー向けオプション

PostgreSQLバージョン強制指定オプション(--pg-version-force)

PostgreSQLのバージョンを強制指定します。

pg_controlまたはWALヘッダーを読み取って自動検出したバージョンの代わりに、指定したPostgreSQLバージョンを使用します。これは主に、これらの値がリリース版とは異なるPostgreSQLのフォークや開発版で役立ちます。PostgreSQLがserver_version_numで報告するバージョンは、強制指定したバージョンと一致する必要があります。

警告:

このオプションは慎重に使用してください。pg_controlとWALヘッダーは引き続き、指定バージョンで想定される形式、つまり公式のオープンソース版PostgreSQLの形式で読み取られます。フォークや開発版が、pgBackRestの依存するフィールドの形式を変更していると、予期しない動作が生じます。一般に、このオプションが想定どおりに動作するのは、フォークが独自の構造体メンバーをすべて標準のPostgreSQLメンバーの後ろに追加している場合に限られます。

example: --pg-version-force=15

リポジトリオプション

リポジトリ指定オプション(--repo)

リポジトリを指定します。

コマンドの操作対象となるリポジトリを指定します。

たとえば、このオプションを使用すると、pgBackRestに選択させずに、特定のリポジトリからリストアできます。

allowed: [1, 256]
example: --repo=1

Azureリポジトリコンテナーオプション(--repo-azure-container)

Azureリポジトリのコンテナーです。

リポジトリの保存に使用するAzureコンテナーです。

repo-path=/を設定するとpgBackRestリポジトリをコンテナーのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのAzureが生成するコンテンツもコンテナーに保存できるようにすることを推奨します。

example: --repo1-azure-container=pg-backup

Azureリポジトリキー種別オプション(--repo-azure-key-type)

Azureリポジトリのキー種別です。

認可には次の種別をサポートします。

  • shared - 共有キー
  • sas - 共有アクセス署名
  • auto - AzureマネージドIDを使用して自動的に認可
default: shared
example: --repo1-azure-key-type=sas

AzureリポジトリURI形式オプション(--repo-azure-uri-style)

AzureのURI形式です。

次のURI形式をサポートします。

  • host - account.endpointホストに接続します。
  • path - endpointホストに接続し、URIの先頭にアカウントを付加します。
default: host
example: --repo1-azure-uri-style=path

リポジトリ暗号方式オプション(--repo-cipher-type)

リポジトリの暗号化に使用する暗号方式です。

次の暗号方式をサポートします。

  • none - リポジトリを暗号化しません
  • aes-256-cbc - 鍵長256ビットのAdvanced Encryption Standard

リポジトリの種類(例:S3)が暗号化をサポートしていても、暗号化は常にクライアント側で実行されます。

default: none
example: --repo1-cipher-type=aes-256-cbc

GCSリポジトリバケットオプション(--repo-gcs-bucket)

GCSリポジトリのバケットです。

リポジトリの保存に使用するGCSバケットです。

repo-path=/を設定するとpgBackRestリポジトリをバケットのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのGCSが生成するコンテンツもバケットに保存できるようにすることを推奨します。

example: --repo1-gcs-bucket=/pg-backup

GCSリポジトリエンドポイントオプション(--repo-gcs-endpoint)

GCSリポジトリのエンドポイントです。

ストレージサービスへの接続に使用するエンドポイントです。ローカルのGCSサーバーや別のエンドポイントを使用するように変更できます。

default: storage.googleapis.com
example: --repo1-gcs-endpoint=localhost

GCSリポジトリキー種別オプション(--repo-gcs-key-type)

GCSリポジトリのキー種別です。

認可には次の種別をサポートします。

  • auto - インスタンスのサービスアカウントを使用して認可します。
  • service - ローカルに保存したキーでサービスアカウントを使用します。
  • token - fakegcsなどを使用するローカルテスト用です。

repo-gcs-key-type=serviceの場合、認証トークンの更新時に認証情報を再読み込みします。

default: service
example: --repo1-gcs-key-type=auto

GCSリポジトリプロジェクトIDオプション(--repo-gcs-user-project)

GCSのプロジェクトIDです。

リクエストの課金先を決定するために使用するGCSプロジェクトIDです。

example: --repo1-gcs-user-project=my-project

リポジトリホストオプション(--repo-host)

リモート操作時のリポジトリホストです。

ローカルにマウントされたファイルシステムにバックアップおよびアーカイブする場合、この設定は不要です。

example: --repo1-host=repo1.domain.com

非推奨の名前:backup-host

リポジトリホスト認証局ファイルオプション(--repo-host-ca-file)

リポジトリホストの認証局ファイルです。

リポジトリホストへの接続に、システムのデフォルト以外のCAファイルを使用します。

example: --repo1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt

リポジトリホスト認証局パスオプション(--repo-host-ca-path)

リポジトリホストの認証局パスです。

リポジトリホストへの接続に、システムのデフォルト以外のCAパスを使用します。

example: --repo1-host-ca-path=/etc/pki/tls/certs

リポジトリホスト証明書ファイルオプション(--repo-host-cert-file)

リポジトリホストの証明書ファイルです。

クライアントの身元を証明するためにリポジトリホストに送信します。

example: --repo1-host-cert-file=/path/to/client.crt

リポジトリホストコマンドオプション(--repo-host-cmd)

リポジトリホストのpgBackRestコマンドです。

pgBackRestコマンドのパスがローカルホストとリポジトリホストで異なる場合にのみ必要です。未定義の場合、リポジトリホストのコマンドにはローカルと同じコマンドを設定します。

default: [path of executed pgbackrest binary]
example: --repo1-host-cmd=/usr/lib/backrest/bin/pgbackrest

非推奨の名前:backup-cmd

リポジトリホスト設定オプション(--repo-host-config)

pgBackRestリポジトリホストの設定ファイルです。

リポジトリホスト上の設定ファイルの場所を設定します。リポジトリホストの設定ファイルがローカルの設定ファイルと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --repo1-host-config=/conf/pgbackrest/pgbackrest.conf

非推奨の名前:backup-config

リポジトリホスト追加設定パスオプション(--repo-host-config-include-path)

pgBackRestリポジトリホストの追加設定パスです。

リポジトリホスト上の追加設定パスの場所を設定します。リポジトリホストの追加設定パスがローカルの追加設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --repo1-host-config-include-path=/conf/pgbackrest/conf.d

リポジトリホスト設定パスオプション(--repo-host-config-path)

pgBackRestリポジトリホストの設定パスです。

リポジトリホスト上の設定パスの場所を設定します。リポジトリホストの設定パスがローカルの設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH
example: --repo1-host-config-path=/conf/pgbackrest

リポジトリホストキーファイルオプション(--repo-host-key-file)

リポジトリホストのキーファイルです。

クライアント証明書が所有者によって送信されたことを証明します。

example: --repo1-host-key-file=/path/to/client.key

リポジトリホストポートオプション(--repo-host-port)

repo-hostが設定されている場合のリポジトリホストのポートです。

リポジトリホストのプロトコルにデフォルト以外のポートを指定するには、このオプションを使用します。

注記: repo-host-type=sshの場合、repo-host-portにデフォルト値はありません。この場合、ポートはcmd-sshで指定したコマンドの設定に従います。

default (depending on repo-host-type):
    tls - 8432

allowed: [0, 65535]
example: --repo1-host-port=25

非推奨の名前:backup-ssh-port

リポジトリホストプロトコル種別オプション(--repo-host-type)

リポジトリホストのプロトコル種別です。

次のプロトコル種別をサポートします。

  • ssh - Secure Shell。
  • tls - pgBackRest TLSサーバー。
default: ssh
example: --repo1-host-type=tls

リポジトリホストユーザーオプション(--repo-host-user)

repo-hostが設定されている場合のリポジトリホストのユーザーです。

リポジトリホスト上の操作に使用するユーザーを定義します。postgresユーザーではなく、pgbackrestなどの別のユーザーを使用することを推奨します。リポジトリホストでPostgreSQLを実行する場合は、postgresユーザーをpgbackrestグループに追加することで、リポジトリの内容を誤って破損させずに読み取り権限を与えられます。

default: pgbackrest
example: --repo1-host-user=repo-user

非推奨の名前:backup-user

リポジトリパスオプション(--repo-path)

バックアップとアーカイブを保存するパスです。

リポジトリは、pgBackRestがバックアップを保存し、WALセグメントをアーカイブする場所です。

必要な容量を事前に見積もるのは難しい場合があります。まずいくつかバックアップを取得し、各種類(full/incr/diff)のバックアップサイズを記録して、1日当たりに生成されるWALの量を測定するのが最善です。これにより、必要な容量のおおよその見当が付きます。ただし、データベースの変化に伴い、必要量も時間とともに変わる可能性があります。

default: /var/lib/pgbackrest
example: --repo1-path=/backup/db/backrest

S3リポジトリバケットオプション(--repo-s3-bucket)

S3リポジトリのバケットです。

リポジトリの保存に使用するS3バケットです。

repo-path=/を設定するとpgBackRestリポジトリをバケットのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのAWSが生成するコンテンツもバケットに保存できるようにすることを推奨します。

example: --repo1-s3-bucket=pg-backup

S3リポジトリエンドポイントオプション(--repo-s3-endpoint)

S3リポジトリのエンドポイントです。

選択したリージョンに対して有効なAWSエンドポイントを使用してください。

独自の構成やテスト構成では、repo-storage-ca-file、repo-storage-ca-path、repo-storage-host、repo-storage-port、repo-storage-verify-tlsの各オプションが役立つ場合があります。

example: --repo1-s3-endpoint=s3.amazonaws.com

S3リポジトリキー種別オプション(--repo-s3-key-type)

S3リポジトリのキー種別です。

次の種別をサポートします。

  • shared - 共有キー
  • auto - 一時認証情報を自動取得
  • web-id - ウェブID認証情報を自動取得
  • pod-id - EKS Pod Identityの認証情報を自動取得
  • process - プロセスを実行して認証情報を取得
default: shared
example: --repo1-s3-key-type=auto

S3リポジトリKMSキーIDオプション(--repo-s3-kms-key-id)

S3リポジトリのKMSキーです。

指定したAWS Key Management Serviceのキーを使用して、S3のサーバー側暗号化を有効にします。

example: --repo1-s3-kms-key-id=bceb4f13-6939-4be3-910d-df54dee817b7

S3認証プロセスコマンドオプション(--repo-s3-process-cmd)

S3の認証プロセスコマンドです。

一時的なS3認証情報を取得するために実行するコマンド(および任意の引数)です。リストの最初の要素がコマンドで、残りの要素はパラメーターとして渡します。

プロセスは、AccessKeyId、SecretAccessKey、SessionToken、Expirationフィールドを含むJSONを出力する必要があります。認証情報は有効期限の前に自動更新されます。形式の詳細は、プロセス認証情報プロバイダー を参照してください。

example: --repo1-s3-process-cmd=/usr/local/bin/get-credentials --repo1-s3-process-cmd=--role --repo1-s3-process-cmd=my-role

S3リポジトリリージョンオプション(--repo-s3-region)

S3リポジトリのリージョンです。

バケットを作成したAWSリージョンです。

example: --repo1-s3-region=us-east-1

S3リポジトリのリクエスタ支払いオプション(--repo-s3-requester-pays)

S3リポジトリのリクエスタ支払いです。

S3のリクエスタ支払いを有効にします。

default: n
example: --no-repo1-s3-requester-pays

S3リポジトリロールオプション(--repo-s3-role)

S3リポジトリのロールです。

repo-s3-key-type=autoの場合に、一時認証情報の取得に使用するAWSロール名(完全なARNではありません)です。

example: --repo1-s3-role=authrole

S3リポジトリサービスオプション(--repo-s3-service)

S3の署名サービスです。

SigV4認証で使用するS3署名サービスです。標準のS3エンドポイントでは、デフォルトはs3です。S3 Outpostsエンドポイントを使用する場合は、s3-outpostsに設定します。

default: s3
example: --repo1-s3-service=s3-outposts

S3リポジトリSTSエンドポイントオプション(--repo-s3-sts-host)

S3リポジトリのSTSエンドポイントです。

repo-s3-key-type=web-idを設定した場合に、一時認証情報の取得に使用するSTSエンドポイントです。リージョン別STSを使用するには、リージョン別エンドポイント(例:sts.us-east-1.amazonaws.com)を設定します。GovCloudや中国リージョンで必要になる場合や、レイテンシーを低減するために使用する場合があります。

default: sts.amazonaws.com
example: --repo1-s3-sts-host=sts.us-east-1.amazonaws.com

S3リポジトリURI形式オプション(--repo-s3-uri-style)

S3のURI形式です。

次のURI形式をサポートします。

  • host - bucket.endpointホストに接続します。
  • path - endpointホストに接続し、URIの先頭にバケットを付加します。
default: host
example: --repo1-s3-uri-style=path

SFTPリポジトリホストオプション(--repo-sftp-host)

SFTPリポジトリのホストです。

リポジトリが存在するSFTPホストです。

example: --repo1-sftp-host=sftprepo.domain

SFTPリポジトリホストフィンガープリントオプション(--repo-sftp-host-fingerprint)

SFTPリポジトリホストのフィンガープリントです。

SFTPリポジトリホストのフィンガープリントの生成方法は、repo-sftp-host-key-hash-typeと一致させてください。awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -bでフィンガープリントを生成します。sshホストキーは通常、/etc/sshディレクトリにあります。

example: --repo1-sftp-host-fingerprint=f84e172dfead7aeeeae6c1fdfb5aa8cf

SFTPホストキー確認方式オプション(--repo-sftp-host-key-check-type)

SFTPのホストキー確認方式です。

次のSFTPホストキー確認方式をサポートします。

  • strict - pgBackRestは~/.ssh/known_hostsファイルにホストキーを自動追加せず、ホストキーが変更されたホスト、または既知のホストファイルで見つからないホストへの接続を拒否します。このオプションでは、新しいホストをすべて手動で追加する必要があります。
  • accept-new - pgBackRestは新しいホストキーをユーザーの既知のホストファイルに自動追加しますが、ホストキーが変更されたホストへの接続は許可しません。
  • fingerprint - pgBackRestは、repo-sftp-host-fingerprintオプションで指定したフィンガープリントとホストキーを照合します。
  • none - ホストキーを確認しません。
default: strict
example: --repo1-sftp-host-key-check-type=accept-new

SFTPリポジトリホストキーハッシュ種別オプション(--repo-sftp-host-key-hash-type)

SFTPリポジトリのホストキーハッシュ種別です。

SFTPリポジトリのホストキーハッシュ種別です。SSHの開始時に、リモートシステムのホストキーのダイジェスト計算に使用するハッシュ種別を指定します。新しいバージョンのlibssh2は、md5とsha1に加えてsha256もサポートします。

example: --repo1-sftp-host-key-hash-type=sha256

SFTPリポジトリホストポートオプション(--repo-sftp-host-port)

SFTPリポジトリホストのポートです。

SFTPリポジトリホストのポートです。

default: 22
allowed: [1, 65535]
example: --repo1-sftp-host-port=22

SFTPリポジトリホストユーザーオプション(--repo-sftp-host-user)

SFTPリポジトリホストのユーザーです。

リポジトリの保存に使用するホスト上のユーザーです。

example: --repo1-sftp-host-user=pg-backup

SFTP既知ホストファイルオプション(--repo-sftp-known-host)

SFTPの既知のホストファイルです。

認証時に一致するSFTPホストを探す既知のホストファイルです。未指定の場合、pgBackRestはデフォルトで~/.ssh/known_hosts、~/.ssh/known_hosts2、/etc/ssh/ssh_known_hosts、/etc/ssh/ssh_known_hosts2を検索します。1つ以上のファイルパスを設定した場合は、それらを検索して一致を確認します。ファイルパスは絶対パス、または先頭がチルダのパスである必要があります。repo-sftp-known-hostオプションを複数回指定することで、検索する既知のホストファイルを複数指定できます。既知のホストファイルによる確認を使用するには、repo-sftp-host-fingerprintを指定してはいけません。repo-sftp-host-check-typeオプションも参照してください。

example: --repo1-sftp-known-host=/home/postgres/.ssh/known_hosts

SFTPリポジトリ秘密鍵ファイルオプション(--repo-sftp-private-key-file)

SFTPの秘密鍵ファイルです。

認証に使用するSFTP秘密鍵ファイルです。

example: --repo1-sftp-private-key-file=~/.ssh/id_ed25519

SFTPリポジトリ公開鍵ファイルオプション(--repo-sftp-public-key-file)

SFTPの公開鍵ファイルです。

認証に使用するSFTP公開鍵ファイルです。OpenSSLに対してコンパイルした場合は任意ですが、別のライブラリに対してコンパイルした場合は必須です。

example: --repo1-sftp-public-key-file=~/.ssh/id_ed25519.pub

リポジトリストレージCAファイルオプション(--repo-storage-ca-file)

リポジトリストレージのCAファイルです。

ストレージ(例:S3、Azure)の証明書に、システムのデフォルト以外のCAファイルを使用します。

example: --repo1-storage-ca-file=/etc/pki/tls/certs/ca-bundle.crt

非推奨の名前:repo-azure-ca-file, repo-s3-ca-file

リポジトリストレージTLS CAパスオプション(--repo-storage-ca-path)

リポジトリストレージのCAパスです。

ストレージ(例:S3、Azure)の証明書に、システムのデフォルト以外のCAパスを使用します。

example: --repo1-storage-ca-path=/etc/pki/tls/certs

非推奨の名前:repo-azure-ca-path, repo-s3-ca-path

リポジトリストレージホストオプション(--repo-storage-host)

リポジトリストレージのホストです。

ストレージ(例:S3、Azure)のエンドポイントとは異なるホストに接続します。通常はテストに使用します。

example: --repo1-storage-host=127.0.0.1

非推奨の名前:repo-azure-host, repo-s3-host

リポジトリストレージポートオプション(--repo-storage-port)

リポジトリストレージのポートです。

ストレージ(例:S3、Azure)のエンドポイント(ホストを指定した場合はそのホスト)への接続に使用するポートです。

default: 443
allowed: [1, 65535]
example: --repo1-storage-port=9000

非推奨の名前:repo-azure-port, repo-s3-port

リポジトリストレージタグオプション(--repo-storage-tag)

リポジトリストレージのタグです。

リポジトリがオブジェクトストア(例:S3)の場合に、オブジェクトに付加するタグを指定します。このオプションを繰り返して、複数のタグを追加できます。

pgBackRestにはこれらのタグを変更する機能がないため、リポジトリ全体でタグを統一するには、stanza-createを実行する前に正しく設定してください。

example: --repo1-storage-tag=key1=value1

リポジトリストレージアップロードチャンクサイズオプション(--repo-storage-upload-chunk-size)

リポジトリストレージのアップロードチャンクサイズです。

S3などのオブジェクトストアでは、ファイルが大きすぎてメモリに格納できない場合に、チャンクに分けてアップロードできます。ファイルをメモリに格納できる場合でも、アップロードに使用するメモリ量を制限する方がメモリ効率は高くなります。

チャンクサイズを大きくすると、アップロードリクエストを最小限に抑え、チャンク分割せずに1回のリクエストでアップロードできるファイルが増えるため、一般にパフォーマンスが向上します。一方、メモリ使用量は増加します。チャンクバッファーはプロセスごとに割り当てる必要があるため、process-maxの値が大きいほど、全体のメモリ消費量も増えます。

有効なチャンクサイズは、ストレージの種類やプラットフォームによって異なります。たとえば、AWS S3の最小チャンクサイズは5MiBです。チャンクサイズの呼び方もストレージの種類によって異なるため、最小値/最大値を調べる際は、AWS S3では「part size」、GCSでは「chunk size」、Azureでは「block size」を使用してください。

ファイルが1GiB(PostgreSQLがデフォルトで作成する最大サイズ)より大きい場合、ファイルのアップロードを完了するために、許容される最大値までチャンクサイズを段階的に増やします。

default (depending on repo-type):
    azure - 4MiB
    gcs - 4MiB
    s3 - 5MiB

allow range (depending on repo-type):
    azure - [4MiB, 1GiB]
    gcs - [4MiB, 1GiB]
    s3 - [5MiB, 1GiB]

example: --repo1-storage-upload-chunk-size=16MiB

リポジトリストレージ証明書検証オプション(--repo-storage-verify-tls)

リポジトリストレージの証明書を検証します。

このオプションでは、ストレージ(例:S3、Azure)サーバーのTLS証明書の検証を有効/無効にできます。無効化は、テストや自己署名証明書を使用する場合に限ってください。

default: y
example: --no-repo1-storage-verify-tls

非推奨の名前:repo-azure-verify-tls, repo-s3-verify-ssl, repo-s3-verify-tls

リポジトリ対象時刻オプション(--repo-target-time)

リポジトリの対象時刻です。

対象時刻は、コマンドがバージョン管理されたストレージ上のリポジトリを読み取る際の時点を定義します。これにより、ある時点の状態のリポジトリを読み取り、ユーザーの誤操作やマルウェアによって削除または破損したデータをリカバリーできます。

S3、GCS、Azureはストレージのバージョン管理をサポートしますが、通常はデフォルトで有効になっていません。バージョン管理の有効化に加え、S3ではオブジェクトロック、GCSやAzureでは論理削除を有効にすると役立つ場合があります。

repo-target-timeオプションを指定する場合は、repoオプションも指定する必要があります。すべてのリポジトリ種類がバージョン管理をサポートするとは限らず、一般にリカバリーでは単一のリポジトリを対象とするのが妥当です。

ストレージのタイムスタンプとの比較は、指定したタイムスタンプ以下(<=)で行い、タイムスタンプにミリ秒を指定しても切り捨てられます。

example: --repo-target-time=2024-08-08 12:12:12+00

リポジトリ種別オプション(--repo-type)

リポジトリに使用するストレージの種類です。

次のリポジトリ種類をサポートします。

  • azure - Azure Blob Storage Service
  • cifs - posixと同様ですが、リンクとディレクトリのfsyncを無効にします
  • gcs - Google Cloud Storage
  • posix - Posix準拠のファイルシステム
  • s3 - AWS Simple Storage Service
  • sftp - Secure File Transfer Protocol

NFSマウントをposixリポジトリとして使用する場合、PostgreSQLのドキュメントに記載されたものと同じ規則がpgBackRestにも適用されます。データベースクラスターの作成 - ファイルシステム を参照してください。

default: posix
example: --repo1-type=cifs

stanzaオプション

PostgreSQLパスオプション(--pg-path)

PostgreSQLのデータディレクトリです。

PostgreSQLが報告するdata_directoryと同じ値を設定してください。この値はさまざまな場所から読み取れますが、リストアやオフラインバックアップ時にそれらを利用できない場合に備えて、設定しておくことが賢明です。

pg-pathオプションは、オンラインバックアップのたびにPostgreSQLが報告する値と照合されるため、常に最新の値であるはずです。

example: --pg1-path=/data/db

非推奨の名前:db-path

4.3 - アーカイブ送信コマンド(archive-push)

pgBackRestのarchive-pushコマンドのオプションと動作のリファレンス。

PostgreSQLからWALセグメントを受け取り、インデックス付きのrepo-pathオプションで定義された各リポジトリにアーカイブします(リポジトリの設定については、リポジトリ セクションを参照)。WALセグメントは、archive-asyncの値に応じて、直ちにアーカイブに送信されるか、ローカルに保存されます。複数のリポジトリが設定されている場合、archive-pushはできる限り多くのリポジトリへの送信を試みます。

archive-pushは、PostgreSQLに設定して呼び出すことを想定しています。例は、アーカイブの設定 を参照してください。

コマンドオプション

非同期アーカイブオプション(--archive-async)

WALセグメントを非同期に送信/取得します。

archive-pushコマンドとarchive-getコマンドの非同期処理を有効にします。

非同期処理では接続の再利用と並列処理が可能なため、効率が向上します。詳細はspool-path、archive-get-queue-max、archive-push-queue-maxの各オプションを参照してください。

default: n
example: --archive-async

アーカイブ確認オプション(--archive-check)

バックアップの完了前に、WALセグメントがアーカイブに存在することを確認します。

バックアップの一貫性を確保するために必要なすべてのWALセグメントが、WALアーカイブに存在することを確認します。別のアーカイブ方法を使用していない限り、デフォルトのままにしておくことを推奨します。

archive-copyが有効な場合は、このオプションを有効にする必要があります。

default: y
example: --no-archive-check

アーカイブモード確認オプション(--archive-mode-check)

PostgreSQLのarchive_mode設定を確認します。

このオプションはデフォルトで有効で、PostgreSQLのarchive_mode=alwaysを禁止します。

スタンバイサーバーから送信されたWALセグメントは、プライマリーから送信されたWALセグメントと論理的には同じでも、チェックサムが異なる場合があります。競合を避けるため、複数のソースからのアーカイブを無効にすることを推奨します。

注意:

このオプションを無効にする場合は、archive-pushコマンドを通じてリポジトリに書き込むアーカイバーが1つだけであることを必ず確認してください。

default: y
example: --no-archive-mode-check

アーカイブ送信バッチサイズオプション(--archive-push-batch-size)

非同期処理の1回の実行で送信するWALの最大量です。

非同期モードでは、archive-pushプロセスは準備ができているすべてのWALセグメントを1回の実行で送信します。archive-push-queue-maxは各実行の開始時にのみ確認されるため、非常に多くのセグメントを処理する実行では、再確認までの間にキューが上限を大幅に超えて増大することがあります。

このオプションは1回の実行で処理するWALの量を制限します。プロセスは終了後、次のarchive-pushによって再び起動され、その際にキューが再確認されます。値を小さくするとキューの確認頻度が高くなりますが、非同期プロセスの起動頻度も高くなります。値はWALセグメント単位で切り捨てられますが、常に少なくとも1つのセグメントは処理されます。

default: 16GiB
allowed: [1MiB, 4PiB]
example: --archive-push-batch-size=1GiB

アーカイブ送信キューの最大サイズオプション(--archive-push-queue-max)

PostgreSQLのアーカイブキューの最大サイズです。

上限に達すると、次の処理が行われます。

  • pgBackRestはWALのアーカイブが成功したことをPostgreSQLに通知した後、そのWALを破棄します。
  • PostgreSQLのログに警告が出力されます。

この場合、アーカイブログの連続性が失われ、その時点より後へのPITRはできなくなります。完全なリストア機能を取り戻すには、新しいバックアップが必要です。

非同期モードでは、キューの上限を再び超えるまでの間にWALが断続的に送信されることを防ぐため、キュー全体を破棄します。

非同期モードでは、この上限は各archive-push実行の開始時にのみ確認されるため、1回の実行中にキューが上限を超えて増大することがあります。キューをより頻繁に確認するには、archive-push-batch-sizeを小さくしてください。

この機能は、ログボリュームが満杯になってPostgreSQLが完全に停止することを防ぐためのものです。PostgreSQLを停止させるよりは、バックアップを失う方を選びます。

allowed: [0B, 4PiB]
example: --archive-push-queue-max=1TiB

非推奨の名前:archive-queue-max

アーカイブタイムアウトオプション(--archive-timeout)

アーカイブのタイムアウトです。

各WALセグメントがpgBackRestのアーカイブリポジトリに到達するまで待機する最大時間を秒単位で設定します。このタイムアウトは、バックアップの一貫性に必要なWALセグメントのアーカイブを待つ際に、checkコマンドとbackupコマンドに適用されます。

default: 1m
allowed: [100ms, 1d]
example: --archive-timeout=30

一般オプション

rootでの実行許可オプション(--allow-root)

rootユーザーによるコマンドの実行を許可します。

デフォルトでは、ファイルの所有権を慎重に管理するように設計されたrestoreコマンドのみをrootユーザーで実行できます。ほかのコマンドをrootで実行すると、たとえばリポジトリ内にroot所有のファイルが作成され、PostgreSQLユーザーがアクセスできなくなって、後続のコマンドが失敗するおそれがあります。

それでもコマンドをrootで実行する場合は、このオプションを有効にします。ただし、リポジトリとPostgreSQLクラスターを所有するユーザーとしてpgBackRestを実行する方がはるかに適切です。

default: n
example: --allow-root

バッファーサイズオプション(--buffer-size)

I/O処理のバッファーサイズです。

コピー、圧縮、暗号化などの処理に使用するバッファーサイズです。使用するバッファーの数はオプションによって異なり、各処理で追加のメモリを使用する場合があります。たとえば、gz圧縮では256KiBのメモリを追加で使用する場合があります。

指定できる値は、16KiB、32KiB、64KiB、128KiB、256KiB、512KiB、1MiB、2MiB、4MiB、8MiB、16MiBです。

default: 1MiB
example: --buffer-size=2MiB

pgBackRestコマンドオプション(--cmd)

pgBackRestコマンドです。

pgBackRestは、たとえばrestoreコマンドがrestore_command設定を生成する際に、コマンド文字列を生成することがあります。この場合、cmdオプションを指定しない限り、pgBackRestプロセスの実行に使用したコマンドが使われます。

注意:

pgBackRestコマンドをラッパー経由で実行すると、予測できない動作を引き起こす可能性があるため、推奨しません。

default: [path of executed pgbackrest binary]
example: --cmd=/var/lib/pgsql/bin/pgbackrest_wrapper.sh

SSHクライアントコマンドオプション(--cmd-ssh)

SSHクライアントのコマンドです。

別のSSHクライアントを使用したい場合や、sshコマンドが$PATHに含まれていない場合に、使用するSSHクライアントコマンドを指定します。

default: ssh
example: --cmd-ssh=/usr/bin/ssh

圧縮オプション(--compress)

ファイル圧縮を使用します。

バックアップファイルは、コマンドラインの圧縮ツールと互換性があります。

このオプションは現在非推奨です。代わりにcompress-typeオプションを使用してください。

default: y
example: --no-compress

圧縮レベルオプション(--compress-level)

ファイルの圧縮レベルです。

compress-typeがnoneでない場合、またはcompress=y(非推奨)の場合に、ファイル圧縮に使用するレベルを設定します。

default (depending on compress-type):
    bz2 - 9
    gz - 6
    lz4 - 1
    zst - 3

allow range (depending on compress-type):
    bz2 - [1, 9]
    gz - [-1, 9]
    lz4 - [-5, 12]
    zst - [-7, 22]

example: --compress-level=9

ネットワーク圧縮レベルオプション(--compress-level-network)

ネットワークの圧縮レベルです。

compress-type=noneで、コマンドがリポジトリと同じホストで実行されない場合のネットワーク圧縮レベルを設定します。圧縮によってネットワークトラフィックを削減します。compress-typeがnoneでない場合は、ファイルを1回だけ圧縮するように、compress-level-network設定を無視して代わりにcompress-levelを使用します。

default: 1
allowed: [-5, 12]
example: --compress-level-network=1

圧縮形式オプション(--compress-type)

ファイルの圧縮形式です。

次の圧縮形式をサポートします。

  • none - 圧縮なし
  • bz2 - bzip2圧縮形式
  • gz - gzip圧縮形式
  • lz4 - lz4圧縮形式(一部のプラットフォームでは利用不可)
  • zst - Zstandard圧縮形式(一部のプラットフォームでは利用不可)
default: gz
example: --compress-type=none

設定ファイルオプション(--config)

pgBackRestの設定ファイルです。

デフォルトとは異なる設定ファイルを指定するには、このオプションを使用します。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --config=/conf/pgbackrest/pgbackrest.conf

追加設定パスオプション(--config-include-path)

追加のpgBackRest設定ファイルへのパスです。

指定した場所にある拡張子.confの設定ファイルをpgBackRest設定ファイルと連結し、1つの設定ファイルとして扱います。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --config-include-path=/conf/pgbackrest/conf.d

設定パスオプション(--config-path)

pgBackRest設定ファイルの基準パスです。

この設定は、--configと--config-include-pathの各オプションがコマンドラインで明示的に設定されていない場合に、それらのデフォルトの基準パスを上書きします。

たとえば、--config-path=/conf/pgbackrestだけを渡すと、--configのデフォルトは/conf/pgbackrest/pgbackrest.confに、--config-include-pathのデフォルトは/conf/pgbackrest/conf.dに設定されます。

default: CFGOPTDEF_CONFIG_PATH
example: --config-path=/conf/pgbackrest

I/Oタイムアウトオプション(--io-timeout)

I/Oのタイムアウトです。

接続および読み取り/書き込み処理に使用する、秒単位のタイムアウトです。

読み取り/書き込み処理全体がこのタイムアウト内に完了する必要はありませんが、わずか1バイトでも、何らかの進展が必要です。

default: 1m
allowed: [100ms, 1h]
example: --io-timeout=120

ロックパスオプション(--lock-path)

ロックファイルを保存するパスです。

ロックパスは、pgBackRestが競合する処理の同時実行を防ぐためのロックファイルを作成する場所です。

default: /tmp/pgbackrest
example: --lock-path=/backup/db/lock

固定umaskオプション(--neutral-umask)

固定のumaskを使用します。

umaskを0000に設定し、リポジトリ内のファイルやディレクトリが適切な権限で作成されるようにします。デフォルトのディレクトリ権限は0750、ファイル権限は0640です。

代わりに実行ユーザーのumaskを使用するには、設定ファイルにneutral-umask=n、またはコマンドラインに--no-neutral-umaskを指定します。

default: y
example: --no-neutral-umask

プロセス優先度設定オプション(--priority)

プロセスの優先度を設定します。

カーネルのスケジューラーがプロセスに与える優先度(niceness)を定義します。正の値は優先度を下げ、負の値は優先度を上げます。通常、プロセスには自身の優先度を上げる権限がありません。

allowed: [-20, 19]
example: --priority=19

最大プロセス数オプション(--process-max)

圧縮/転送に使用する最大プロセス数です。

各プロセスが圧縮と転送を実行することでコマンドを高速化しますが、データベースのパフォーマンスに影響するほどprocess-maxを高く設定しないでください。

default: 1
allowed: [1, 999]
example: --process-max=4

プロトコルタイムアウトオプション(--protocol-timeout)

プロトコルのタイムアウトです。

ローカルまたはリモートのプロセスが、プロトコル層で新しいメッセージの受信を待つタイムアウトを秒単位で設定します。これにより、プロセスがメッセージを無期限に待ち続けることを防ぎます。

注記: protocol-timeoutオプションは、db-timeoutオプションより大きくする必要があります。

default: 31m
allowed: [100ms, 7d]
example: --protocol-timeout=630

キープアライブオプション(--sck-keep-alive)

キープアライブを有効にします。

ソケット接続でキープアライブメッセージを有効にします。

default: y
example: --no-sck-keep-alive

スプールパスオプション(--spool-path)

一時的なデータを保存するパスです。

このパスは、非同期のarchive-pushコマンドとarchive-getコマンドのデータを保存するために使用します。

非同期のarchive-pushコマンドは、アーカイブへのWALの保存が成功すると確認応答を(失敗時にはエラーを)スプールパスに書き込み、フォアグラウンドプロセスがPostgreSQLに速やかに通知できるようにします。確認応答ファイルは非常に小さく、成功時は0バイト、エラー時も数百バイトです。

非同期のarchive-getコマンドは、PostgreSQLの要求時にWALをすぐに提供できるよう、スプールパスにWALをキューイングします。スプールパスがpg_xlog/pg_walと同じファイルシステム上にあると、PostgreSQLへのファイル移動が最も効率的です。ただし、スプールパスをpg_xlog/pg_walディレクトリの内部に配置すると、pg_rewindなどのPostgreSQLユーティリティーに問題が生じる可能性があるため、推奨しません。

スプールパスに保存されたデータは再起動後も保持でき、保持することが望ましいため、厳密には一時データではありません。ただし、スプールパス内のデータが失われても問題はありません。pgBackRestは、archive-pushでは各WALセグメントが安全にアーカイブされていることを再確認し、archive-getではキューを再構築するだけです。

スプールパスは、NFSやCIFSなどのリモートファイルシステムではなく、ローカルのPosix互換ファイルシステム上に置くことを想定しています。

default: /var/spool/pgbackrest
example: --spool-path=/backup/db/spool

stanzaオプション(--stanza)

stanzaを定義します。

stanzaは、PostgreSQLデータベースクラスターの場所、バックアップ方法、アーカイブオプションなどを定義する設定です。ほとんどのデータベースサーバーにはPostgreSQLデータベースクラスターが1つだけ存在し、stanzaも1つになります。一方、バックアップサーバーには、バックアップが必要なデータベースクラスターごとにstanzaがあります。

stanzaにはプライマリークラスターにちなんだ名前を付けたくなりますが、クラスターに含まれるデータベースを表す名前の方が適しています。stanza名はプライマリーとすべてのレプリカで使用するため、mainやprodなどのローカルクラスター名よりも、appやdwなど、クラスターの実際の役割を表す名前を選ぶ方が適切です。

example: --stanza=main

キープアライブ回数オプション(--tcp-keep-alive-count)

キープアライブの回数です。

接続が切れたと判断するまでに、応答がなくても許容するTCPキープアライブメッセージの数を指定します。

このオプションは、TCP_KEEPCNTソケットオプションをサポートするシステムで利用できます。

allowed: [1, 32]
example: --tcp-keep-alive-count=3

キープアライブ待機時間オプション(--tcp-keep-alive-idle)

キープアライブの待機時間です。

ネットワーク通信がない状態で、オペレーティングシステムがTCPキープアライブメッセージを送信するまでの時間を秒単位で指定します。

このオプションは、TCP_KEEPIDLEソケットオプションをサポートするシステムで利用できます。

allowed: [1, 3600]
example: --tcp-keep-alive-idle=60

キープアライブ間隔オプション(--tcp-keep-alive-interval)

キープアライブの送信間隔です。

応答のないTCPキープアライブメッセージを再送信するまでの時間を秒単位で指定します。

このオプションは、TCP_KEEPINTVLソケットオプションをサポートするシステムで利用できます。

allowed: [1, 900]
example: --tcp-keep-alive-interval=30

TLSv1.2暗号スイートオプション(--tls-cipher-12)

許可するTLSv1.2暗号スイートです。

pgBackRestクライアントとサーバー間のすべてのTLS接続は暗号化されます。デフォルトでは、オブジェクトストア(例:S3)への接続も暗号化されます。

注記: どのトランスポート接続でも、セキュリティーの最低要件はTLSv1.2です。

必要に応じて、受け入れる暗号スイートを調整できます。特別なセキュリティー要件がなければ、例に示す値が妥当な選択です。未設定(デフォルト)の場合は、使用するOpenSSLライブラリのデフォルトが適用されます。

example: --tls-cipher-12=HIGH:MEDIUM:+3DES:!aNULL

TLSv1.3暗号スイートオプション(--tls-cipher-13)

許可するTLSv1.3暗号スイートです。

pgBackRestクライアントとサーバー間のすべてのTLS接続は暗号化されます。デフォルトでは、オブジェクトストア(例:S3)への接続も暗号化されます。

注記: どのトランスポート接続でも、セキュリティーの最低要件はTLSv1.2です。

必要に応じて、受け入れる暗号スイートを調整できます。未設定(デフォルト)の場合は、使用するOpenSSLライブラリのデフォルトが適用されます。

example: --tls-cipher-13=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256

ログオプション

コンソールログレベルオプション(--log-level-console)

コンソールに出力するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: warn
example: --log-level-console=error

ファイルログレベルオプション(--log-level-file)

ファイルに記録するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: info
example: --log-level-file=debug

標準エラーログレベルオプション(--log-level-stderr)

stderrに出力するログのレベルです。

stdout(log-level-consoleで指定)の代わりにstderrへ出力するログレベルを指定します。stderrにはタイムスタンプとプロセスを出力しません。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: off
example: --log-level-stderr=error

ログパスオプション(--log-path)

ログファイルを保存するパスです。

ログパスは、pgBackRestがログファイルを保存する場所です。log-level-file=offの場合、ログパスは不要です。

default: /var/log/pgbackrest
example: --log-path=/backup/db/log

サブプロセスログオプション(--log-subprocess)

サブプロセスでのログ記録を有効にします。

このプロセスが作成するすべてのサブプロセスで、log-level-fileで指定したログレベルによるファイルへのログ記録を有効にします。

default: n
example: --log-subprocess

ログタイムスタンプオプション(--log-timestamp)

ログのタイムスタンプを有効にします。

コンソールとファイルのログでタイムスタンプを有効にします。このオプションは、ドキュメント生成などの特殊な状況では無効にします。

default: y
example: --no-log-timestamp

メンテナー向けオプション

WALヘッダー確認オプション(--archive-header-check)

WALヘッダー内のPostgreSQLバージョン/識別子を確認します。

このオプションはデフォルトで有効で、WALヘッダーをPostgreSQLのバージョンおよびシステム識別子と照合し、WALが正しいstanzaにコピーされることを確認します。これは、pg_controlとstanzaの照合、およびWALのコピー元がpg_controlの存在するPostgreSQLデータディレクトリと同じであることの確認に加えて実行されます。

したがって、この確認の無効化は比較的安全ですが、WALが暗号化されている場合など、必要な場合に限って行ってください。

default: y
example: --no-archive-header-check

PostgreSQLバージョン強制指定オプション(--pg-version-force)

PostgreSQLのバージョンを強制指定します。

pg_controlまたはWALヘッダーを読み取って自動検出したバージョンの代わりに、指定したPostgreSQLバージョンを使用します。これは主に、これらの値がリリース版とは異なるPostgreSQLのフォークや開発版で役立ちます。PostgreSQLがserver_version_numで報告するバージョンは、強制指定したバージョンと一致する必要があります。

警告:

このオプションは慎重に使用してください。pg_controlとWALヘッダーは引き続き、指定バージョンで想定される形式、つまり公式のオープンソース版PostgreSQLの形式で読み取られます。フォークや開発版が、pgBackRestの依存するフィールドの形式を変更していると、予期しない動作が生じます。一般に、このオプションが想定どおりに動作するのは、フォークが独自の構造体メンバーをすべて標準のPostgreSQLメンバーの後ろに追加している場合に限られます。

example: --pg-version-force=15

リポジトリオプション

Azureリポジトリコンテナーオプション(--repo-azure-container)

Azureリポジトリのコンテナーです。

リポジトリの保存に使用するAzureコンテナーです。

repo-path=/を設定するとpgBackRestリポジトリをコンテナーのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのAzureが生成するコンテンツもコンテナーに保存できるようにすることを推奨します。

example: --repo1-azure-container=pg-backup

Azureリポジトリキー種別オプション(--repo-azure-key-type)

Azureリポジトリのキー種別です。

認可には次の種別をサポートします。

  • shared - 共有キー
  • sas - 共有アクセス署名
  • auto - AzureマネージドIDを使用して自動的に認可
default: shared
example: --repo1-azure-key-type=sas

AzureリポジトリURI形式オプション(--repo-azure-uri-style)

AzureのURI形式です。

次のURI形式をサポートします。

  • host - account.endpointホストに接続します。
  • path - endpointホストに接続し、URIの先頭にアカウントを付加します。
default: host
example: --repo1-azure-uri-style=path

リポジトリ暗号方式オプション(--repo-cipher-type)

リポジトリの暗号化に使用する暗号方式です。

次の暗号方式をサポートします。

  • none - リポジトリを暗号化しません
  • aes-256-cbc - 鍵長256ビットのAdvanced Encryption Standard

リポジトリの種類(例:S3)が暗号化をサポートしていても、暗号化は常にクライアント側で実行されます。

default: none
example: --repo1-cipher-type=aes-256-cbc

GCSリポジトリバケットオプション(--repo-gcs-bucket)

GCSリポジトリのバケットです。

リポジトリの保存に使用するGCSバケットです。

repo-path=/を設定するとpgBackRestリポジトリをバケットのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのGCSが生成するコンテンツもバケットに保存できるようにすることを推奨します。

example: --repo1-gcs-bucket=/pg-backup

GCSリポジトリエンドポイントオプション(--repo-gcs-endpoint)

GCSリポジトリのエンドポイントです。

ストレージサービスへの接続に使用するエンドポイントです。ローカルのGCSサーバーや別のエンドポイントを使用するように変更できます。

default: storage.googleapis.com
example: --repo1-gcs-endpoint=localhost

GCSリポジトリキー種別オプション(--repo-gcs-key-type)

GCSリポジトリのキー種別です。

認可には次の種別をサポートします。

  • auto - インスタンスのサービスアカウントを使用して認可します。
  • service - ローカルに保存したキーでサービスアカウントを使用します。
  • token - fakegcsなどを使用するローカルテスト用です。

repo-gcs-key-type=serviceの場合、認証トークンの更新時に認証情報を再読み込みします。

default: service
example: --repo1-gcs-key-type=auto

GCSリポジトリプロジェクトIDオプション(--repo-gcs-user-project)

GCSのプロジェクトIDです。

リクエストの課金先を決定するために使用するGCSプロジェクトIDです。

example: --repo1-gcs-user-project=my-project

リポジトリホストオプション(--repo-host)

リモート操作時のリポジトリホストです。

ローカルにマウントされたファイルシステムにバックアップおよびアーカイブする場合、この設定は不要です。

example: --repo1-host=repo1.domain.com

非推奨の名前:backup-host

リポジトリホスト認証局ファイルオプション(--repo-host-ca-file)

リポジトリホストの認証局ファイルです。

リポジトリホストへの接続に、システムのデフォルト以外のCAファイルを使用します。

example: --repo1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt

リポジトリホスト認証局パスオプション(--repo-host-ca-path)

リポジトリホストの認証局パスです。

リポジトリホストへの接続に、システムのデフォルト以外のCAパスを使用します。

example: --repo1-host-ca-path=/etc/pki/tls/certs

リポジトリホスト証明書ファイルオプション(--repo-host-cert-file)

リポジトリホストの証明書ファイルです。

クライアントの身元を証明するためにリポジトリホストに送信します。

example: --repo1-host-cert-file=/path/to/client.crt

リポジトリホストコマンドオプション(--repo-host-cmd)

リポジトリホストのpgBackRestコマンドです。

pgBackRestコマンドのパスがローカルホストとリポジトリホストで異なる場合にのみ必要です。未定義の場合、リポジトリホストのコマンドにはローカルと同じコマンドを設定します。

default: [path of executed pgbackrest binary]
example: --repo1-host-cmd=/usr/lib/backrest/bin/pgbackrest

非推奨の名前:backup-cmd

リポジトリホスト設定オプション(--repo-host-config)

pgBackRestリポジトリホストの設定ファイルです。

リポジトリホスト上の設定ファイルの場所を設定します。リポジトリホストの設定ファイルがローカルの設定ファイルと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --repo1-host-config=/conf/pgbackrest/pgbackrest.conf

非推奨の名前:backup-config

リポジトリホスト追加設定パスオプション(--repo-host-config-include-path)

pgBackRestリポジトリホストの追加設定パスです。

リポジトリホスト上の追加設定パスの場所を設定します。リポジトリホストの追加設定パスがローカルの追加設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --repo1-host-config-include-path=/conf/pgbackrest/conf.d

リポジトリホスト設定パスオプション(--repo-host-config-path)

pgBackRestリポジトリホストの設定パスです。

リポジトリホスト上の設定パスの場所を設定します。リポジトリホストの設定パスがローカルの設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH
example: --repo1-host-config-path=/conf/pgbackrest

リポジトリホストキーファイルオプション(--repo-host-key-file)

リポジトリホストのキーファイルです。

クライアント証明書が所有者によって送信されたことを証明します。

example: --repo1-host-key-file=/path/to/client.key

リポジトリホストポートオプション(--repo-host-port)

repo-hostが設定されている場合のリポジトリホストのポートです。

リポジトリホストのプロトコルにデフォルト以外のポートを指定するには、このオプションを使用します。

注記: repo-host-type=sshの場合、repo-host-portにデフォルト値はありません。この場合、ポートはcmd-sshで指定したコマンドの設定に従います。

default (depending on repo-host-type):
    tls - 8432

allowed: [0, 65535]
example: --repo1-host-port=25

非推奨の名前:backup-ssh-port

リポジトリホストプロトコル種別オプション(--repo-host-type)

リポジトリホストのプロトコル種別です。

次のプロトコル種別をサポートします。

  • ssh - Secure Shell。
  • tls - pgBackRest TLSサーバー。
default: ssh
example: --repo1-host-type=tls

リポジトリホストユーザーオプション(--repo-host-user)

repo-hostが設定されている場合のリポジトリホストのユーザーです。

リポジトリホスト上の操作に使用するユーザーを定義します。postgresユーザーではなく、pgbackrestなどの別のユーザーを使用することを推奨します。リポジトリホストでPostgreSQLを実行する場合は、postgresユーザーをpgbackrestグループに追加することで、リポジトリの内容を誤って破損させずに読み取り権限を与えられます。

default: pgbackrest
example: --repo1-host-user=repo-user

非推奨の名前:backup-user

リポジトリパスオプション(--repo-path)

バックアップとアーカイブを保存するパスです。

リポジトリは、pgBackRestがバックアップを保存し、WALセグメントをアーカイブする場所です。

必要な容量を事前に見積もるのは難しい場合があります。まずいくつかバックアップを取得し、各種類(full/incr/diff)のバックアップサイズを記録して、1日当たりに生成されるWALの量を測定するのが最善です。これにより、必要な容量のおおよその見当が付きます。ただし、データベースの変化に伴い、必要量も時間とともに変わる可能性があります。

default: /var/lib/pgbackrest
example: --repo1-path=/backup/db/backrest

S3リポジトリバケットオプション(--repo-s3-bucket)

S3リポジトリのバケットです。

リポジトリの保存に使用するS3バケットです。

repo-path=/を設定するとpgBackRestリポジトリをバケットのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのAWSが生成するコンテンツもバケットに保存できるようにすることを推奨します。

example: --repo1-s3-bucket=pg-backup

S3リポジトリエンドポイントオプション(--repo-s3-endpoint)

S3リポジトリのエンドポイントです。

選択したリージョンに対して有効なAWSエンドポイントを使用してください。

独自の構成やテスト構成では、repo-storage-ca-file、repo-storage-ca-path、repo-storage-host、repo-storage-port、repo-storage-verify-tlsの各オプションが役立つ場合があります。

example: --repo1-s3-endpoint=s3.amazonaws.com

S3リポジトリキー種別オプション(--repo-s3-key-type)

S3リポジトリのキー種別です。

次の種別をサポートします。

  • shared - 共有キー
  • auto - 一時認証情報を自動取得
  • web-id - ウェブID認証情報を自動取得
  • pod-id - EKS Pod Identityの認証情報を自動取得
  • process - プロセスを実行して認証情報を取得
default: shared
example: --repo1-s3-key-type=auto

S3リポジトリKMSキーIDオプション(--repo-s3-kms-key-id)

S3リポジトリのKMSキーです。

指定したAWS Key Management Serviceのキーを使用して、S3のサーバー側暗号化を有効にします。

example: --repo1-s3-kms-key-id=bceb4f13-6939-4be3-910d-df54dee817b7

S3認証プロセスコマンドオプション(--repo-s3-process-cmd)

S3の認証プロセスコマンドです。

一時的なS3認証情報を取得するために実行するコマンド(および任意の引数)です。リストの最初の要素がコマンドで、残りの要素はパラメーターとして渡します。

プロセスは、AccessKeyId、SecretAccessKey、SessionToken、Expirationフィールドを含むJSONを出力する必要があります。認証情報は有効期限の前に自動更新されます。形式の詳細は、プロセス認証情報プロバイダー を参照してください。

example: --repo1-s3-process-cmd=/usr/local/bin/get-credentials --repo1-s3-process-cmd=--role --repo1-s3-process-cmd=my-role

S3リポジトリリージョンオプション(--repo-s3-region)

S3リポジトリのリージョンです。

バケットを作成したAWSリージョンです。

example: --repo1-s3-region=us-east-1

S3リポジトリのリクエスタ支払いオプション(--repo-s3-requester-pays)

S3リポジトリのリクエスタ支払いです。

S3のリクエスタ支払いを有効にします。

default: n
example: --no-repo1-s3-requester-pays

S3リポジトリロールオプション(--repo-s3-role)

S3リポジトリのロールです。

repo-s3-key-type=autoの場合に、一時認証情報の取得に使用するAWSロール名(完全なARNではありません)です。

example: --repo1-s3-role=authrole

S3リポジトリサービスオプション(--repo-s3-service)

S3の署名サービスです。

SigV4認証で使用するS3署名サービスです。標準のS3エンドポイントでは、デフォルトはs3です。S3 Outpostsエンドポイントを使用する場合は、s3-outpostsに設定します。

default: s3
example: --repo1-s3-service=s3-outposts

S3リポジトリSTSエンドポイントオプション(--repo-s3-sts-host)

S3リポジトリのSTSエンドポイントです。

repo-s3-key-type=web-idを設定した場合に、一時認証情報の取得に使用するSTSエンドポイントです。リージョン別STSを使用するには、リージョン別エンドポイント(例:sts.us-east-1.amazonaws.com)を設定します。GovCloudや中国リージョンで必要になる場合や、レイテンシーを低減するために使用する場合があります。

default: sts.amazonaws.com
example: --repo1-s3-sts-host=sts.us-east-1.amazonaws.com

S3リポジトリURI形式オプション(--repo-s3-uri-style)

S3のURI形式です。

次のURI形式をサポートします。

  • host - bucket.endpointホストに接続します。
  • path - endpointホストに接続し、URIの先頭にバケットを付加します。
default: host
example: --repo1-s3-uri-style=path

SFTPリポジトリホストオプション(--repo-sftp-host)

SFTPリポジトリのホストです。

リポジトリが存在するSFTPホストです。

example: --repo1-sftp-host=sftprepo.domain

SFTPリポジトリホストフィンガープリントオプション(--repo-sftp-host-fingerprint)

SFTPリポジトリホストのフィンガープリントです。

SFTPリポジトリホストのフィンガープリントの生成方法は、repo-sftp-host-key-hash-typeと一致させてください。awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -bでフィンガープリントを生成します。sshホストキーは通常、/etc/sshディレクトリにあります。

example: --repo1-sftp-host-fingerprint=f84e172dfead7aeeeae6c1fdfb5aa8cf

SFTPホストキー確認方式オプション(--repo-sftp-host-key-check-type)

SFTPのホストキー確認方式です。

次のSFTPホストキー確認方式をサポートします。

  • strict - pgBackRestは~/.ssh/known_hostsファイルにホストキーを自動追加せず、ホストキーが変更されたホスト、または既知のホストファイルで見つからないホストへの接続を拒否します。このオプションでは、新しいホストをすべて手動で追加する必要があります。
  • accept-new - pgBackRestは新しいホストキーをユーザーの既知のホストファイルに自動追加しますが、ホストキーが変更されたホストへの接続は許可しません。
  • fingerprint - pgBackRestは、repo-sftp-host-fingerprintオプションで指定したフィンガープリントとホストキーを照合します。
  • none - ホストキーを確認しません。
default: strict
example: --repo1-sftp-host-key-check-type=accept-new

SFTPリポジトリホストキーハッシュ種別オプション(--repo-sftp-host-key-hash-type)

SFTPリポジトリのホストキーハッシュ種別です。

SFTPリポジトリのホストキーハッシュ種別です。SSHの開始時に、リモートシステムのホストキーのダイジェスト計算に使用するハッシュ種別を指定します。新しいバージョンのlibssh2は、md5とsha1に加えてsha256もサポートします。

example: --repo1-sftp-host-key-hash-type=sha256

SFTPリポジトリホストポートオプション(--repo-sftp-host-port)

SFTPリポジトリホストのポートです。

SFTPリポジトリホストのポートです。

default: 22
allowed: [1, 65535]
example: --repo1-sftp-host-port=22

SFTPリポジトリホストユーザーオプション(--repo-sftp-host-user)

SFTPリポジトリホストのユーザーです。

リポジトリの保存に使用するホスト上のユーザーです。

example: --repo1-sftp-host-user=pg-backup

SFTP既知ホストファイルオプション(--repo-sftp-known-host)

SFTPの既知のホストファイルです。

認証時に一致するSFTPホストを探す既知のホストファイルです。未指定の場合、pgBackRestはデフォルトで~/.ssh/known_hosts、~/.ssh/known_hosts2、/etc/ssh/ssh_known_hosts、/etc/ssh/ssh_known_hosts2を検索します。1つ以上のファイルパスを設定した場合は、それらを検索して一致を確認します。ファイルパスは絶対パス、または先頭がチルダのパスである必要があります。repo-sftp-known-hostオプションを複数回指定することで、検索する既知のホストファイルを複数指定できます。既知のホストファイルによる確認を使用するには、repo-sftp-host-fingerprintを指定してはいけません。repo-sftp-host-check-typeオプションも参照してください。

example: --repo1-sftp-known-host=/home/postgres/.ssh/known_hosts

SFTPリポジトリ秘密鍵ファイルオプション(--repo-sftp-private-key-file)

SFTPの秘密鍵ファイルです。

認証に使用するSFTP秘密鍵ファイルです。

example: --repo1-sftp-private-key-file=~/.ssh/id_ed25519

SFTPリポジトリ公開鍵ファイルオプション(--repo-sftp-public-key-file)

SFTPの公開鍵ファイルです。

認証に使用するSFTP公開鍵ファイルです。OpenSSLに対してコンパイルした場合は任意ですが、別のライブラリに対してコンパイルした場合は必須です。

example: --repo1-sftp-public-key-file=~/.ssh/id_ed25519.pub

リポジトリストレージCAファイルオプション(--repo-storage-ca-file)

リポジトリストレージのCAファイルです。

ストレージ(例:S3、Azure)の証明書に、システムのデフォルト以外のCAファイルを使用します。

example: --repo1-storage-ca-file=/etc/pki/tls/certs/ca-bundle.crt

非推奨の名前:repo-azure-ca-file, repo-s3-ca-file

リポジトリストレージTLS CAパスオプション(--repo-storage-ca-path)

リポジトリストレージのCAパスです。

ストレージ(例:S3、Azure)の証明書に、システムのデフォルト以外のCAパスを使用します。

example: --repo1-storage-ca-path=/etc/pki/tls/certs

非推奨の名前:repo-azure-ca-path, repo-s3-ca-path

リポジトリストレージホストオプション(--repo-storage-host)

リポジトリストレージのホストです。

ストレージ(例:S3、Azure)のエンドポイントとは異なるホストに接続します。通常はテストに使用します。

example: --repo1-storage-host=127.0.0.1

非推奨の名前:repo-azure-host, repo-s3-host

リポジトリストレージポートオプション(--repo-storage-port)

リポジトリストレージのポートです。

ストレージ(例:S3、Azure)のエンドポイント(ホストを指定した場合はそのホスト)への接続に使用するポートです。

default: 443
allowed: [1, 65535]
example: --repo1-storage-port=9000

非推奨の名前:repo-azure-port, repo-s3-port

リポジトリストレージタグオプション(--repo-storage-tag)

リポジトリストレージのタグです。

リポジトリがオブジェクトストア(例:S3)の場合に、オブジェクトに付加するタグを指定します。このオプションを繰り返して、複数のタグを追加できます。

pgBackRestにはこれらのタグを変更する機能がないため、リポジトリ全体でタグを統一するには、stanza-createを実行する前に正しく設定してください。

example: --repo1-storage-tag=key1=value1

リポジトリストレージアップロードチャンクサイズオプション(--repo-storage-upload-chunk-size)

リポジトリストレージのアップロードチャンクサイズです。

S3などのオブジェクトストアでは、ファイルが大きすぎてメモリに格納できない場合に、チャンクに分けてアップロードできます。ファイルをメモリに格納できる場合でも、アップロードに使用するメモリ量を制限する方がメモリ効率は高くなります。

チャンクサイズを大きくすると、アップロードリクエストを最小限に抑え、チャンク分割せずに1回のリクエストでアップロードできるファイルが増えるため、一般にパフォーマンスが向上します。一方、メモリ使用量は増加します。チャンクバッファーはプロセスごとに割り当てる必要があるため、process-maxの値が大きいほど、全体のメモリ消費量も増えます。

有効なチャンクサイズは、ストレージの種類やプラットフォームによって異なります。たとえば、AWS S3の最小チャンクサイズは5MiBです。チャンクサイズの呼び方もストレージの種類によって異なるため、最小値/最大値を調べる際は、AWS S3では「part size」、GCSでは「chunk size」、Azureでは「block size」を使用してください。

ファイルが1GiB(PostgreSQLがデフォルトで作成する最大サイズ)より大きい場合、ファイルのアップロードを完了するために、許容される最大値までチャンクサイズを段階的に増やします。

default (depending on repo-type):
    azure - 4MiB
    gcs - 4MiB
    s3 - 5MiB

allow range (depending on repo-type):
    azure - [4MiB, 1GiB]
    gcs - [4MiB, 1GiB]
    s3 - [5MiB, 1GiB]

example: --repo1-storage-upload-chunk-size=16MiB

リポジトリストレージ証明書検証オプション(--repo-storage-verify-tls)

リポジトリストレージの証明書を検証します。

このオプションでは、ストレージ(例:S3、Azure)サーバーのTLS証明書の検証を有効/無効にできます。無効化は、テストや自己署名証明書を使用する場合に限ってください。

default: y
example: --no-repo1-storage-verify-tls

非推奨の名前:repo-azure-verify-tls, repo-s3-verify-ssl, repo-s3-verify-tls

リポジトリ種別オプション(--repo-type)

リポジトリに使用するストレージの種類です。

次のリポジトリ種類をサポートします。

  • azure - Azure Blob Storage Service
  • cifs - posixと同様ですが、リンクとディレクトリのfsyncを無効にします
  • gcs - Google Cloud Storage
  • posix - Posix準拠のファイルシステム
  • s3 - AWS Simple Storage Service
  • sftp - Secure File Transfer Protocol

NFSマウントをposixリポジトリとして使用する場合、PostgreSQLのドキュメントに記載されたものと同じ規則がpgBackRestにも適用されます。データベースクラスターの作成 - ファイルシステム を参照してください。

default: posix
example: --repo1-type=cifs

stanzaオプション

PostgreSQLパスオプション(--pg-path)

PostgreSQLのデータディレクトリです。

PostgreSQLが報告するdata_directoryと同じ値を設定してください。この値はさまざまな場所から読み取れますが、リストアやオフラインバックアップ時にそれらを利用できない場合に備えて、設定しておくことが賢明です。

pg-pathオプションは、オンラインバックアップのたびにPostgreSQLが報告する値と照合されるため、常に最新の値であるはずです。

example: --pg1-path=/data/db

非推奨の名前:db-path

4.4 - バックアップコマンド(backup)

pgBackRestのbackupコマンドのオプションと動作のリファレンス。

複数のリポジトリが設定されている場合、--repoオプションを指定しない限り、pgBackRestは最も優先度の高いリポジトリ(例:repo1)にバックアップします。

pgBackRestにはスケジューラーが組み込まれていないため、cronなどのスケジュール機構から実行することを推奨します。

詳細と例は、バックアップの実行 を参照してください。

コマンドオプション

バックアップ注釈オプション(--annotation)

ユーザー定義のキー/値ペアでバックアップに注釈を付けます。

バックアップに情報を示すキー/値ペアを付加できます。このオプションを複数回指定して、複数の注釈を付けられます。

注釈は、--setでバックアップを指定した場合にinfoコマンドのテキスト出力に表示されます。JSON出力には常に表示されます。

example: --annotation=source="Sunday backup for website database"

アーカイブ確認オプション(--archive-check)

バックアップの完了前に、WALセグメントがアーカイブに存在することを確認します。

バックアップの一貫性を確保するために必要なすべてのWALセグメントが、WALアーカイブに存在することを確認します。別のアーカイブ方法を使用していない限り、デフォルトのままにしておくことを推奨します。

archive-copyが有効な場合は、このオプションを有効にする必要があります。

default: y
example: --no-archive-check

アーカイブコピーオプション(--archive-copy)

一貫性の確保に必要なWALセグメントをバックアップにコピーします。

この念には念を入れたオプションは、一貫性に必要なWALセグメントをバックアップに直接格納することで、WALセグメントのアーカイブの破損に備えます。WALセグメントは引き続きアーカイブにも格納されるため、このオプションは追加の容量を使用します。

このオプションを使用する場合は、archive-pushコマンドとbackupコマンドで同じcompress-type(例:lz4)を使用することを推奨します。異なる場合、WALセグメントはバックアップで使用するcompress-typeで再圧縮する必要があり、バックアップ中に生成されたWALの量によっては、かなりの負荷がかかります。

リストア時にはWALセグメントがpg_xlog/pg_wal内に存在し、PostgreSQLはrestore_commandの呼び出しよりも優先してこれらを使用します。

archive-copyが有効な場合は、archive-checkオプションを有効にする必要があります。

default: n
example: --archive-copy

アーカイブモード確認オプション(--archive-mode-check)

PostgreSQLのarchive_mode設定を確認します。

このオプションはデフォルトで有効で、PostgreSQLのarchive_mode=alwaysを禁止します。

スタンバイサーバーから送信されたWALセグメントは、プライマリーから送信されたWALセグメントと論理的には同じでも、チェックサムが異なる場合があります。競合を避けるため、複数のソースからのアーカイブを無効にすることを推奨します。

注意:

このオプションを無効にする場合は、archive-pushコマンドを通じてリポジトリに書き込むアーカイバーが1つだけであることを必ず確認してください。

default: y
example: --no-archive-mode-check

アーカイブタイムアウトオプション(--archive-timeout)

アーカイブのタイムアウトです。

各WALセグメントがpgBackRestのアーカイブリポジトリに到達するまで待機する最大時間を秒単位で設定します。このタイムアウトは、バックアップの一貫性に必要なWALセグメントのアーカイブを待つ際に、checkコマンドとbackupコマンドに適用されます。

default: 1m
allowed: [100ms, 1d]
example: --archive-timeout=30

スタンバイからのバックアップオプション(--backup-standby)

スタンバイクラスターからバックアップします。

プライマリークラスターの負荷を軽減するには、スタンバイからのバックアップを有効にします。このオプションでは、プライマリーとスタンバイの両方のホストを設定する必要があります。

次のモードをサポートします。

  • y - バックアップにスタンバイを必須とします。
  • prefer - スタンバイが利用可能ならスタンバイから、そうでなければプライマリーからバックアップします。
  • n - プライマリーからのみバックアップします。
default: n
example: --backup-standby=y

ページチェックサムオプション(--checksum-page)

データページのチェックサムを検証します。

クラスターのバックアップ中に、pgBackRestがすべてのデータページのチェックサムを検証するようにします。クラスターでデータページのチェックサムが有効になっている場合、このオプションは自動的に有効になります。

チェックサムの検証に失敗しても、バックアップは中止されません。代わりに、ログ(デフォルト設定ではコンソールにも)に警告を出力し、無効なページの一覧をバックアップマニフェストに保存します。

example: --no-checksum-page

パス/ファイルの除外オプション(--exclude)

パス/ファイルをバックアップから除外します。

すべての除外指定は$PGDATAを基準とします。除外指定が/で終わる場合は、指定ディレクトリ内のファイルのみを除外します。たとえば、--exclude=junk/は$PGDATA/junkディレクトリ内のすべてのファイルを除外しますが、ディレクトリ自体は含めます。除外指定が/で終わらない場合は、ファイルが除外指定に完全一致するか、除外指定の末尾に/を付けたものに一致すれば除外します。たとえば、--exclude=junkは$PGDATA/junkディレクトリとその中のすべてのファイルを除外します。

この機能は慎重に使用してください。重要なものを容易に除外できてしまい、バックアップの一貫性を損なう危険があります。必ずリストアをテストしてください!

除外されたすべてのファイルは、除外ルールとともにinfoレベルでログに記録されます。除外されたファイルの一覧を必ず確認し、意図しないものが除外されていないことを確かめてください。

注記: 差分リストアでは除外指定は考慮されません。バックアップで除外されたファイル/ディレクトリは、差分リストア時に削除されます。

このオプションを、バックアップからPostgreSQLのログを除外するために使用しないでください。PostgreSQLのlog_directory設定でログをPGDATAディレクトリの外に移動すれば、リストア後もログを保持できるという利点があります。

コマンドラインまたは設定ファイルで複数の除外指定が可能です。

example: --exclude=junk/

自動期限切れ処理オプション(--expire-auto)

バックアップの成功後にexpireコマンドを自動実行します。

この設定はデフォルトで有効です。無効にすると、すべてのバックアップとアーカイブが無期限に保持され、リポジトリの空き容量がなくなる可能性があるため、注意してください。これを防ぐには、expireコマンドを定期的に実行する必要があります。

バックアップの成功後にexpireを自動実行する場合は、backupコマンドの設定を使用するため、expireコマンドのセクション(例:[global:expire])だけに設定したオプションは適用されません。expire専用の設定を適用するには、このオプションを無効にし、expireコマンドを個別に実行してください。

default: y
example: --expire-auto

強制オプション(--force)

オフラインバックアップを強制します。

--no-start-stopと併用すると、pgBackRestがPostgreSQLは稼働中だと判断してもバックアップを実行します。不正なバックアップになる可能性が高いため、このオプションは細心の注意を払って使用してください。

このような状況でも、バックアップが望ましい場合があります。たとえば、サーバーがクラッシュし、データベースクラスターのボリュームを読み取り専用でしかマウントできない場合、postmaster.pidが存在していてもバックアップを取得しておくのがよいでしょう。この場合、以前のバックアップに戻してWALを再生する方が望ましいものの、アーカイブされなかったWALセグメントに非常に重要なトランザクションが含まれている可能性があります。

default: n
example: --force

マニフェスト保存しきい値オプション(--manifest-save-threshold)

バックアップ中のマニフェスト保存しきい値です。

バックアップ中にマニフェストを保存する頻度を定義します。マニフェストにはチェックサムが保存され、再開機能を効率的に動作させられるため、その保存は重要です。実際に使用するしきい値は、バックアップサイズの1%とmanifest-save-thresholdのうち大きい方です。

default: 1GiB
allowed: [1B, 1TiB]
example: --manifest-save-threshold=8GiB

オンラインオプション(--online)

オンラインバックアップを実行します。

–no-onlineを指定すると、pgBackRestはデータベースクラスターでバックアップの開始/停止関数を実行しません。この方法を使用する際はPostgreSQLを停止しておいてください。停止していなければpgBackRestはエラーを出力します。

このオプションは、オフラインバックアップを可能にするためのものです。pg_xlog/pg_walディレクトリはそのままコピーされ、バックアップではarchive-checkが自動的に無効になります。

default: y
example: --no-online

再開オプション(--resume)

失敗したバックアップの再開を許可します。

再開機能を有効にするかどうかを定義します。同じ種類のバックアップが以前に失敗した場合、再開によってバックアップの実行に必要な時間を大幅に短縮できます。ただし、処理が複雑になるため、この機能を必要としない環境では無効にする方が望ましい場合があります。

default: y
example: --no-resume

高速開始オプション(--start-fast)

チェックポイントを強制し、バックアップを速やかに開始します。

バックアップ開始関数のfastパラメーターにyを渡してチェックポイントを強制し、バックアップを直ちに開始します。そうしない場合、バックアップは次の通常のチェックポイントの後に開始します。

default: n
example: --start-fast

種類オプション(--type)

バックアップの種類です。

次のバックアップ種類をサポートします。

  • full - データベースクラスターのすべてのファイルをコピーし、以前のバックアップへの依存関係を持ちません。
  • incr - 最後に成功したバックアップからの増分です。
  • diff - 増分バックアップと似ていますが、常に最後のフルバックアップを基にします。
default: incr
example: --type=full

一般オプション

rootでの実行許可オプション(--allow-root)

rootユーザーによるコマンドの実行を許可します。

デフォルトでは、ファイルの所有権を慎重に管理するように設計されたrestoreコマンドのみをrootユーザーで実行できます。ほかのコマンドをrootで実行すると、たとえばリポジトリ内にroot所有のファイルが作成され、PostgreSQLユーザーがアクセスできなくなって、後続のコマンドが失敗するおそれがあります。

それでもコマンドをrootで実行する場合は、このオプションを有効にします。ただし、リポジトリとPostgreSQLクラスターを所有するユーザーとしてpgBackRestを実行する方がはるかに適切です。

default: n
example: --allow-root

バッファーサイズオプション(--buffer-size)

I/O処理のバッファーサイズです。

コピー、圧縮、暗号化などの処理に使用するバッファーサイズです。使用するバッファーの数はオプションによって異なり、各処理で追加のメモリを使用する場合があります。たとえば、gz圧縮では256KiBのメモリを追加で使用する場合があります。

指定できる値は、16KiB、32KiB、64KiB、128KiB、256KiB、512KiB、1MiB、2MiB、4MiB、8MiB、16MiBです。

default: 1MiB
example: --buffer-size=2MiB

pgBackRestコマンドオプション(--cmd)

pgBackRestコマンドです。

pgBackRestは、たとえばrestoreコマンドがrestore_command設定を生成する際に、コマンド文字列を生成することがあります。この場合、cmdオプションを指定しない限り、pgBackRestプロセスの実行に使用したコマンドが使われます。

注意:

pgBackRestコマンドをラッパー経由で実行すると、予測できない動作を引き起こす可能性があるため、推奨しません。

default: [path of executed pgbackrest binary]
example: --cmd=/var/lib/pgsql/bin/pgbackrest_wrapper.sh

SSHクライアントコマンドオプション(--cmd-ssh)

SSHクライアントのコマンドです。

別のSSHクライアントを使用したい場合や、sshコマンドが$PATHに含まれていない場合に、使用するSSHクライアントコマンドを指定します。

default: ssh
example: --cmd-ssh=/usr/bin/ssh

圧縮オプション(--compress)

ファイル圧縮を使用します。

バックアップファイルは、コマンドラインの圧縮ツールと互換性があります。

このオプションは現在非推奨です。代わりにcompress-typeオプションを使用してください。

default: y
example: --no-compress

圧縮レベルオプション(--compress-level)

ファイルの圧縮レベルです。

compress-typeがnoneでない場合、またはcompress=y(非推奨)の場合に、ファイル圧縮に使用するレベルを設定します。

default (depending on compress-type):
    bz2 - 9
    gz - 6
    lz4 - 1
    zst - 3

allow range (depending on compress-type):
    bz2 - [1, 9]
    gz - [-1, 9]
    lz4 - [-5, 12]
    zst - [-7, 22]

example: --compress-level=9

ネットワーク圧縮レベルオプション(--compress-level-network)

ネットワークの圧縮レベルです。

compress-type=noneで、コマンドがリポジトリと同じホストで実行されない場合のネットワーク圧縮レベルを設定します。圧縮によってネットワークトラフィックを削減します。compress-typeがnoneでない場合は、ファイルを1回だけ圧縮するように、compress-level-network設定を無視して代わりにcompress-levelを使用します。

default: 1
allowed: [-5, 12]
example: --compress-level-network=1

圧縮形式オプション(--compress-type)

ファイルの圧縮形式です。

次の圧縮形式をサポートします。

  • none - 圧縮なし
  • bz2 - bzip2圧縮形式
  • gz - gzip圧縮形式
  • lz4 - lz4圧縮形式(一部のプラットフォームでは利用不可)
  • zst - Zstandard圧縮形式(一部のプラットフォームでは利用不可)
default: gz
example: --compress-type=none

設定ファイルオプション(--config)

pgBackRestの設定ファイルです。

デフォルトとは異なる設定ファイルを指定するには、このオプションを使用します。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --config=/conf/pgbackrest/pgbackrest.conf

追加設定パスオプション(--config-include-path)

追加のpgBackRest設定ファイルへのパスです。

指定した場所にある拡張子.confの設定ファイルをpgBackRest設定ファイルと連結し、1つの設定ファイルとして扱います。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --config-include-path=/conf/pgbackrest/conf.d

設定パスオプション(--config-path)

pgBackRest設定ファイルの基準パスです。

この設定は、--configと--config-include-pathの各オプションがコマンドラインで明示的に設定されていない場合に、それらのデフォルトの基準パスを上書きします。

たとえば、--config-path=/conf/pgbackrestだけを渡すと、--configのデフォルトは/conf/pgbackrest/pgbackrest.confに、--config-include-pathのデフォルトは/conf/pgbackrest/conf.dに設定されます。

default: CFGOPTDEF_CONFIG_PATH
example: --config-path=/conf/pgbackrest

データベースタイムアウトオプション(--db-timeout)

データベースクエリーのタイムアウトです。

データベースに対するクエリーのタイムアウトを秒単位で設定します。これには、それぞれかなりの時間がかかる可能性があるバックアップの開始/停止関数も含まれます。そのため、これらの関数が速やかに戻ることがわかっている場合(つまり、start-fast=yを設定し、バックアップ中にデータベースクラスターが多数のWALセグメントを生成しないことがわかっている場合)を除き、タイムアウトは長めにしておくことを推奨します。

注記: db-timeoutオプションは、protocol-timeoutオプションより小さくする必要があります。

default: 30m
allowed: [100ms, 7d]
example: --db-timeout=600

差分処理オプション(--delta)

チェックサムを使用してリストアまたはバックアップします。

リストア時には、デフォルトでPostgreSQLのデータディレクトリとテーブルスペースディレクトリが存在し、空であることを想定します。このオプションは、チェックサムを使用して差分リストアを実行します。

バックアップ時には、このオプションによってタイムスタンプの代わりにチェックサムを使用し、ファイルをコピーするかどうかを判定します。

default: n
example: --delta

I/Oタイムアウトオプション(--io-timeout)

I/Oのタイムアウトです。

接続および読み取り/書き込み処理に使用する、秒単位のタイムアウトです。

読み取り/書き込み処理全体がこのタイムアウト内に完了する必要はありませんが、わずか1バイトでも、何らかの進展が必要です。

default: 1m
allowed: [100ms, 1h]
example: --io-timeout=120

ロックパスオプション(--lock-path)

ロックファイルを保存するパスです。

ロックパスは、pgBackRestが競合する処理の同時実行を防ぐためのロックファイルを作成する場所です。

default: /tmp/pgbackrest
example: --lock-path=/backup/db/lock

固定umaskオプション(--neutral-umask)

固定のumaskを使用します。

umaskを0000に設定し、リポジトリ内のファイルやディレクトリが適切な権限で作成されるようにします。デフォルトのディレクトリ権限は0750、ファイル権限は0640です。

代わりに実行ユーザーのumaskを使用するには、設定ファイルにneutral-umask=n、またはコマンドラインに--no-neutral-umaskを指定します。

default: y
example: --no-neutral-umask

プロセス優先度設定オプション(--priority)

プロセスの優先度を設定します。

カーネルのスケジューラーがプロセスに与える優先度(niceness)を定義します。正の値は優先度を下げ、負の値は優先度を上げます。通常、プロセスには自身の優先度を上げる権限がありません。

allowed: [-20, 19]
example: --priority=19

最大プロセス数オプション(--process-max)

圧縮/転送に使用する最大プロセス数です。

各プロセスが圧縮と転送を実行することでコマンドを高速化しますが、データベースのパフォーマンスに影響するほどprocess-maxを高く設定しないでください。

default: 1
allowed: [1, 999]
example: --process-max=4

プロトコルタイムアウトオプション(--protocol-timeout)

プロトコルのタイムアウトです。

ローカルまたはリモートのプロセスが、プロトコル層で新しいメッセージの受信を待つタイムアウトを秒単位で設定します。これにより、プロセスがメッセージを無期限に待ち続けることを防ぎます。

注記: protocol-timeoutオプションは、db-timeoutオプションより大きくする必要があります。

default: 31m
allowed: [100ms, 7d]
example: --protocol-timeout=630

キープアライブオプション(--sck-keep-alive)

キープアライブを有効にします。

ソケット接続でキープアライブメッセージを有効にします。

default: y
example: --no-sck-keep-alive

stanzaオプション(--stanza)

stanzaを定義します。

stanzaは、PostgreSQLデータベースクラスターの場所、バックアップ方法、アーカイブオプションなどを定義する設定です。ほとんどのデータベースサーバーにはPostgreSQLデータベースクラスターが1つだけ存在し、stanzaも1つになります。一方、バックアップサーバーには、バックアップが必要なデータベースクラスターごとにstanzaがあります。

stanzaにはプライマリークラスターにちなんだ名前を付けたくなりますが、クラスターに含まれるデータベースを表す名前の方が適しています。stanza名はプライマリーとすべてのレプリカで使用するため、mainやprodなどのローカルクラスター名よりも、appやdwなど、クラスターの実際の役割を表す名前を選ぶ方が適切です。

example: --stanza=main

キープアライブ回数オプション(--tcp-keep-alive-count)

キープアライブの回数です。

接続が切れたと判断するまでに、応答がなくても許容するTCPキープアライブメッセージの数を指定します。

このオプションは、TCP_KEEPCNTソケットオプションをサポートするシステムで利用できます。

allowed: [1, 32]
example: --tcp-keep-alive-count=3

キープアライブ待機時間オプション(--tcp-keep-alive-idle)

キープアライブの待機時間です。

ネットワーク通信がない状態で、オペレーティングシステムがTCPキープアライブメッセージを送信するまでの時間を秒単位で指定します。

このオプションは、TCP_KEEPIDLEソケットオプションをサポートするシステムで利用できます。

allowed: [1, 3600]
example: --tcp-keep-alive-idle=60

キープアライブ間隔オプション(--tcp-keep-alive-interval)

キープアライブの送信間隔です。

応答のないTCPキープアライブメッセージを再送信するまでの時間を秒単位で指定します。

このオプションは、TCP_KEEPINTVLソケットオプションをサポートするシステムで利用できます。

allowed: [1, 900]
example: --tcp-keep-alive-interval=30

TLSv1.2暗号スイートオプション(--tls-cipher-12)

許可するTLSv1.2暗号スイートです。

pgBackRestクライアントとサーバー間のすべてのTLS接続は暗号化されます。デフォルトでは、オブジェクトストア(例:S3)への接続も暗号化されます。

注記: どのトランスポート接続でも、セキュリティーの最低要件はTLSv1.2です。

必要に応じて、受け入れる暗号スイートを調整できます。特別なセキュリティー要件がなければ、例に示す値が妥当な選択です。未設定(デフォルト)の場合は、使用するOpenSSLライブラリのデフォルトが適用されます。

example: --tls-cipher-12=HIGH:MEDIUM:+3DES:!aNULL

TLSv1.3暗号スイートオプション(--tls-cipher-13)

許可するTLSv1.3暗号スイートです。

pgBackRestクライアントとサーバー間のすべてのTLS接続は暗号化されます。デフォルトでは、オブジェクトストア(例:S3)への接続も暗号化されます。

注記: どのトランスポート接続でも、セキュリティーの最低要件はTLSv1.2です。

必要に応じて、受け入れる暗号スイートを調整できます。未設定(デフォルト)の場合は、使用するOpenSSLライブラリのデフォルトが適用されます。

example: --tls-cipher-13=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256

ログオプション

コンソールログレベルオプション(--log-level-console)

コンソールに出力するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: warn
example: --log-level-console=error

ファイルログレベルオプション(--log-level-file)

ファイルに記録するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: info
example: --log-level-file=debug

標準エラーログレベルオプション(--log-level-stderr)

stderrに出力するログのレベルです。

stdout(log-level-consoleで指定)の代わりにstderrへ出力するログレベルを指定します。stderrにはタイムスタンプとプロセスを出力しません。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: off
example: --log-level-stderr=error

ログパスオプション(--log-path)

ログファイルを保存するパスです。

ログパスは、pgBackRestがログファイルを保存する場所です。log-level-file=offの場合、ログパスは不要です。

default: /var/log/pgbackrest
example: --log-path=/backup/db/log

サブプロセスログオプション(--log-subprocess)

サブプロセスでのログ記録を有効にします。

このプロセスが作成するすべてのサブプロセスで、log-level-fileで指定したログレベルによるファイルへのログ記録を有効にします。

default: n
example: --log-subprocess

ログタイムスタンプオプション(--log-timestamp)

ログのタイムスタンプを有効にします。

コンソールとファイルのログでタイムスタンプを有効にします。このオプションは、ドキュメント生成などの特殊な状況では無効にします。

default: y
example: --no-log-timestamp

メンテナー向けオプション

ページヘッダー確認オプション(--page-header-check)

PostgreSQLのページヘッダーを確認します。

このオプションはデフォルトで有効で、ページヘッダーの確認を追加します。

ページが暗号化されている場合など、必要な場合を除き、このオプションの無効化は避けてください。

default: y
example: --no-page-header-check

PostgreSQLバージョン強制指定オプション(--pg-version-force)

PostgreSQLのバージョンを強制指定します。

pg_controlまたはWALヘッダーを読み取って自動検出したバージョンの代わりに、指定したPostgreSQLバージョンを使用します。これは主に、これらの値がリリース版とは異なるPostgreSQLのフォークや開発版で役立ちます。PostgreSQLがserver_version_numで報告するバージョンは、強制指定したバージョンと一致する必要があります。

警告:

このオプションは慎重に使用してください。pg_controlとWALヘッダーは引き続き、指定バージョンで想定される形式、つまり公式のオープンソース版PostgreSQLの形式で読み取られます。フォークや開発版が、pgBackRestの依存するフィールドの形式を変更していると、予期しない動作が生じます。一般に、このオプションが想定どおりに動作するのは、フォークが独自の構造体メンバーをすべて標準のPostgreSQLメンバーの後ろに追加している場合に限られます。

example: --pg-version-force=15

リポジトリオプション

リポジトリ指定オプション(--repo)

リポジトリを指定します。

コマンドの操作対象となるリポジトリを指定します。

たとえば、このオプションを使用すると、pgBackRestに選択させずに、特定のリポジトリからリストアできます。

allowed: [1, 256]
example: --repo=1

Azureリポジトリコンテナーオプション(--repo-azure-container)

Azureリポジトリのコンテナーです。

リポジトリの保存に使用するAzureコンテナーです。

repo-path=/を設定するとpgBackRestリポジトリをコンテナーのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのAzureが生成するコンテンツもコンテナーに保存できるようにすることを推奨します。

example: --repo1-azure-container=pg-backup

Azureリポジトリキー種別オプション(--repo-azure-key-type)

Azureリポジトリのキー種別です。

認可には次の種別をサポートします。

  • shared - 共有キー
  • sas - 共有アクセス署名
  • auto - AzureマネージドIDを使用して自動的に認可
default: shared
example: --repo1-azure-key-type=sas

AzureリポジトリURI形式オプション(--repo-azure-uri-style)

AzureのURI形式です。

次のURI形式をサポートします。

  • host - account.endpointホストに接続します。
  • path - endpointホストに接続し、URIの先頭にアカウントを付加します。
default: host
example: --repo1-azure-uri-style=path

ブロック増分バックアップオプション(--repo-block)

ブロック増分バックアップを有効にします。

ブロック増分バックアップは、ファイルを個別にバックアップ可能なブロックに分割することで、より細かな単位でのバックアップを可能にします。リポジトリの容量を節約し、リポジトリからファイル全体を読み取らずに個々のブロックを取得できるため、差分リストアのパフォーマンスが向上する可能性があります。

注記: repo-blockを有効にする前に、repo-bundleオプションを有効にする必要があります。

ファイルのブロックサイズは、ファイルのサイズと古さに基づいて決まります。一般に、古いファイルや大きいファイルには、より大きなブロックサイズが使われます。ファイルが十分に古い場合は、ブロック増分バックアップの対象になりません。

ブロック増分バックアップは、フルバックアップを含むすべてのバックアップ種類で有効にすると最も効率的です。フルバックアップは少し大きくなりますが、後続の差分バックアップと増分バックアップは、フルバックアップが生成したブロックマップを使用して容量を節約できます。

default: n
example: --repo1-block

リポジトリバンドルオプション(--repo-bundle)

リポジトリ内でファイルをまとめます。

小さいファイルをバンドル(結合)し、リポジトリに書き込むファイルの総数を減らします。ファイル数を減らすと、一般に書き込みが効率化され、S3などのオブジェクトストアで特に効果があります。また、長さ0のファイルはマニフェスト以外には保存しないため、時間と容量を節約できます。

default: n
example: --repo1-bundle

リポジトリバンドル対象サイズ上限オプション(--repo-bundle-limit)

ファイルをバンドルする際のサイズ上限です。

バンドルに含めるファイルのサイズ上限です。このサイズより大きいファイルは個別に保存します。

バンドルされたファイルはバックアップの再開時に再利用できないため、このオプションは再開可能なファイルを制御します。つまり、値を大きくすると再開可能なファイルが少なくなります。

default: 2MiB
allowed: [8KiB, 1PiB]
example: --repo1-bundle-limit=10MiB

リポジトリバンドルサイズオプション(--repo-bundle-size)

ファイルバンドルの目標サイズです。

1つのバンドルに追加するファイルの目標サイズを定義します。非圧縮のバンドルサイズは最大でrepo-bundle-size+repo-bundle-limitになるため、このオプションにファイルシステムの最大許容サイズを設定しないでください。

再試行時にはバンドル全体を処理し直す必要があるため、一般に、このオプションを大きくしすぎるのは適切ではありません。

default: 20MiB
allowed: [1MiB, 1PiB]
example: --repo1-bundle-size=10MiB

リポジトリ暗号方式オプション(--repo-cipher-type)

リポジトリの暗号化に使用する暗号方式です。

次の暗号方式をサポートします。

  • none - リポジトリを暗号化しません
  • aes-256-cbc - 鍵長256ビットのAdvanced Encryption Standard

リポジトリの種類(例:S3)が暗号化をサポートしていても、暗号化は常にクライアント側で実行されます。

default: none
example: --repo1-cipher-type=aes-256-cbc

GCSリポジトリバケットオプション(--repo-gcs-bucket)

GCSリポジトリのバケットです。

リポジトリの保存に使用するGCSバケットです。

repo-path=/を設定するとpgBackRestリポジトリをバケットのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのGCSが生成するコンテンツもバケットに保存できるようにすることを推奨します。

example: --repo1-gcs-bucket=/pg-backup

GCSリポジトリエンドポイントオプション(--repo-gcs-endpoint)

GCSリポジトリのエンドポイントです。

ストレージサービスへの接続に使用するエンドポイントです。ローカルのGCSサーバーや別のエンドポイントを使用するように変更できます。

default: storage.googleapis.com
example: --repo1-gcs-endpoint=localhost

GCSリポジトリキー種別オプション(--repo-gcs-key-type)

GCSリポジトリのキー種別です。

認可には次の種別をサポートします。

  • auto - インスタンスのサービスアカウントを使用して認可します。
  • service - ローカルに保存したキーでサービスアカウントを使用します。
  • token - fakegcsなどを使用するローカルテスト用です。

repo-gcs-key-type=serviceの場合、認証トークンの更新時に認証情報を再読み込みします。

default: service
example: --repo1-gcs-key-type=auto

GCSリポジトリプロジェクトIDオプション(--repo-gcs-user-project)

GCSのプロジェクトIDです。

リクエストの課金先を決定するために使用するGCSプロジェクトIDです。

example: --repo1-gcs-user-project=my-project

リポジトリ内のバックアップ間でファイルをハードリンクします。

差分バックアップと増分バックアップのファイルを、それらのフルバックアップにハードリンクすることを有効にします。これにより、ファイルシステム上では各バックアップがフルバックアップであるように見えます。ただし、ハードリンクされたファイルを変更すると、セット内のすべてのバックアップに影響する可能性があるため、注意してください。

default: n
example: --repo1-hardlink

非推奨の名前:hardlink

リポジトリホストオプション(--repo-host)

リモート操作時のリポジトリホストです。

ローカルにマウントされたファイルシステムにバックアップおよびアーカイブする場合、この設定は不要です。

example: --repo1-host=repo1.domain.com

非推奨の名前:backup-host

リポジトリホスト認証局ファイルオプション(--repo-host-ca-file)

リポジトリホストの認証局ファイルです。

リポジトリホストへの接続に、システムのデフォルト以外のCAファイルを使用します。

example: --repo1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt

リポジトリホスト認証局パスオプション(--repo-host-ca-path)

リポジトリホストの認証局パスです。

リポジトリホストへの接続に、システムのデフォルト以外のCAパスを使用します。

example: --repo1-host-ca-path=/etc/pki/tls/certs

リポジトリホスト証明書ファイルオプション(--repo-host-cert-file)

リポジトリホストの証明書ファイルです。

クライアントの身元を証明するためにリポジトリホストに送信します。

example: --repo1-host-cert-file=/path/to/client.crt

リポジトリホストコマンドオプション(--repo-host-cmd)

リポジトリホストのpgBackRestコマンドです。

pgBackRestコマンドのパスがローカルホストとリポジトリホストで異なる場合にのみ必要です。未定義の場合、リポジトリホストのコマンドにはローカルと同じコマンドを設定します。

default: [path of executed pgbackrest binary]
example: --repo1-host-cmd=/usr/lib/backrest/bin/pgbackrest

非推奨の名前:backup-cmd

リポジトリホスト設定オプション(--repo-host-config)

pgBackRestリポジトリホストの設定ファイルです。

リポジトリホスト上の設定ファイルの場所を設定します。リポジトリホストの設定ファイルがローカルの設定ファイルと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --repo1-host-config=/conf/pgbackrest/pgbackrest.conf

非推奨の名前:backup-config

リポジトリホスト追加設定パスオプション(--repo-host-config-include-path)

pgBackRestリポジトリホストの追加設定パスです。

リポジトリホスト上の追加設定パスの場所を設定します。リポジトリホストの追加設定パスがローカルの追加設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --repo1-host-config-include-path=/conf/pgbackrest/conf.d

リポジトリホスト設定パスオプション(--repo-host-config-path)

pgBackRestリポジトリホストの設定パスです。

リポジトリホスト上の設定パスの場所を設定します。リポジトリホストの設定パスがローカルの設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH
example: --repo1-host-config-path=/conf/pgbackrest

リポジトリホストキーファイルオプション(--repo-host-key-file)

リポジトリホストのキーファイルです。

クライアント証明書が所有者によって送信されたことを証明します。

example: --repo1-host-key-file=/path/to/client.key

リポジトリホストポートオプション(--repo-host-port)

repo-hostが設定されている場合のリポジトリホストのポートです。

リポジトリホストのプロトコルにデフォルト以外のポートを指定するには、このオプションを使用します。

注記: repo-host-type=sshの場合、repo-host-portにデフォルト値はありません。この場合、ポートはcmd-sshで指定したコマンドの設定に従います。

default (depending on repo-host-type):
    tls - 8432

allowed: [0, 65535]
example: --repo1-host-port=25

非推奨の名前:backup-ssh-port

リポジトリホストプロトコル種別オプション(--repo-host-type)

リポジトリホストのプロトコル種別です。

次のプロトコル種別をサポートします。

  • ssh - Secure Shell。
  • tls - pgBackRest TLSサーバー。
default: ssh
example: --repo1-host-type=tls

リポジトリホストユーザーオプション(--repo-host-user)

repo-hostが設定されている場合のリポジトリホストのユーザーです。

リポジトリホスト上の操作に使用するユーザーを定義します。postgresユーザーではなく、pgbackrestなどの別のユーザーを使用することを推奨します。リポジトリホストでPostgreSQLを実行する場合は、postgresユーザーをpgbackrestグループに追加することで、リポジトリの内容を誤って破損させずに読み取り権限を与えられます。

default: pgbackrest
example: --repo1-host-user=repo-user

非推奨の名前:backup-user

リポジトリパスオプション(--repo-path)

バックアップとアーカイブを保存するパスです。

リポジトリは、pgBackRestがバックアップを保存し、WALセグメントをアーカイブする場所です。

必要な容量を事前に見積もるのは難しい場合があります。まずいくつかバックアップを取得し、各種類(full/incr/diff)のバックアップサイズを記録して、1日当たりに生成されるWALの量を測定するのが最善です。これにより、必要な容量のおおよその見当が付きます。ただし、データベースの変化に伴い、必要量も時間とともに変わる可能性があります。

default: /var/lib/pgbackrest
example: --repo1-path=/backup/db/backrest

アーカイブ保持オプション(--repo-retention-archive)

連続したWALを何回分のバックアップに相当する期間保持するかを指定します。

注記: バックアップの一貫性を確保するために必要なWALセグメントは、このオプションの設定にかかわらず、そのバックアップが期限切れになるまで常に保持されます。

この値が未設定で、repo-retention-full-typeがcount(デフォルト)の場合、期限切れ処理の対象アーカイブを決める値は、repo-retention-archive-typeがfull(またはdiff)なら、それに対応するrepo-retention-full(またはrepo-retention-diff)の値がデフォルトになります。これにより、すでに期限切れになったバックアップのWALだけが期限切れになります。repo-retention-full-typeがtimeの場合は、repo-retention-fullの設定を満たして保持された最も古いフルバックアップより前のアーカイブを削除することがデフォルトになります。

repo-retention-archive-typeをincrに設定した場合は、このオプションを設定する必要があります。ディスク容量に余裕がない場合は、この設定をrepo-retention-archive-typeと組み合わせ、WALセグメントを積極的に期限切れにできます。ただし、WALが期限切れになったバックアップからPITRを実行できなくなるため、推奨しません。

allowed: [1, 9999999]
example: --repo1-retention-archive=2

非推奨の名前:retention-archive

アーカイブ保持種別オプション(--repo-retention-archive-type)

WALの保持に使用するバックアップの種類です。

fullに設定すると、pgBackRestはrepo-retention-archiveで定義した数のフルバックアップに対応するアーカイブログを保持します。diff(差分)に設定すると、repo-retention-archiveで定義した数のフルバックアップと差分バックアップに対応するアーカイブログを保持します。つまり、最後に取得したバックアップがフルバックアップであれば、repo-retentionの計算では差分バックアップとして数えます。incr(増分)に設定すると、repo-retention-archiveで定義した数のフルバックアップ、差分バックアップ、増分バックアップに対応するアーカイブログを保持します。この設定はデフォルトから変更しないことを推奨します。デフォルトでは、フルバックアップの期限切れに伴ってのみWALを期限切れにします。

default: full
example: --repo1-retention-archive-type=diff

非推奨の名前:retention-archive-type

差分バックアップ保持オプション(--repo-retention-diff)

保持する差分バックアップの数です。

差分バックアップが期限切れになると、それに関連するすべての増分バックアップも期限切れになります。未定義の場合は、依存するフルバックアップが期限切れになるまで、すべての差分バックアップを保持します。

期限切れ処理では、フルバックアップも差分バックアップの数に含まれます。このため、ほとんどの場合、保持が必要な差分バックアップの数はわずかに少なくなります。

allowed: [1, 9999999]
example: --repo1-retention-diff=3

非推奨の名前:retention-diff

フルバックアップ保持オプション(--repo-retention-full)

フルバックアップの保持数/保持期間です。

フルバックアップが期限切れになると、それに関連するすべての差分バックアップと増分バックアップも期限切れになります。このオプションが未定義の場合は警告を出力します。無期限の保持が必要な場合は、最大値を設定してください。

allowed: [1, 9999999]
example: --repo1-retention-full=2

非推奨の名前:retention-full

フルバックアップ保持種別オプション(--repo-retention-full-type)

フルバックアップの保持種別です。

repo-retention-full設定が、保持する期間(日数)とフルバックアップの数のどちらを表すかを決定します。

timeに設定すると、repo-retention-full以上の日数が経過したバックアップが少なくともほかに1つ存在する場合に、repo-retention-fullより古いフルバックアップをリポジトリから削除します。たとえば、repo-retention-fullが30(日)で、25日前と35日前の2つのフルバックアップがある場合、どちらも期限切れにはなりません。35日前のバックアップを期限切れにすると25日前のバックアップだけが残り、古いバックアップを期限切れにする前に少なくとも30日前のバックアップを1つ確保するという30日間の保持ポリシーに違反するためです。repo-retention-archive-typeとrepo-retention-archiveを明示的に設定していない限り、残っている最も古いフルバックアップより前のアーカイブ済みWALは自動的に期限切れになります。

countに設定すると、repo-retention-fullを超えるフルバックアップを期限切れにします。たとえば、repo-retention-fullが4で、5つ目のフルバックアップが完了すると、数を4に保つために最も古いフルバックアップを期限切れにします。

保持の計算に含めるには、バックアップが正常に完了している必要があります。たとえば、repo-retention-full-typeがcountで、repo-retention-fullが2の場合、最も古いバックアップを期限切れにするには、完了したフルバックアップが3つ必要です。

default: count
example: --repo1-retention-full-type=time

バックアップ履歴保持オプション(--repo-retention-history)

バックアップ履歴マニフェストを保持する日数です。

バックアップが完了すると、バックアップマニフェストのコピーをbackup.historyパスに保存します。これらのファイルは、バックアップやWALの増加量を経時的に測定するなどのデータ分析に役立つため、デフォルトでは期限切れになりません。

バックアップ履歴マニフェストを保持する日数を定義するには、repo-retention-historyを設定します。期限切れになっていないバックアップは、常にバックアップ履歴に保持されます。期限切れになっていないバックアップの履歴だけを保持するには、repo-retention-history=0を指定します。

フルバックアップの履歴マニフェストが期限切れになると、そのフルバックアップに関連するすべての差分バックアップと増分バックアップの履歴マニフェストも期限切れになります。

allowed: [0, 9999999]
example: --repo1-retention-history=365

S3リポジトリバケットオプション(--repo-s3-bucket)

S3リポジトリのバケットです。

リポジトリの保存に使用するS3バケットです。

repo-path=/を設定するとpgBackRestリポジトリをバケットのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのAWSが生成するコンテンツもバケットに保存できるようにすることを推奨します。

example: --repo1-s3-bucket=pg-backup

S3リポジトリエンドポイントオプション(--repo-s3-endpoint)

S3リポジトリのエンドポイントです。

選択したリージョンに対して有効なAWSエンドポイントを使用してください。

独自の構成やテスト構成では、repo-storage-ca-file、repo-storage-ca-path、repo-storage-host、repo-storage-port、repo-storage-verify-tlsの各オプションが役立つ場合があります。

example: --repo1-s3-endpoint=s3.amazonaws.com

S3リポジトリキー種別オプション(--repo-s3-key-type)

S3リポジトリのキー種別です。

次の種別をサポートします。

  • shared - 共有キー
  • auto - 一時認証情報を自動取得
  • web-id - ウェブID認証情報を自動取得
  • pod-id - EKS Pod Identityの認証情報を自動取得
  • process - プロセスを実行して認証情報を取得
default: shared
example: --repo1-s3-key-type=auto

S3リポジトリKMSキーIDオプション(--repo-s3-kms-key-id)

S3リポジトリのKMSキーです。

指定したAWS Key Management Serviceのキーを使用して、S3のサーバー側暗号化を有効にします。

example: --repo1-s3-kms-key-id=bceb4f13-6939-4be3-910d-df54dee817b7

S3認証プロセスコマンドオプション(--repo-s3-process-cmd)

S3の認証プロセスコマンドです。

一時的なS3認証情報を取得するために実行するコマンド(および任意の引数)です。リストの最初の要素がコマンドで、残りの要素はパラメーターとして渡します。

プロセスは、AccessKeyId、SecretAccessKey、SessionToken、Expirationフィールドを含むJSONを出力する必要があります。認証情報は有効期限の前に自動更新されます。形式の詳細は、プロセス認証情報プロバイダー を参照してください。

example: --repo1-s3-process-cmd=/usr/local/bin/get-credentials --repo1-s3-process-cmd=--role --repo1-s3-process-cmd=my-role

S3リポジトリリージョンオプション(--repo-s3-region)

S3リポジトリのリージョンです。

バケットを作成したAWSリージョンです。

example: --repo1-s3-region=us-east-1

S3リポジトリのリクエスタ支払いオプション(--repo-s3-requester-pays)

S3リポジトリのリクエスタ支払いです。

S3のリクエスタ支払いを有効にします。

default: n
example: --no-repo1-s3-requester-pays

S3リポジトリロールオプション(--repo-s3-role)

S3リポジトリのロールです。

repo-s3-key-type=autoの場合に、一時認証情報の取得に使用するAWSロール名(完全なARNではありません)です。

example: --repo1-s3-role=authrole

S3リポジトリサービスオプション(--repo-s3-service)

S3の署名サービスです。

SigV4認証で使用するS3署名サービスです。標準のS3エンドポイントでは、デフォルトはs3です。S3 Outpostsエンドポイントを使用する場合は、s3-outpostsに設定します。

default: s3
example: --repo1-s3-service=s3-outposts

S3リポジトリSTSエンドポイントオプション(--repo-s3-sts-host)

S3リポジトリのSTSエンドポイントです。

repo-s3-key-type=web-idを設定した場合に、一時認証情報の取得に使用するSTSエンドポイントです。リージョン別STSを使用するには、リージョン別エンドポイント(例:sts.us-east-1.amazonaws.com)を設定します。GovCloudや中国リージョンで必要になる場合や、レイテンシーを低減するために使用する場合があります。

default: sts.amazonaws.com
example: --repo1-s3-sts-host=sts.us-east-1.amazonaws.com

S3リポジトリURI形式オプション(--repo-s3-uri-style)

S3のURI形式です。

次のURI形式をサポートします。

  • host - bucket.endpointホストに接続します。
  • path - endpointホストに接続し、URIの先頭にバケットを付加します。
default: host
example: --repo1-s3-uri-style=path

SFTPリポジトリホストオプション(--repo-sftp-host)

SFTPリポジトリのホストです。

リポジトリが存在するSFTPホストです。

example: --repo1-sftp-host=sftprepo.domain

SFTPリポジトリホストフィンガープリントオプション(--repo-sftp-host-fingerprint)

SFTPリポジトリホストのフィンガープリントです。

SFTPリポジトリホストのフィンガープリントの生成方法は、repo-sftp-host-key-hash-typeと一致させてください。awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -bでフィンガープリントを生成します。sshホストキーは通常、/etc/sshディレクトリにあります。

example: --repo1-sftp-host-fingerprint=f84e172dfead7aeeeae6c1fdfb5aa8cf

SFTPホストキー確認方式オプション(--repo-sftp-host-key-check-type)

SFTPのホストキー確認方式です。

次のSFTPホストキー確認方式をサポートします。

  • strict - pgBackRestは~/.ssh/known_hostsファイルにホストキーを自動追加せず、ホストキーが変更されたホスト、または既知のホストファイルで見つからないホストへの接続を拒否します。このオプションでは、新しいホストをすべて手動で追加する必要があります。
  • accept-new - pgBackRestは新しいホストキーをユーザーの既知のホストファイルに自動追加しますが、ホストキーが変更されたホストへの接続は許可しません。
  • fingerprint - pgBackRestは、repo-sftp-host-fingerprintオプションで指定したフィンガープリントとホストキーを照合します。
  • none - ホストキーを確認しません。
default: strict
example: --repo1-sftp-host-key-check-type=accept-new

SFTPリポジトリホストキーハッシュ種別オプション(--repo-sftp-host-key-hash-type)

SFTPリポジトリのホストキーハッシュ種別です。

SFTPリポジトリのホストキーハッシュ種別です。SSHの開始時に、リモートシステムのホストキーのダイジェスト計算に使用するハッシュ種別を指定します。新しいバージョンのlibssh2は、md5とsha1に加えてsha256もサポートします。

example: --repo1-sftp-host-key-hash-type=sha256

SFTPリポジトリホストポートオプション(--repo-sftp-host-port)

SFTPリポジトリホストのポートです。

SFTPリポジトリホストのポートです。

default: 22
allowed: [1, 65535]
example: --repo1-sftp-host-port=22

SFTPリポジトリホストユーザーオプション(--repo-sftp-host-user)

SFTPリポジトリホストのユーザーです。

リポジトリの保存に使用するホスト上のユーザーです。

example: --repo1-sftp-host-user=pg-backup

SFTP既知ホストファイルオプション(--repo-sftp-known-host)

SFTPの既知のホストファイルです。

認証時に一致するSFTPホストを探す既知のホストファイルです。未指定の場合、pgBackRestはデフォルトで~/.ssh/known_hosts、~/.ssh/known_hosts2、/etc/ssh/ssh_known_hosts、/etc/ssh/ssh_known_hosts2を検索します。1つ以上のファイルパスを設定した場合は、それらを検索して一致を確認します。ファイルパスは絶対パス、または先頭がチルダのパスである必要があります。repo-sftp-known-hostオプションを複数回指定することで、検索する既知のホストファイルを複数指定できます。既知のホストファイルによる確認を使用するには、repo-sftp-host-fingerprintを指定してはいけません。repo-sftp-host-check-typeオプションも参照してください。

example: --repo1-sftp-known-host=/home/postgres/.ssh/known_hosts

SFTPリポジトリ秘密鍵ファイルオプション(--repo-sftp-private-key-file)

SFTPの秘密鍵ファイルです。

認証に使用するSFTP秘密鍵ファイルです。

example: --repo1-sftp-private-key-file=~/.ssh/id_ed25519

SFTPリポジトリ公開鍵ファイルオプション(--repo-sftp-public-key-file)

SFTPの公開鍵ファイルです。

認証に使用するSFTP公開鍵ファイルです。OpenSSLに対してコンパイルした場合は任意ですが、別のライブラリに対してコンパイルした場合は必須です。

example: --repo1-sftp-public-key-file=~/.ssh/id_ed25519.pub

リポジトリストレージCAファイルオプション(--repo-storage-ca-file)

リポジトリストレージのCAファイルです。

ストレージ(例:S3、Azure)の証明書に、システムのデフォルト以外のCAファイルを使用します。

example: --repo1-storage-ca-file=/etc/pki/tls/certs/ca-bundle.crt

非推奨の名前:repo-azure-ca-file, repo-s3-ca-file

リポジトリストレージTLS CAパスオプション(--repo-storage-ca-path)

リポジトリストレージのCAパスです。

ストレージ(例:S3、Azure)の証明書に、システムのデフォルト以外のCAパスを使用します。

example: --repo1-storage-ca-path=/etc/pki/tls/certs

非推奨の名前:repo-azure-ca-path, repo-s3-ca-path

リポジトリストレージホストオプション(--repo-storage-host)

リポジトリストレージのホストです。

ストレージ(例:S3、Azure)のエンドポイントとは異なるホストに接続します。通常はテストに使用します。

example: --repo1-storage-host=127.0.0.1

非推奨の名前:repo-azure-host, repo-s3-host

リポジトリストレージポートオプション(--repo-storage-port)

リポジトリストレージのポートです。

ストレージ(例:S3、Azure)のエンドポイント(ホストを指定した場合はそのホスト)への接続に使用するポートです。

default: 443
allowed: [1, 65535]
example: --repo1-storage-port=9000

非推奨の名前:repo-azure-port, repo-s3-port

リポジトリストレージタグオプション(--repo-storage-tag)

リポジトリストレージのタグです。

リポジトリがオブジェクトストア(例:S3)の場合に、オブジェクトに付加するタグを指定します。このオプションを繰り返して、複数のタグを追加できます。

pgBackRestにはこれらのタグを変更する機能がないため、リポジトリ全体でタグを統一するには、stanza-createを実行する前に正しく設定してください。

example: --repo1-storage-tag=key1=value1

リポジトリストレージアップロードチャンクサイズオプション(--repo-storage-upload-chunk-size)

リポジトリストレージのアップロードチャンクサイズです。

S3などのオブジェクトストアでは、ファイルが大きすぎてメモリに格納できない場合に、チャンクに分けてアップロードできます。ファイルをメモリに格納できる場合でも、アップロードに使用するメモリ量を制限する方がメモリ効率は高くなります。

チャンクサイズを大きくすると、アップロードリクエストを最小限に抑え、チャンク分割せずに1回のリクエストでアップロードできるファイルが増えるため、一般にパフォーマンスが向上します。一方、メモリ使用量は増加します。チャンクバッファーはプロセスごとに割り当てる必要があるため、process-maxの値が大きいほど、全体のメモリ消費量も増えます。

有効なチャンクサイズは、ストレージの種類やプラットフォームによって異なります。たとえば、AWS S3の最小チャンクサイズは5MiBです。チャンクサイズの呼び方もストレージの種類によって異なるため、最小値/最大値を調べる際は、AWS S3では「part size」、GCSでは「chunk size」、Azureでは「block size」を使用してください。

ファイルが1GiB(PostgreSQLがデフォルトで作成する最大サイズ)より大きい場合、ファイルのアップロードを完了するために、許容される最大値までチャンクサイズを段階的に増やします。

default (depending on repo-type):
    azure - 4MiB
    gcs - 4MiB
    s3 - 5MiB

allow range (depending on repo-type):
    azure - [4MiB, 1GiB]
    gcs - [4MiB, 1GiB]
    s3 - [5MiB, 1GiB]

example: --repo1-storage-upload-chunk-size=16MiB

リポジトリストレージ証明書検証オプション(--repo-storage-verify-tls)

リポジトリストレージの証明書を検証します。

このオプションでは、ストレージ(例:S3、Azure)サーバーのTLS証明書の検証を有効/無効にできます。無効化は、テストや自己署名証明書を使用する場合に限ってください。

default: y
example: --no-repo1-storage-verify-tls

非推奨の名前:repo-azure-verify-tls, repo-s3-verify-ssl, repo-s3-verify-tls

リポジトリ内にシンボリックリンクを作成します。

latestとテーブルスペースのシンボリックリンクの作成を有効にします。これらのシンボリックリンクは、スナップショットを使ってリポジトリ内でその場でリカバリーする場合に最も役立ちますが、そのような利用は一般的ではありません。

大多数のユーザーには役立たないと考えられる機能ですが、従来の動作を維持するため、デフォルトで有効になっています。ただし、シンボリックリンクをサポートしないPosixに似たストレージでは、無効にすると役立つ場合があります。

default: y
example: --no-repo1-symlink

リポジトリ種別オプション(--repo-type)

リポジトリに使用するストレージの種類です。

次のリポジトリ種類をサポートします。

  • azure - Azure Blob Storage Service
  • cifs - posixと同様ですが、リンクとディレクトリのfsyncを無効にします
  • gcs - Google Cloud Storage
  • posix - Posix準拠のファイルシステム
  • s3 - AWS Simple Storage Service
  • sftp - Secure File Transfer Protocol

NFSマウントをposixリポジトリとして使用する場合、PostgreSQLのドキュメントに記載されたものと同じ規則がpgBackRestにも適用されます。データベースクラスターの作成 - ファイルシステム を参照してください。

default: posix
example: --repo1-type=cifs

stanzaオプション

PostgreSQLデータベースオプション(--pg-database)

PostgreSQLのデータベースです。

PostgreSQLへの接続に使用するデータベース名です。通常はデフォルトが最適ですが、このデータベースが存在しない環境もあります。

従来の動作を維持するため、環境変数PGDATABASEの設定は無視されます。

default: postgres
example: --pg1-database=backupdb

PostgreSQLホストオプション(--pg-host)

リモート操作時のPostgreSQLホストです。

PostgreSQLホストとリポジトリホストが異なる場合のバックアップに使用します。

example: --pg1-host=db.domain.com

非推奨の名前:db-host

PostgreSQLホスト認証局ファイルオプション(--pg-host-ca-file)

PostgreSQLホストの認証局ファイルです。

PostgreSQLホストへの接続に、システムのデフォルト以外のCAファイルを使用します。

example: --pg1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt

PostgreSQLホスト認証局パスオプション(--pg-host-ca-path)

PostgreSQLホストの認証局パスです。

PostgreSQLホストへの接続に、システムのデフォルト以外のCAパスを使用します。

example: --pg1-host-ca-path=/etc/pki/tls/certs

PostgreSQLホスト証明書ファイルオプション(--pg-host-cert-file)

PostgreSQLホストの証明書ファイルです。

クライアントの身元を証明するためにPostgreSQLホストに送信します。

example: --pg1-host-cert-file=/path/to/client.crt

PostgreSQLホストコマンドオプション(--pg-host-cmd)

PostgreSQLホストのpgBackRestコマンドです。

pgBackRestコマンドのパスがローカルホストとPostgreSQLホストで異なる場合にのみ必要です。未定義の場合、PostgreSQLホストのコマンドにはローカルと同じコマンドを設定します。

default: [path of executed pgbackrest binary]
example: --pg1-host-cmd=/usr/lib/backrest/bin/pgbackrest

非推奨の名前:db-cmd

PostgreSQLホスト設定オプション(--pg-host-config)

pgBackRestデータベースホストの設定ファイルです。

PostgreSQLホスト上の設定ファイルの場所を設定します。PostgreSQLホストの設定ファイルがローカルの設定ファイルと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --pg1-host-config=/conf/pgbackrest/pgbackrest.conf

非推奨の名前:db-config

PostgreSQLホスト追加設定パスオプション(--pg-host-config-include-path)

pgBackRestデータベースホストの追加設定パスです。

PostgreSQLホスト上の追加設定パスの場所を設定します。PostgreSQLホストの追加設定パスがローカルの追加設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --pg1-host-config-include-path=/conf/pgbackrest/conf.d

PostgreSQLホスト設定パスオプション(--pg-host-config-path)

pgBackRestデータベースホストの設定パスです。

PostgreSQLホスト上の設定パスの場所を設定します。PostgreSQLホストの設定パスがローカルの設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH
example: --pg1-host-config-path=/conf/pgbackrest

PostgreSQLホストキーファイルオプション(--pg-host-key-file)

PostgreSQLホストのキーファイルです。

クライアント証明書が所有者によって送信されたことを証明します。

example: --pg1-host-key-file=/path/to/client.key

PostgreSQLホストポートオプション(--pg-host-port)

pg-hostが設定されている場合のPostgreSQLホストのポートです。

PostgreSQLホストのプロトコルにデフォルト以外のポートを指定するには、このオプションを使用します。

注記: pg-host-type=sshの場合、pg-host-portにデフォルト値はありません。この場合、ポートはcmd-sshで指定したコマンドの設定に従います。

default (depending on pg-host-type):
    tls - 8432

allowed: [0, 65535]
example: --pg1-host-port=25

非推奨の名前:db-ssh-port

PostgreSQLホストプロトコル種別オプション(--pg-host-type)

PostgreSQLホストのプロトコル種別です。

次のプロトコル種別をサポートします。

  • ssh - Secure Shell。
  • tls - pgBackRest TLSサーバー。
default: ssh
example: --pg1-host-type=tls

PostgreSQLホストユーザーオプション(--pg-host-user)

pg-hostが設定されている場合のPostgreSQLホストへのログインユーザーです。

このユーザーはリモートのpgBackRestプロセスも所有し、PostgreSQLへの接続を開始します。正しく動作させるには、PostgreSQLデータベースクラスターの所有者を使用してください。通常はデフォルトのpostgresです。

default: postgres
example: --pg1-host-user=db_owner

非推奨の名前:db-user

PostgreSQLパスオプション(--pg-path)

PostgreSQLのデータディレクトリです。

PostgreSQLが報告するdata_directoryと同じ値を設定してください。この値はさまざまな場所から読み取れますが、リストアやオフラインバックアップ時にそれらを利用できない場合に備えて、設定しておくことが賢明です。

pg-pathオプションは、オンラインバックアップのたびにPostgreSQLが報告する値と照合されるため、常に最新の値であるはずです。

example: --pg1-path=/data/db

非推奨の名前:db-path

PostgreSQLポートオプション(--pg-port)

PostgreSQLのポートです。

PostgreSQLが使用しているポートです。ほとんどのPostgreSQLクラスターはデフォルトのポートを使用するため、通常は指定する必要がありません。

default: 5432
allowed: [0, 65535]
example: --pg1-port=6543

非推奨の名前:db-port

PostgreSQLソケットパスオプション(--pg-socket-path)

PostgreSQLのunixソケットパスです。

PostgreSQLの起動時に指定したunixソケットディレクトリです。pgBackRestはOSの標準の場所を自動検索するため、postgresql.confのunix_socket_directories設定でソケットディレクトリを明示的に変更した場合を除き、通常はこの設定を指定する必要がありません。

example: --pg1-socket-path=/var/run/postgresql

非推奨の名前:db-socket-path

PostgreSQLデータベースユーザーオプション(--pg-user)

PostgreSQLのデータベースユーザーです。

PostgreSQLへの接続に使用するデータベースユーザー名です。未指定の場合、pgBackRestはローカルのOSユーザーまたはPGUSERで接続します。

example: --pg1-user=backupuser

4.5 - 確認コマンド(check)

pgBackRestのcheckコマンドのオプションと動作のリファレンス。

checkコマンドは、指定したstanzaのアーカイブとバックアップに対し、pgBackRestとarchive_command設定が正しく構成されていることを検証します。コマンドを実行するホストに設定されたすべてのリポジトリとデータベースの確認を試みます。必要なWALセグメントがアーカイブに到達せず、バックアップが不完全になるような設定ミス、特にアーカイブの設定ミスを検出します。このコマンドは、PostgreSQLホストまたはリポジトリホストで実行できます。スタンバイホストでも実行できますが、スタンバイではpg_switch_xlog()/pg_switch_wal()を実行できないため、リポジトリの設定のみをテストします。

PostgreSQLにWALセグメントのアーカイブを強制するため、pg_create_restore_point('pgBackRest Archive Check')とpg_switch_xlog()/pg_switch_wal()を呼び出します。

コマンドオプション

アーカイブ確認オプション(--archive-check)

バックアップの完了前に、WALセグメントがアーカイブに存在することを確認します。

バックアップの一貫性を確保するために必要なすべてのWALセグメントが、WALアーカイブに存在することを確認します。別のアーカイブ方法を使用していない限り、デフォルトのままにしておくことを推奨します。

archive-copyが有効な場合は、このオプションを有効にする必要があります。

default: y
example: --no-archive-check

アーカイブモード確認オプション(--archive-mode-check)

PostgreSQLのarchive_mode設定を確認します。

このオプションはデフォルトで有効で、PostgreSQLのarchive_mode=alwaysを禁止します。

スタンバイサーバーから送信されたWALセグメントは、プライマリーから送信されたWALセグメントと論理的には同じでも、チェックサムが異なる場合があります。競合を避けるため、複数のソースからのアーカイブを無効にすることを推奨します。

注意:

このオプションを無効にする場合は、archive-pushコマンドを通じてリポジトリに書き込むアーカイバーが1つだけであることを必ず確認してください。

default: y
example: --no-archive-mode-check

アーカイブタイムアウトオプション(--archive-timeout)

アーカイブのタイムアウトです。

各WALセグメントがpgBackRestのアーカイブリポジトリに到達するまで待機する最大時間を秒単位で設定します。このタイムアウトは、バックアップの一貫性に必要なWALセグメントのアーカイブを待つ際に、checkコマンドとbackupコマンドに適用されます。

default: 1m
allowed: [100ms, 1d]
example: --archive-timeout=30

スタンバイからのバックアップオプション(--backup-standby)

スタンバイクラスターからバックアップします。

プライマリークラスターの負荷を軽減するには、スタンバイからのバックアップを有効にします。このオプションでは、プライマリーとスタンバイの両方のホストを設定する必要があります。

次のモードをサポートします。

  • y - バックアップにスタンバイを必須とします。
  • prefer - スタンバイが利用可能ならスタンバイから、そうでなければプライマリーからバックアップします。
  • n - プライマリーからのみバックアップします。
default: n
example: --backup-standby=y

一般オプション

rootでの実行許可オプション(--allow-root)

rootユーザーによるコマンドの実行を許可します。

デフォルトでは、ファイルの所有権を慎重に管理するように設計されたrestoreコマンドのみをrootユーザーで実行できます。ほかのコマンドをrootで実行すると、たとえばリポジトリ内にroot所有のファイルが作成され、PostgreSQLユーザーがアクセスできなくなって、後続のコマンドが失敗するおそれがあります。

それでもコマンドをrootで実行する場合は、このオプションを有効にします。ただし、リポジトリとPostgreSQLクラスターを所有するユーザーとしてpgBackRestを実行する方がはるかに適切です。

default: n
example: --allow-root

バッファーサイズオプション(--buffer-size)

I/O処理のバッファーサイズです。

コピー、圧縮、暗号化などの処理に使用するバッファーサイズです。使用するバッファーの数はオプションによって異なり、各処理で追加のメモリを使用する場合があります。たとえば、gz圧縮では256KiBのメモリを追加で使用する場合があります。

指定できる値は、16KiB、32KiB、64KiB、128KiB、256KiB、512KiB、1MiB、2MiB、4MiB、8MiB、16MiBです。

default: 1MiB
example: --buffer-size=2MiB

SSHクライアントコマンドオプション(--cmd-ssh)

SSHクライアントのコマンドです。

別のSSHクライアントを使用したい場合や、sshコマンドが$PATHに含まれていない場合に、使用するSSHクライアントコマンドを指定します。

default: ssh
example: --cmd-ssh=/usr/bin/ssh

ネットワーク圧縮レベルオプション(--compress-level-network)

ネットワークの圧縮レベルです。

compress-type=noneで、コマンドがリポジトリと同じホストで実行されない場合のネットワーク圧縮レベルを設定します。圧縮によってネットワークトラフィックを削減します。compress-typeがnoneでない場合は、ファイルを1回だけ圧縮するように、compress-level-network設定を無視して代わりにcompress-levelを使用します。

default: 1
allowed: [-5, 12]
example: --compress-level-network=1

設定ファイルオプション(--config)

pgBackRestの設定ファイルです。

デフォルトとは異なる設定ファイルを指定するには、このオプションを使用します。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --config=/conf/pgbackrest/pgbackrest.conf

追加設定パスオプション(--config-include-path)

追加のpgBackRest設定ファイルへのパスです。

指定した場所にある拡張子.confの設定ファイルをpgBackRest設定ファイルと連結し、1つの設定ファイルとして扱います。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --config-include-path=/conf/pgbackrest/conf.d

設定パスオプション(--config-path)

pgBackRest設定ファイルの基準パスです。

この設定は、--configと--config-include-pathの各オプションがコマンドラインで明示的に設定されていない場合に、それらのデフォルトの基準パスを上書きします。

たとえば、--config-path=/conf/pgbackrestだけを渡すと、--configのデフォルトは/conf/pgbackrest/pgbackrest.confに、--config-include-pathのデフォルトは/conf/pgbackrest/conf.dに設定されます。

default: CFGOPTDEF_CONFIG_PATH
example: --config-path=/conf/pgbackrest

データベースタイムアウトオプション(--db-timeout)

データベースクエリーのタイムアウトです。

データベースに対するクエリーのタイムアウトを秒単位で設定します。これには、それぞれかなりの時間がかかる可能性があるバックアップの開始/停止関数も含まれます。そのため、これらの関数が速やかに戻ることがわかっている場合(つまり、start-fast=yを設定し、バックアップ中にデータベースクラスターが多数のWALセグメントを生成しないことがわかっている場合)を除き、タイムアウトは長めにしておくことを推奨します。

注記: db-timeoutオプションは、protocol-timeoutオプションより小さくする必要があります。

default: 30m
allowed: [100ms, 7d]
example: --db-timeout=600

I/Oタイムアウトオプション(--io-timeout)

I/Oのタイムアウトです。

接続および読み取り/書き込み処理に使用する、秒単位のタイムアウトです。

読み取り/書き込み処理全体がこのタイムアウト内に完了する必要はありませんが、わずか1バイトでも、何らかの進展が必要です。

default: 1m
allowed: [100ms, 1h]
example: --io-timeout=120

固定umaskオプション(--neutral-umask)

固定のumaskを使用します。

umaskを0000に設定し、リポジトリ内のファイルやディレクトリが適切な権限で作成されるようにします。デフォルトのディレクトリ権限は0750、ファイル権限は0640です。

代わりに実行ユーザーのumaskを使用するには、設定ファイルにneutral-umask=n、またはコマンドラインに--no-neutral-umaskを指定します。

default: y
example: --no-neutral-umask

プロセス優先度設定オプション(--priority)

プロセスの優先度を設定します。

カーネルのスケジューラーがプロセスに与える優先度(niceness)を定義します。正の値は優先度を下げ、負の値は優先度を上げます。通常、プロセスには自身の優先度を上げる権限がありません。

allowed: [-20, 19]
example: --priority=19

プロトコルタイムアウトオプション(--protocol-timeout)

プロトコルのタイムアウトです。

ローカルまたはリモートのプロセスが、プロトコル層で新しいメッセージの受信を待つタイムアウトを秒単位で設定します。これにより、プロセスがメッセージを無期限に待ち続けることを防ぎます。

注記: protocol-timeoutオプションは、db-timeoutオプションより大きくする必要があります。

default: 31m
allowed: [100ms, 7d]
example: --protocol-timeout=630

キープアライブオプション(--sck-keep-alive)

キープアライブを有効にします。

ソケット接続でキープアライブメッセージを有効にします。

default: y
example: --no-sck-keep-alive

stanzaオプション(--stanza)

stanzaを定義します。

stanzaは、PostgreSQLデータベースクラスターの場所、バックアップ方法、アーカイブオプションなどを定義する設定です。ほとんどのデータベースサーバーにはPostgreSQLデータベースクラスターが1つだけ存在し、stanzaも1つになります。一方、バックアップサーバーには、バックアップが必要なデータベースクラスターごとにstanzaがあります。

stanzaにはプライマリークラスターにちなんだ名前を付けたくなりますが、クラスターに含まれるデータベースを表す名前の方が適しています。stanza名はプライマリーとすべてのレプリカで使用するため、mainやprodなどのローカルクラスター名よりも、appやdwなど、クラスターの実際の役割を表す名前を選ぶ方が適切です。

example: --stanza=main

キープアライブ回数オプション(--tcp-keep-alive-count)

キープアライブの回数です。

接続が切れたと判断するまでに、応答がなくても許容するTCPキープアライブメッセージの数を指定します。

このオプションは、TCP_KEEPCNTソケットオプションをサポートするシステムで利用できます。

allowed: [1, 32]
example: --tcp-keep-alive-count=3

キープアライブ待機時間オプション(--tcp-keep-alive-idle)

キープアライブの待機時間です。

ネットワーク通信がない状態で、オペレーティングシステムがTCPキープアライブメッセージを送信するまでの時間を秒単位で指定します。

このオプションは、TCP_KEEPIDLEソケットオプションをサポートするシステムで利用できます。

allowed: [1, 3600]
example: --tcp-keep-alive-idle=60

キープアライブ間隔オプション(--tcp-keep-alive-interval)

キープアライブの送信間隔です。

応答のないTCPキープアライブメッセージを再送信するまでの時間を秒単位で指定します。

このオプションは、TCP_KEEPINTVLソケットオプションをサポートするシステムで利用できます。

allowed: [1, 900]
example: --tcp-keep-alive-interval=30

TLSv1.2暗号スイートオプション(--tls-cipher-12)

許可するTLSv1.2暗号スイートです。

pgBackRestクライアントとサーバー間のすべてのTLS接続は暗号化されます。デフォルトでは、オブジェクトストア(例:S3)への接続も暗号化されます。

注記: どのトランスポート接続でも、セキュリティーの最低要件はTLSv1.2です。

必要に応じて、受け入れる暗号スイートを調整できます。特別なセキュリティー要件がなければ、例に示す値が妥当な選択です。未設定(デフォルト)の場合は、使用するOpenSSLライブラリのデフォルトが適用されます。

example: --tls-cipher-12=HIGH:MEDIUM:+3DES:!aNULL

TLSv1.3暗号スイートオプション(--tls-cipher-13)

許可するTLSv1.3暗号スイートです。

pgBackRestクライアントとサーバー間のすべてのTLS接続は暗号化されます。デフォルトでは、オブジェクトストア(例:S3)への接続も暗号化されます。

注記: どのトランスポート接続でも、セキュリティーの最低要件はTLSv1.2です。

必要に応じて、受け入れる暗号スイートを調整できます。未設定(デフォルト)の場合は、使用するOpenSSLライブラリのデフォルトが適用されます。

example: --tls-cipher-13=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256

ログオプション

コンソールログレベルオプション(--log-level-console)

コンソールに出力するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: warn
example: --log-level-console=error

ファイルログレベルオプション(--log-level-file)

ファイルに記録するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: info
example: --log-level-file=debug

標準エラーログレベルオプション(--log-level-stderr)

stderrに出力するログのレベルです。

stdout(log-level-consoleで指定)の代わりにstderrへ出力するログレベルを指定します。stderrにはタイムスタンプとプロセスを出力しません。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: off
example: --log-level-stderr=error

ログパスオプション(--log-path)

ログファイルを保存するパスです。

ログパスは、pgBackRestがログファイルを保存する場所です。log-level-file=offの場合、ログパスは不要です。

default: /var/log/pgbackrest
example: --log-path=/backup/db/log

サブプロセスログオプション(--log-subprocess)

サブプロセスでのログ記録を有効にします。

このプロセスが作成するすべてのサブプロセスで、log-level-fileで指定したログレベルによるファイルへのログ記録を有効にします。

default: n
example: --log-subprocess

ログタイムスタンプオプション(--log-timestamp)

ログのタイムスタンプを有効にします。

コンソールとファイルのログでタイムスタンプを有効にします。このオプションは、ドキュメント生成などの特殊な状況では無効にします。

default: y
example: --no-log-timestamp

メンテナー向けオプション

PostgreSQLバージョン強制指定オプション(--pg-version-force)

PostgreSQLのバージョンを強制指定します。

pg_controlまたはWALヘッダーを読み取って自動検出したバージョンの代わりに、指定したPostgreSQLバージョンを使用します。これは主に、これらの値がリリース版とは異なるPostgreSQLのフォークや開発版で役立ちます。PostgreSQLがserver_version_numで報告するバージョンは、強制指定したバージョンと一致する必要があります。

警告:

このオプションは慎重に使用してください。pg_controlとWALヘッダーは引き続き、指定バージョンで想定される形式、つまり公式のオープンソース版PostgreSQLの形式で読み取られます。フォークや開発版が、pgBackRestの依存するフィールドの形式を変更していると、予期しない動作が生じます。一般に、このオプションが想定どおりに動作するのは、フォークが独自の構造体メンバーをすべて標準のPostgreSQLメンバーの後ろに追加している場合に限られます。

example: --pg-version-force=15

リポジトリオプション

Azureリポジトリコンテナーオプション(--repo-azure-container)

Azureリポジトリのコンテナーです。

リポジトリの保存に使用するAzureコンテナーです。

repo-path=/を設定するとpgBackRestリポジトリをコンテナーのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのAzureが生成するコンテンツもコンテナーに保存できるようにすることを推奨します。

example: --repo1-azure-container=pg-backup

Azureリポジトリキー種別オプション(--repo-azure-key-type)

Azureリポジトリのキー種別です。

認可には次の種別をサポートします。

  • shared - 共有キー
  • sas - 共有アクセス署名
  • auto - AzureマネージドIDを使用して自動的に認可
default: shared
example: --repo1-azure-key-type=sas

AzureリポジトリURI形式オプション(--repo-azure-uri-style)

AzureのURI形式です。

次のURI形式をサポートします。

  • host - account.endpointホストに接続します。
  • path - endpointホストに接続し、URIの先頭にアカウントを付加します。
default: host
example: --repo1-azure-uri-style=path

リポジトリ暗号方式オプション(--repo-cipher-type)

リポジトリの暗号化に使用する暗号方式です。

次の暗号方式をサポートします。

  • none - リポジトリを暗号化しません
  • aes-256-cbc - 鍵長256ビットのAdvanced Encryption Standard

リポジトリの種類(例:S3)が暗号化をサポートしていても、暗号化は常にクライアント側で実行されます。

default: none
example: --repo1-cipher-type=aes-256-cbc

GCSリポジトリバケットオプション(--repo-gcs-bucket)

GCSリポジトリのバケットです。

リポジトリの保存に使用するGCSバケットです。

repo-path=/を設定するとpgBackRestリポジトリをバケットのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのGCSが生成するコンテンツもバケットに保存できるようにすることを推奨します。

example: --repo1-gcs-bucket=/pg-backup

GCSリポジトリエンドポイントオプション(--repo-gcs-endpoint)

GCSリポジトリのエンドポイントです。

ストレージサービスへの接続に使用するエンドポイントです。ローカルのGCSサーバーや別のエンドポイントを使用するように変更できます。

default: storage.googleapis.com
example: --repo1-gcs-endpoint=localhost

GCSリポジトリキー種別オプション(--repo-gcs-key-type)

GCSリポジトリのキー種別です。

認可には次の種別をサポートします。

  • auto - インスタンスのサービスアカウントを使用して認可します。
  • service - ローカルに保存したキーでサービスアカウントを使用します。
  • token - fakegcsなどを使用するローカルテスト用です。

repo-gcs-key-type=serviceの場合、認証トークンの更新時に認証情報を再読み込みします。

default: service
example: --repo1-gcs-key-type=auto

GCSリポジトリプロジェクトIDオプション(--repo-gcs-user-project)

GCSのプロジェクトIDです。

リクエストの課金先を決定するために使用するGCSプロジェクトIDです。

example: --repo1-gcs-user-project=my-project

リポジトリホストオプション(--repo-host)

リモート操作時のリポジトリホストです。

ローカルにマウントされたファイルシステムにバックアップおよびアーカイブする場合、この設定は不要です。

example: --repo1-host=repo1.domain.com

非推奨の名前:backup-host

リポジトリホスト認証局ファイルオプション(--repo-host-ca-file)

リポジトリホストの認証局ファイルです。

リポジトリホストへの接続に、システムのデフォルト以外のCAファイルを使用します。

example: --repo1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt

リポジトリホスト認証局パスオプション(--repo-host-ca-path)

リポジトリホストの認証局パスです。

リポジトリホストへの接続に、システムのデフォルト以外のCAパスを使用します。

example: --repo1-host-ca-path=/etc/pki/tls/certs

リポジトリホスト証明書ファイルオプション(--repo-host-cert-file)

リポジトリホストの証明書ファイルです。

クライアントの身元を証明するためにリポジトリホストに送信します。

example: --repo1-host-cert-file=/path/to/client.crt

リポジトリホストコマンドオプション(--repo-host-cmd)

リポジトリホストのpgBackRestコマンドです。

pgBackRestコマンドのパスがローカルホストとリポジトリホストで異なる場合にのみ必要です。未定義の場合、リポジトリホストのコマンドにはローカルと同じコマンドを設定します。

default: [path of executed pgbackrest binary]
example: --repo1-host-cmd=/usr/lib/backrest/bin/pgbackrest

非推奨の名前:backup-cmd

リポジトリホスト設定オプション(--repo-host-config)

pgBackRestリポジトリホストの設定ファイルです。

リポジトリホスト上の設定ファイルの場所を設定します。リポジトリホストの設定ファイルがローカルの設定ファイルと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --repo1-host-config=/conf/pgbackrest/pgbackrest.conf

非推奨の名前:backup-config

リポジトリホスト追加設定パスオプション(--repo-host-config-include-path)

pgBackRestリポジトリホストの追加設定パスです。

リポジトリホスト上の追加設定パスの場所を設定します。リポジトリホストの追加設定パスがローカルの追加設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --repo1-host-config-include-path=/conf/pgbackrest/conf.d

リポジトリホスト設定パスオプション(--repo-host-config-path)

pgBackRestリポジトリホストの設定パスです。

リポジトリホスト上の設定パスの場所を設定します。リポジトリホストの設定パスがローカルの設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH
example: --repo1-host-config-path=/conf/pgbackrest

リポジトリホストキーファイルオプション(--repo-host-key-file)

リポジトリホストのキーファイルです。

クライアント証明書が所有者によって送信されたことを証明します。

example: --repo1-host-key-file=/path/to/client.key

リポジトリホストポートオプション(--repo-host-port)

repo-hostが設定されている場合のリポジトリホストのポートです。

リポジトリホストのプロトコルにデフォルト以外のポートを指定するには、このオプションを使用します。

注記: repo-host-type=sshの場合、repo-host-portにデフォルト値はありません。この場合、ポートはcmd-sshで指定したコマンドの設定に従います。

default (depending on repo-host-type):
    tls - 8432

allowed: [0, 65535]
example: --repo1-host-port=25

非推奨の名前:backup-ssh-port

リポジトリホストプロトコル種別オプション(--repo-host-type)

リポジトリホストのプロトコル種別です。

次のプロトコル種別をサポートします。

  • ssh - Secure Shell。
  • tls - pgBackRest TLSサーバー。
default: ssh
example: --repo1-host-type=tls

リポジトリホストユーザーオプション(--repo-host-user)

repo-hostが設定されている場合のリポジトリホストのユーザーです。

リポジトリホスト上の操作に使用するユーザーを定義します。postgresユーザーではなく、pgbackrestなどの別のユーザーを使用することを推奨します。リポジトリホストでPostgreSQLを実行する場合は、postgresユーザーをpgbackrestグループに追加することで、リポジトリの内容を誤って破損させずに読み取り権限を与えられます。

default: pgbackrest
example: --repo1-host-user=repo-user

非推奨の名前:backup-user

リポジトリパスオプション(--repo-path)

バックアップとアーカイブを保存するパスです。

リポジトリは、pgBackRestがバックアップを保存し、WALセグメントをアーカイブする場所です。

必要な容量を事前に見積もるのは難しい場合があります。まずいくつかバックアップを取得し、各種類(full/incr/diff)のバックアップサイズを記録して、1日当たりに生成されるWALの量を測定するのが最善です。これにより、必要な容量のおおよその見当が付きます。ただし、データベースの変化に伴い、必要量も時間とともに変わる可能性があります。

default: /var/lib/pgbackrest
example: --repo1-path=/backup/db/backrest

S3リポジトリバケットオプション(--repo-s3-bucket)

S3リポジトリのバケットです。

リポジトリの保存に使用するS3バケットです。

repo-path=/を設定するとpgBackRestリポジトリをバケットのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのAWSが生成するコンテンツもバケットに保存できるようにすることを推奨します。

example: --repo1-s3-bucket=pg-backup

S3リポジトリエンドポイントオプション(--repo-s3-endpoint)

S3リポジトリのエンドポイントです。

選択したリージョンに対して有効なAWSエンドポイントを使用してください。

独自の構成やテスト構成では、repo-storage-ca-file、repo-storage-ca-path、repo-storage-host、repo-storage-port、repo-storage-verify-tlsの各オプションが役立つ場合があります。

example: --repo1-s3-endpoint=s3.amazonaws.com

S3リポジトリキー種別オプション(--repo-s3-key-type)

S3リポジトリのキー種別です。

次の種別をサポートします。

  • shared - 共有キー
  • auto - 一時認証情報を自動取得
  • web-id - ウェブID認証情報を自動取得
  • pod-id - EKS Pod Identityの認証情報を自動取得
  • process - プロセスを実行して認証情報を取得
default: shared
example: --repo1-s3-key-type=auto

S3リポジトリKMSキーIDオプション(--repo-s3-kms-key-id)

S3リポジトリのKMSキーです。

指定したAWS Key Management Serviceのキーを使用して、S3のサーバー側暗号化を有効にします。

example: --repo1-s3-kms-key-id=bceb4f13-6939-4be3-910d-df54dee817b7

S3認証プロセスコマンドオプション(--repo-s3-process-cmd)

S3の認証プロセスコマンドです。

一時的なS3認証情報を取得するために実行するコマンド(および任意の引数)です。リストの最初の要素がコマンドで、残りの要素はパラメーターとして渡します。

プロセスは、AccessKeyId、SecretAccessKey、SessionToken、Expirationフィールドを含むJSONを出力する必要があります。認証情報は有効期限の前に自動更新されます。形式の詳細は、プロセス認証情報プロバイダー を参照してください。

example: --repo1-s3-process-cmd=/usr/local/bin/get-credentials --repo1-s3-process-cmd=--role --repo1-s3-process-cmd=my-role

S3リポジトリリージョンオプション(--repo-s3-region)

S3リポジトリのリージョンです。

バケットを作成したAWSリージョンです。

example: --repo1-s3-region=us-east-1

S3リポジトリのリクエスタ支払いオプション(--repo-s3-requester-pays)

S3リポジトリのリクエスタ支払いです。

S3のリクエスタ支払いを有効にします。

default: n
example: --no-repo1-s3-requester-pays

S3リポジトリロールオプション(--repo-s3-role)

S3リポジトリのロールです。

repo-s3-key-type=autoの場合に、一時認証情報の取得に使用するAWSロール名(完全なARNではありません)です。

example: --repo1-s3-role=authrole

S3リポジトリサービスオプション(--repo-s3-service)

S3の署名サービスです。

SigV4認証で使用するS3署名サービスです。標準のS3エンドポイントでは、デフォルトはs3です。S3 Outpostsエンドポイントを使用する場合は、s3-outpostsに設定します。

default: s3
example: --repo1-s3-service=s3-outposts

S3リポジトリSTSエンドポイントオプション(--repo-s3-sts-host)

S3リポジトリのSTSエンドポイントです。

repo-s3-key-type=web-idを設定した場合に、一時認証情報の取得に使用するSTSエンドポイントです。リージョン別STSを使用するには、リージョン別エンドポイント(例:sts.us-east-1.amazonaws.com)を設定します。GovCloudや中国リージョンで必要になる場合や、レイテンシーを低減するために使用する場合があります。

default: sts.amazonaws.com
example: --repo1-s3-sts-host=sts.us-east-1.amazonaws.com

S3リポジトリURI形式オプション(--repo-s3-uri-style)

S3のURI形式です。

次のURI形式をサポートします。

  • host - bucket.endpointホストに接続します。
  • path - endpointホストに接続し、URIの先頭にバケットを付加します。
default: host
example: --repo1-s3-uri-style=path

SFTPリポジトリホストオプション(--repo-sftp-host)

SFTPリポジトリのホストです。

リポジトリが存在するSFTPホストです。

example: --repo1-sftp-host=sftprepo.domain

SFTPリポジトリホストフィンガープリントオプション(--repo-sftp-host-fingerprint)

SFTPリポジトリホストのフィンガープリントです。

SFTPリポジトリホストのフィンガープリントの生成方法は、repo-sftp-host-key-hash-typeと一致させてください。awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -bでフィンガープリントを生成します。sshホストキーは通常、/etc/sshディレクトリにあります。

example: --repo1-sftp-host-fingerprint=f84e172dfead7aeeeae6c1fdfb5aa8cf

SFTPホストキー確認方式オプション(--repo-sftp-host-key-check-type)

SFTPのホストキー確認方式です。

次のSFTPホストキー確認方式をサポートします。

  • strict - pgBackRestは~/.ssh/known_hostsファイルにホストキーを自動追加せず、ホストキーが変更されたホスト、または既知のホストファイルで見つからないホストへの接続を拒否します。このオプションでは、新しいホストをすべて手動で追加する必要があります。
  • accept-new - pgBackRestは新しいホストキーをユーザーの既知のホストファイルに自動追加しますが、ホストキーが変更されたホストへの接続は許可しません。
  • fingerprint - pgBackRestは、repo-sftp-host-fingerprintオプションで指定したフィンガープリントとホストキーを照合します。
  • none - ホストキーを確認しません。
default: strict
example: --repo1-sftp-host-key-check-type=accept-new

SFTPリポジトリホストキーハッシュ種別オプション(--repo-sftp-host-key-hash-type)

SFTPリポジトリのホストキーハッシュ種別です。

SFTPリポジトリのホストキーハッシュ種別です。SSHの開始時に、リモートシステムのホストキーのダイジェスト計算に使用するハッシュ種別を指定します。新しいバージョンのlibssh2は、md5とsha1に加えてsha256もサポートします。

example: --repo1-sftp-host-key-hash-type=sha256

SFTPリポジトリホストポートオプション(--repo-sftp-host-port)

SFTPリポジトリホストのポートです。

SFTPリポジトリホストのポートです。

default: 22
allowed: [1, 65535]
example: --repo1-sftp-host-port=22

SFTPリポジトリホストユーザーオプション(--repo-sftp-host-user)

SFTPリポジトリホストのユーザーです。

リポジトリの保存に使用するホスト上のユーザーです。

example: --repo1-sftp-host-user=pg-backup

SFTP既知ホストファイルオプション(--repo-sftp-known-host)

SFTPの既知のホストファイルです。

認証時に一致するSFTPホストを探す既知のホストファイルです。未指定の場合、pgBackRestはデフォルトで~/.ssh/known_hosts、~/.ssh/known_hosts2、/etc/ssh/ssh_known_hosts、/etc/ssh/ssh_known_hosts2を検索します。1つ以上のファイルパスを設定した場合は、それらを検索して一致を確認します。ファイルパスは絶対パス、または先頭がチルダのパスである必要があります。repo-sftp-known-hostオプションを複数回指定することで、検索する既知のホストファイルを複数指定できます。既知のホストファイルによる確認を使用するには、repo-sftp-host-fingerprintを指定してはいけません。repo-sftp-host-check-typeオプションも参照してください。

example: --repo1-sftp-known-host=/home/postgres/.ssh/known_hosts

SFTPリポジトリ秘密鍵ファイルオプション(--repo-sftp-private-key-file)

SFTPの秘密鍵ファイルです。

認証に使用するSFTP秘密鍵ファイルです。

example: --repo1-sftp-private-key-file=~/.ssh/id_ed25519

SFTPリポジトリ公開鍵ファイルオプション(--repo-sftp-public-key-file)

SFTPの公開鍵ファイルです。

認証に使用するSFTP公開鍵ファイルです。OpenSSLに対してコンパイルした場合は任意ですが、別のライブラリに対してコンパイルした場合は必須です。

example: --repo1-sftp-public-key-file=~/.ssh/id_ed25519.pub

リポジトリストレージCAファイルオプション(--repo-storage-ca-file)

リポジトリストレージのCAファイルです。

ストレージ(例:S3、Azure)の証明書に、システムのデフォルト以外のCAファイルを使用します。

example: --repo1-storage-ca-file=/etc/pki/tls/certs/ca-bundle.crt

非推奨の名前:repo-azure-ca-file, repo-s3-ca-file

リポジトリストレージTLS CAパスオプション(--repo-storage-ca-path)

リポジトリストレージのCAパスです。

ストレージ(例:S3、Azure)の証明書に、システムのデフォルト以外のCAパスを使用します。

example: --repo1-storage-ca-path=/etc/pki/tls/certs

非推奨の名前:repo-azure-ca-path, repo-s3-ca-path

リポジトリストレージホストオプション(--repo-storage-host)

リポジトリストレージのホストです。

ストレージ(例:S3、Azure)のエンドポイントとは異なるホストに接続します。通常はテストに使用します。

example: --repo1-storage-host=127.0.0.1

非推奨の名前:repo-azure-host, repo-s3-host

リポジトリストレージポートオプション(--repo-storage-port)

リポジトリストレージのポートです。

ストレージ(例:S3、Azure)のエンドポイント(ホストを指定した場合はそのホスト)への接続に使用するポートです。

default: 443
allowed: [1, 65535]
example: --repo1-storage-port=9000

非推奨の名前:repo-azure-port, repo-s3-port

リポジトリストレージタグオプション(--repo-storage-tag)

リポジトリストレージのタグです。

リポジトリがオブジェクトストア(例:S3)の場合に、オブジェクトに付加するタグを指定します。このオプションを繰り返して、複数のタグを追加できます。

pgBackRestにはこれらのタグを変更する機能がないため、リポジトリ全体でタグを統一するには、stanza-createを実行する前に正しく設定してください。

example: --repo1-storage-tag=key1=value1

リポジトリストレージアップロードチャンクサイズオプション(--repo-storage-upload-chunk-size)

リポジトリストレージのアップロードチャンクサイズです。

S3などのオブジェクトストアでは、ファイルが大きすぎてメモリに格納できない場合に、チャンクに分けてアップロードできます。ファイルをメモリに格納できる場合でも、アップロードに使用するメモリ量を制限する方がメモリ効率は高くなります。

チャンクサイズを大きくすると、アップロードリクエストを最小限に抑え、チャンク分割せずに1回のリクエストでアップロードできるファイルが増えるため、一般にパフォーマンスが向上します。一方、メモリ使用量は増加します。チャンクバッファーはプロセスごとに割り当てる必要があるため、process-maxの値が大きいほど、全体のメモリ消費量も増えます。

有効なチャンクサイズは、ストレージの種類やプラットフォームによって異なります。たとえば、AWS S3の最小チャンクサイズは5MiBです。チャンクサイズの呼び方もストレージの種類によって異なるため、最小値/最大値を調べる際は、AWS S3では「part size」、GCSでは「chunk size」、Azureでは「block size」を使用してください。

ファイルが1GiB(PostgreSQLがデフォルトで作成する最大サイズ)より大きい場合、ファイルのアップロードを完了するために、許容される最大値までチャンクサイズを段階的に増やします。

default (depending on repo-type):
    azure - 4MiB
    gcs - 4MiB
    s3 - 5MiB

allow range (depending on repo-type):
    azure - [4MiB, 1GiB]
    gcs - [4MiB, 1GiB]
    s3 - [5MiB, 1GiB]

example: --repo1-storage-upload-chunk-size=16MiB

リポジトリストレージ証明書検証オプション(--repo-storage-verify-tls)

リポジトリストレージの証明書を検証します。

このオプションでは、ストレージ(例:S3、Azure)サーバーのTLS証明書の検証を有効/無効にできます。無効化は、テストや自己署名証明書を使用する場合に限ってください。

default: y
example: --no-repo1-storage-verify-tls

非推奨の名前:repo-azure-verify-tls, repo-s3-verify-ssl, repo-s3-verify-tls

リポジトリ種別オプション(--repo-type)

リポジトリに使用するストレージの種類です。

次のリポジトリ種類をサポートします。

  • azure - Azure Blob Storage Service
  • cifs - posixと同様ですが、リンクとディレクトリのfsyncを無効にします
  • gcs - Google Cloud Storage
  • posix - Posix準拠のファイルシステム
  • s3 - AWS Simple Storage Service
  • sftp - Secure File Transfer Protocol

NFSマウントをposixリポジトリとして使用する場合、PostgreSQLのドキュメントに記載されたものと同じ規則がpgBackRestにも適用されます。データベースクラスターの作成 - ファイルシステム を参照してください。

default: posix
example: --repo1-type=cifs

stanzaオプション

PostgreSQLデータベースオプション(--pg-database)

PostgreSQLのデータベースです。

PostgreSQLへの接続に使用するデータベース名です。通常はデフォルトが最適ですが、このデータベースが存在しない環境もあります。

従来の動作を維持するため、環境変数PGDATABASEの設定は無視されます。

default: postgres
example: --pg1-database=backupdb

PostgreSQLホストオプション(--pg-host)

リモート操作時のPostgreSQLホストです。

PostgreSQLホストとリポジトリホストが異なる場合のバックアップに使用します。

example: --pg1-host=db.domain.com

非推奨の名前:db-host

PostgreSQLホスト認証局ファイルオプション(--pg-host-ca-file)

PostgreSQLホストの認証局ファイルです。

PostgreSQLホストへの接続に、システムのデフォルト以外のCAファイルを使用します。

example: --pg1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt

PostgreSQLホスト認証局パスオプション(--pg-host-ca-path)

PostgreSQLホストの認証局パスです。

PostgreSQLホストへの接続に、システムのデフォルト以外のCAパスを使用します。

example: --pg1-host-ca-path=/etc/pki/tls/certs

PostgreSQLホスト証明書ファイルオプション(--pg-host-cert-file)

PostgreSQLホストの証明書ファイルです。

クライアントの身元を証明するためにPostgreSQLホストに送信します。

example: --pg1-host-cert-file=/path/to/client.crt

PostgreSQLホストコマンドオプション(--pg-host-cmd)

PostgreSQLホストのpgBackRestコマンドです。

pgBackRestコマンドのパスがローカルホストとPostgreSQLホストで異なる場合にのみ必要です。未定義の場合、PostgreSQLホストのコマンドにはローカルと同じコマンドを設定します。

default: [path of executed pgbackrest binary]
example: --pg1-host-cmd=/usr/lib/backrest/bin/pgbackrest

非推奨の名前:db-cmd

PostgreSQLホスト設定オプション(--pg-host-config)

pgBackRestデータベースホストの設定ファイルです。

PostgreSQLホスト上の設定ファイルの場所を設定します。PostgreSQLホストの設定ファイルがローカルの設定ファイルと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --pg1-host-config=/conf/pgbackrest/pgbackrest.conf

非推奨の名前:db-config

PostgreSQLホスト追加設定パスオプション(--pg-host-config-include-path)

pgBackRestデータベースホストの追加設定パスです。

PostgreSQLホスト上の追加設定パスの場所を設定します。PostgreSQLホストの追加設定パスがローカルの追加設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --pg1-host-config-include-path=/conf/pgbackrest/conf.d

PostgreSQLホスト設定パスオプション(--pg-host-config-path)

pgBackRestデータベースホストの設定パスです。

PostgreSQLホスト上の設定パスの場所を設定します。PostgreSQLホストの設定パスがローカルの設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH
example: --pg1-host-config-path=/conf/pgbackrest

PostgreSQLホストキーファイルオプション(--pg-host-key-file)

PostgreSQLホストのキーファイルです。

クライアント証明書が所有者によって送信されたことを証明します。

example: --pg1-host-key-file=/path/to/client.key

PostgreSQLホストポートオプション(--pg-host-port)

pg-hostが設定されている場合のPostgreSQLホストのポートです。

PostgreSQLホストのプロトコルにデフォルト以外のポートを指定するには、このオプションを使用します。

注記: pg-host-type=sshの場合、pg-host-portにデフォルト値はありません。この場合、ポートはcmd-sshで指定したコマンドの設定に従います。

default (depending on pg-host-type):
    tls - 8432

allowed: [0, 65535]
example: --pg1-host-port=25

非推奨の名前:db-ssh-port

PostgreSQLホストプロトコル種別オプション(--pg-host-type)

PostgreSQLホストのプロトコル種別です。

次のプロトコル種別をサポートします。

  • ssh - Secure Shell。
  • tls - pgBackRest TLSサーバー。
default: ssh
example: --pg1-host-type=tls

PostgreSQLホストユーザーオプション(--pg-host-user)

pg-hostが設定されている場合のPostgreSQLホストへのログインユーザーです。

このユーザーはリモートのpgBackRestプロセスも所有し、PostgreSQLへの接続を開始します。正しく動作させるには、PostgreSQLデータベースクラスターの所有者を使用してください。通常はデフォルトのpostgresです。

default: postgres
example: --pg1-host-user=db_owner

非推奨の名前:db-user

PostgreSQLパスオプション(--pg-path)

PostgreSQLのデータディレクトリです。

PostgreSQLが報告するdata_directoryと同じ値を設定してください。この値はさまざまな場所から読み取れますが、リストアやオフラインバックアップ時にそれらを利用できない場合に備えて、設定しておくことが賢明です。

pg-pathオプションは、オンラインバックアップのたびにPostgreSQLが報告する値と照合されるため、常に最新の値であるはずです。

example: --pg1-path=/data/db

非推奨の名前:db-path

PostgreSQLポートオプション(--pg-port)

PostgreSQLのポートです。

PostgreSQLが使用しているポートです。ほとんどのPostgreSQLクラスターはデフォルトのポートを使用するため、通常は指定する必要がありません。

default: 5432
allowed: [0, 65535]
example: --pg1-port=6543

非推奨の名前:db-port

PostgreSQLソケットパスオプション(--pg-socket-path)

PostgreSQLのunixソケットパスです。

PostgreSQLの起動時に指定したunixソケットディレクトリです。pgBackRestはOSの標準の場所を自動検索するため、postgresql.confのunix_socket_directories設定でソケットディレクトリを明示的に変更した場合を除き、通常はこの設定を指定する必要がありません。

example: --pg1-socket-path=/var/run/postgresql

非推奨の名前:db-socket-path

PostgreSQLデータベースユーザーオプション(--pg-user)

PostgreSQLのデータベースユーザーです。

PostgreSQLへの接続に使用するデータベースユーザー名です。未指定の場合、pgBackRestはローカルのOSユーザーまたはPGUSERで接続します。

example: --pg1-user=backupuser

4.6 - 期限切れ処理コマンド(expire)

pgBackRestのexpireコマンドのオプションと動作のリファレンス。

pgBackRestは、保持数または保持期間という保持種別に基づいてフルバックアップをローテーションします。保持数を指定した場合、期限切れ処理ではバックアップの作成時期ではなく、保持すべき数を基準にします。差分バックアップは数に基づきますが、依存するフルバックアップが期限切れになると必ず期限切れになります。増分バックアップが保持設定によって単独で期限切れになることはなく、関連するフルバックアップまたは差分バックアップとともに期限切れになります。詳細と例は、フルバックアップの保持 と差分バックアップの保持 の各セクションを参照してください。

アーカイブ済みWALは、デフォルトでは期限切れになっていないバックアップのために保持されます。推奨はしませんが、この保持スケジュールはretention-archiveオプションでリポジトリごとに変更できます。詳細と例は、アーカイブの保持 セクションを参照してください。

expireコマンドは、バックアップが成功するたびに自動実行され、ユーザーが実行することもできます。ユーザーが実行した場合は、設定された各リポジトリの保持設定に従って期限切れ処理を行います。--repoオプションを指定した場合は、そのリポジトリだけで期限切れ処理を行います。ユーザーは--setオプションで特定のバックアップセットに期限切れ処理を限定することもできます。この場合、--repoオプションを指定しない限り、すべてのリポジトリを検索し、セットの条件に一致するものを期限切れにします。expireコマンドを実行するたびに、アーカイブの保持スケジュールも確認し、処理を実行します。

コマンドオプション

指定セグメントより前のアーカイブ削除オプション(--archive-expire-before)

指定したWALセグメントより前のWALアーカイブを削除します。

指定したセグメントより前のWALセグメントのうち、保持されるバックアップに必要ないものだけを削除します。対象は、保持する最も古いバックアップセットより前のセグメント、またはリポジトリにバックアップがない場合は任意のセグメントです。指定したセグメントとそれ以降はすべて保持します。これは、PostgreSQLがarchive_cleanup_commandに%rとして渡す値に対応します。

このオプションは、主にバックアップを保存しないアーカイブ専用リポジトリを想定しています。また、フルバックアップの保持条件がまだ満たされず、アーカイブの期限切れ処理が開始されていない場合に、最初のバックアップより前のWALアーカイブ容量を回収するためにも使用できます。

example: --archive-expire-before=000000010000000000000010

最古バックアップ削除オプション(--oldest)

削除可能な最も古いバックアップセットを期限切れにします。

削除可能な最も古いフルバックアップセットを期限切れにします(つまり、より新しいフルバックアップが少なくとも1つ残ります)。これは保持数を手動で1減らすことに相当しますが、自動で計算します。期限切れになるフルバックアップセットに関連するすべてのバックアップ(差分および増分)も期限切れになります。

このオプションを使用すると、同じ実行で期限切れバックアップのWALも削除できるように、アーカイブの保持設定も一時的に調整します。

--repo-retention-full-type=timeによる期間ベースのフルバックアップ保持を設定している場合、--oldestは今回の実行に限り、数に基づく期限切れ処理を使用します。

警告:

このオプションは--setと併用できません。

default: n
example: --oldest

バックアップセットオプション(--set)

期限切れにするバックアップセットです。

リポジトリに少なくとも1つのフルバックアップを残す必要があるという条件を除き、バックアップの保持規則にかかわらず、指定したバックアップセット(指定したバックアップラベルと、それに依存するバックアップがあればそのすべて)を期限切れにします。

警告:

このオプションは細心の注意を払って使用してください。指定したバックアップセットのすべてのバックアップと、バックアップの一貫性確保に不要なアーカイブを、pgBackRestリポジトリから恒久的に削除します。この処理により、PITRができなくなる可能性があります。--repo-retention-fullや--repo-retention-archiveオプションが設定されている場合は、アーカイブが意図せず期限切れになることを防ぐため、臨時の期限切れ処理を行う間、これらのオプションの値を最大値に上書きすることを推奨します。

example: --set=20150131-153358F_20150131-153401I

一般オプション

rootでの実行許可オプション(--allow-root)

rootユーザーによるコマンドの実行を許可します。

デフォルトでは、ファイルの所有権を慎重に管理するように設計されたrestoreコマンドのみをrootユーザーで実行できます。ほかのコマンドをrootで実行すると、たとえばリポジトリ内にroot所有のファイルが作成され、PostgreSQLユーザーがアクセスできなくなって、後続のコマンドが失敗するおそれがあります。

それでもコマンドをrootで実行する場合は、このオプションを有効にします。ただし、リポジトリとPostgreSQLクラスターを所有するユーザーとしてpgBackRestを実行する方がはるかに適切です。

default: n
example: --allow-root

バッファーサイズオプション(--buffer-size)

I/O処理のバッファーサイズです。

コピー、圧縮、暗号化などの処理に使用するバッファーサイズです。使用するバッファーの数はオプションによって異なり、各処理で追加のメモリを使用する場合があります。たとえば、gz圧縮では256KiBのメモリを追加で使用する場合があります。

指定できる値は、16KiB、32KiB、64KiB、128KiB、256KiB、512KiB、1MiB、2MiB、4MiB、8MiB、16MiBです。

default: 1MiB
example: --buffer-size=2MiB

SSHクライアントコマンドオプション(--cmd-ssh)

SSHクライアントのコマンドです。

別のSSHクライアントを使用したい場合や、sshコマンドが$PATHに含まれていない場合に、使用するSSHクライアントコマンドを指定します。

default: ssh
example: --cmd-ssh=/usr/bin/ssh

ネットワーク圧縮レベルオプション(--compress-level-network)

ネットワークの圧縮レベルです。

compress-type=noneで、コマンドがリポジトリと同じホストで実行されない場合のネットワーク圧縮レベルを設定します。圧縮によってネットワークトラフィックを削減します。compress-typeがnoneでない場合は、ファイルを1回だけ圧縮するように、compress-level-network設定を無視して代わりにcompress-levelを使用します。

default: 1
allowed: [-5, 12]
example: --compress-level-network=1

設定ファイルオプション(--config)

pgBackRestの設定ファイルです。

デフォルトとは異なる設定ファイルを指定するには、このオプションを使用します。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --config=/conf/pgbackrest/pgbackrest.conf

追加設定パスオプション(--config-include-path)

追加のpgBackRest設定ファイルへのパスです。

指定した場所にある拡張子.confの設定ファイルをpgBackRest設定ファイルと連結し、1つの設定ファイルとして扱います。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --config-include-path=/conf/pgbackrest/conf.d

設定パスオプション(--config-path)

pgBackRest設定ファイルの基準パスです。

この設定は、--configと--config-include-pathの各オプションがコマンドラインで明示的に設定されていない場合に、それらのデフォルトの基準パスを上書きします。

たとえば、--config-path=/conf/pgbackrestだけを渡すと、--configのデフォルトは/conf/pgbackrest/pgbackrest.confに、--config-include-pathのデフォルトは/conf/pgbackrest/conf.dに設定されます。

default: CFGOPTDEF_CONFIG_PATH
example: --config-path=/conf/pgbackrest

試行実行オプション(--dry-run)

コマンドを試行実行します。

--dry-runはコマンドライン専用のオプションです。実際には変更を加えずに、コマンドがどのような変更を行うかを確認したい場合に指定できます。

default: n
example: --dry-run

I/Oタイムアウトオプション(--io-timeout)

I/Oのタイムアウトです。

接続および読み取り/書き込み処理に使用する、秒単位のタイムアウトです。

読み取り/書き込み処理全体がこのタイムアウト内に完了する必要はありませんが、わずか1バイトでも、何らかの進展が必要です。

default: 1m
allowed: [100ms, 1h]
example: --io-timeout=120

ロックパスオプション(--lock-path)

ロックファイルを保存するパスです。

ロックパスは、pgBackRestが競合する処理の同時実行を防ぐためのロックファイルを作成する場所です。

default: /tmp/pgbackrest
example: --lock-path=/backup/db/lock

固定umaskオプション(--neutral-umask)

固定のumaskを使用します。

umaskを0000に設定し、リポジトリ内のファイルやディレクトリが適切な権限で作成されるようにします。デフォルトのディレクトリ権限は0750、ファイル権限は0640です。

代わりに実行ユーザーのumaskを使用するには、設定ファイルにneutral-umask=n、またはコマンドラインに--no-neutral-umaskを指定します。

default: y
example: --no-neutral-umask

プロセス優先度設定オプション(--priority)

プロセスの優先度を設定します。

カーネルのスケジューラーがプロセスに与える優先度(niceness)を定義します。正の値は優先度を下げ、負の値は優先度を上げます。通常、プロセスには自身の優先度を上げる権限がありません。

allowed: [-20, 19]
example: --priority=19

プロトコルタイムアウトオプション(--protocol-timeout)

プロトコルのタイムアウトです。

ローカルまたはリモートのプロセスが、プロトコル層で新しいメッセージの受信を待つタイムアウトを秒単位で設定します。これにより、プロセスがメッセージを無期限に待ち続けることを防ぎます。

注記: protocol-timeoutオプションは、db-timeoutオプションより大きくする必要があります。

default: 31m
allowed: [100ms, 7d]
example: --protocol-timeout=630

キープアライブオプション(--sck-keep-alive)

キープアライブを有効にします。

ソケット接続でキープアライブメッセージを有効にします。

default: y
example: --no-sck-keep-alive

stanzaオプション(--stanza)

stanzaを定義します。

stanzaは、PostgreSQLデータベースクラスターの場所、バックアップ方法、アーカイブオプションなどを定義する設定です。ほとんどのデータベースサーバーにはPostgreSQLデータベースクラスターが1つだけ存在し、stanzaも1つになります。一方、バックアップサーバーには、バックアップが必要なデータベースクラスターごとにstanzaがあります。

stanzaにはプライマリークラスターにちなんだ名前を付けたくなりますが、クラスターに含まれるデータベースを表す名前の方が適しています。stanza名はプライマリーとすべてのレプリカで使用するため、mainやprodなどのローカルクラスター名よりも、appやdwなど、クラスターの実際の役割を表す名前を選ぶ方が適切です。

example: --stanza=main

キープアライブ回数オプション(--tcp-keep-alive-count)

キープアライブの回数です。

接続が切れたと判断するまでに、応答がなくても許容するTCPキープアライブメッセージの数を指定します。

このオプションは、TCP_KEEPCNTソケットオプションをサポートするシステムで利用できます。

allowed: [1, 32]
example: --tcp-keep-alive-count=3

キープアライブ待機時間オプション(--tcp-keep-alive-idle)

キープアライブの待機時間です。

ネットワーク通信がない状態で、オペレーティングシステムがTCPキープアライブメッセージを送信するまでの時間を秒単位で指定します。

このオプションは、TCP_KEEPIDLEソケットオプションをサポートするシステムで利用できます。

allowed: [1, 3600]
example: --tcp-keep-alive-idle=60

キープアライブ間隔オプション(--tcp-keep-alive-interval)

キープアライブの送信間隔です。

応答のないTCPキープアライブメッセージを再送信するまでの時間を秒単位で指定します。

このオプションは、TCP_KEEPINTVLソケットオプションをサポートするシステムで利用できます。

allowed: [1, 900]
example: --tcp-keep-alive-interval=30

TLSv1.2暗号スイートオプション(--tls-cipher-12)

許可するTLSv1.2暗号スイートです。

pgBackRestクライアントとサーバー間のすべてのTLS接続は暗号化されます。デフォルトでは、オブジェクトストア(例:S3)への接続も暗号化されます。

注記: どのトランスポート接続でも、セキュリティーの最低要件はTLSv1.2です。

必要に応じて、受け入れる暗号スイートを調整できます。特別なセキュリティー要件がなければ、例に示す値が妥当な選択です。未設定(デフォルト)の場合は、使用するOpenSSLライブラリのデフォルトが適用されます。

example: --tls-cipher-12=HIGH:MEDIUM:+3DES:!aNULL

TLSv1.3暗号スイートオプション(--tls-cipher-13)

許可するTLSv1.3暗号スイートです。

pgBackRestクライアントとサーバー間のすべてのTLS接続は暗号化されます。デフォルトでは、オブジェクトストア(例:S3)への接続も暗号化されます。

注記: どのトランスポート接続でも、セキュリティーの最低要件はTLSv1.2です。

必要に応じて、受け入れる暗号スイートを調整できます。未設定(デフォルト)の場合は、使用するOpenSSLライブラリのデフォルトが適用されます。

example: --tls-cipher-13=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256

ログオプション

コンソールログレベルオプション(--log-level-console)

コンソールに出力するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: warn
example: --log-level-console=error

ファイルログレベルオプション(--log-level-file)

ファイルに記録するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: info
example: --log-level-file=debug

標準エラーログレベルオプション(--log-level-stderr)

stderrに出力するログのレベルです。

stdout(log-level-consoleで指定)の代わりにstderrへ出力するログレベルを指定します。stderrにはタイムスタンプとプロセスを出力しません。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: off
example: --log-level-stderr=error

ログパスオプション(--log-path)

ログファイルを保存するパスです。

ログパスは、pgBackRestがログファイルを保存する場所です。log-level-file=offの場合、ログパスは不要です。

default: /var/log/pgbackrest
example: --log-path=/backup/db/log

サブプロセスログオプション(--log-subprocess)

サブプロセスでのログ記録を有効にします。

このプロセスが作成するすべてのサブプロセスで、log-level-fileで指定したログレベルによるファイルへのログ記録を有効にします。

default: n
example: --log-subprocess

ログタイムスタンプオプション(--log-timestamp)

ログのタイムスタンプを有効にします。

コンソールとファイルのログでタイムスタンプを有効にします。このオプションは、ドキュメント生成などの特殊な状況では無効にします。

default: y
example: --no-log-timestamp

リポジトリオプション

リポジトリ指定オプション(--repo)

リポジトリを指定します。

コマンドの操作対象となるリポジトリを指定します。

たとえば、このオプションを使用すると、pgBackRestに選択させずに、特定のリポジトリからリストアできます。

allowed: [1, 256]
example: --repo=1

Azureリポジトリコンテナーオプション(--repo-azure-container)

Azureリポジトリのコンテナーです。

リポジトリの保存に使用するAzureコンテナーです。

repo-path=/を設定するとpgBackRestリポジトリをコンテナーのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのAzureが生成するコンテンツもコンテナーに保存できるようにすることを推奨します。

example: --repo1-azure-container=pg-backup

Azureリポジトリキー種別オプション(--repo-azure-key-type)

Azureリポジトリのキー種別です。

認可には次の種別をサポートします。

  • shared - 共有キー
  • sas - 共有アクセス署名
  • auto - AzureマネージドIDを使用して自動的に認可
default: shared
example: --repo1-azure-key-type=sas

AzureリポジトリURI形式オプション(--repo-azure-uri-style)

AzureのURI形式です。

次のURI形式をサポートします。

  • host - account.endpointホストに接続します。
  • path - endpointホストに接続し、URIの先頭にアカウントを付加します。
default: host
example: --repo1-azure-uri-style=path

リポジトリ暗号方式オプション(--repo-cipher-type)

リポジトリの暗号化に使用する暗号方式です。

次の暗号方式をサポートします。

  • none - リポジトリを暗号化しません
  • aes-256-cbc - 鍵長256ビットのAdvanced Encryption Standard

リポジトリの種類(例:S3)が暗号化をサポートしていても、暗号化は常にクライアント側で実行されます。

default: none
example: --repo1-cipher-type=aes-256-cbc

GCSリポジトリバケットオプション(--repo-gcs-bucket)

GCSリポジトリのバケットです。

リポジトリの保存に使用するGCSバケットです。

repo-path=/を設定するとpgBackRestリポジトリをバケットのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのGCSが生成するコンテンツもバケットに保存できるようにすることを推奨します。

example: --repo1-gcs-bucket=/pg-backup

GCSリポジトリエンドポイントオプション(--repo-gcs-endpoint)

GCSリポジトリのエンドポイントです。

ストレージサービスへの接続に使用するエンドポイントです。ローカルのGCSサーバーや別のエンドポイントを使用するように変更できます。

default: storage.googleapis.com
example: --repo1-gcs-endpoint=localhost

GCSリポジトリキー種別オプション(--repo-gcs-key-type)

GCSリポジトリのキー種別です。

認可には次の種別をサポートします。

  • auto - インスタンスのサービスアカウントを使用して認可します。
  • service - ローカルに保存したキーでサービスアカウントを使用します。
  • token - fakegcsなどを使用するローカルテスト用です。

repo-gcs-key-type=serviceの場合、認証トークンの更新時に認証情報を再読み込みします。

default: service
example: --repo1-gcs-key-type=auto

GCSリポジトリプロジェクトIDオプション(--repo-gcs-user-project)

GCSのプロジェクトIDです。

リクエストの課金先を決定するために使用するGCSプロジェクトIDです。

example: --repo1-gcs-user-project=my-project

リポジトリホストオプション(--repo-host)

リモート操作時のリポジトリホストです。

ローカルにマウントされたファイルシステムにバックアップおよびアーカイブする場合、この設定は不要です。

example: --repo1-host=repo1.domain.com

非推奨の名前:backup-host

リポジトリホスト認証局ファイルオプション(--repo-host-ca-file)

リポジトリホストの認証局ファイルです。

リポジトリホストへの接続に、システムのデフォルト以外のCAファイルを使用します。

example: --repo1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt

リポジトリホスト認証局パスオプション(--repo-host-ca-path)

リポジトリホストの認証局パスです。

リポジトリホストへの接続に、システムのデフォルト以外のCAパスを使用します。

example: --repo1-host-ca-path=/etc/pki/tls/certs

リポジトリホスト証明書ファイルオプション(--repo-host-cert-file)

リポジトリホストの証明書ファイルです。

クライアントの身元を証明するためにリポジトリホストに送信します。

example: --repo1-host-cert-file=/path/to/client.crt

リポジトリホストコマンドオプション(--repo-host-cmd)

リポジトリホストのpgBackRestコマンドです。

pgBackRestコマンドのパスがローカルホストとリポジトリホストで異なる場合にのみ必要です。未定義の場合、リポジトリホストのコマンドにはローカルと同じコマンドを設定します。

default: [path of executed pgbackrest binary]
example: --repo1-host-cmd=/usr/lib/backrest/bin/pgbackrest

非推奨の名前:backup-cmd

リポジトリホスト設定オプション(--repo-host-config)

pgBackRestリポジトリホストの設定ファイルです。

リポジトリホスト上の設定ファイルの場所を設定します。リポジトリホストの設定ファイルがローカルの設定ファイルと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --repo1-host-config=/conf/pgbackrest/pgbackrest.conf

非推奨の名前:backup-config

リポジトリホスト追加設定パスオプション(--repo-host-config-include-path)

pgBackRestリポジトリホストの追加設定パスです。

リポジトリホスト上の追加設定パスの場所を設定します。リポジトリホストの追加設定パスがローカルの追加設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --repo1-host-config-include-path=/conf/pgbackrest/conf.d

リポジトリホスト設定パスオプション(--repo-host-config-path)

pgBackRestリポジトリホストの設定パスです。

リポジトリホスト上の設定パスの場所を設定します。リポジトリホストの設定パスがローカルの設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH
example: --repo1-host-config-path=/conf/pgbackrest

リポジトリホストキーファイルオプション(--repo-host-key-file)

リポジトリホストのキーファイルです。

クライアント証明書が所有者によって送信されたことを証明します。

example: --repo1-host-key-file=/path/to/client.key

リポジトリホストポートオプション(--repo-host-port)

repo-hostが設定されている場合のリポジトリホストのポートです。

リポジトリホストのプロトコルにデフォルト以外のポートを指定するには、このオプションを使用します。

注記: repo-host-type=sshの場合、repo-host-portにデフォルト値はありません。この場合、ポートはcmd-sshで指定したコマンドの設定に従います。

default (depending on repo-host-type):
    tls - 8432

allowed: [0, 65535]
example: --repo1-host-port=25

非推奨の名前:backup-ssh-port

リポジトリホストプロトコル種別オプション(--repo-host-type)

リポジトリホストのプロトコル種別です。

次のプロトコル種別をサポートします。

  • ssh - Secure Shell。
  • tls - pgBackRest TLSサーバー。
default: ssh
example: --repo1-host-type=tls

リポジトリホストユーザーオプション(--repo-host-user)

repo-hostが設定されている場合のリポジトリホストのユーザーです。

リポジトリホスト上の操作に使用するユーザーを定義します。postgresユーザーではなく、pgbackrestなどの別のユーザーを使用することを推奨します。リポジトリホストでPostgreSQLを実行する場合は、postgresユーザーをpgbackrestグループに追加することで、リポジトリの内容を誤って破損させずに読み取り権限を与えられます。

default: pgbackrest
example: --repo1-host-user=repo-user

非推奨の名前:backup-user

リポジトリパスオプション(--repo-path)

バックアップとアーカイブを保存するパスです。

リポジトリは、pgBackRestがバックアップを保存し、WALセグメントをアーカイブする場所です。

必要な容量を事前に見積もるのは難しい場合があります。まずいくつかバックアップを取得し、各種類(full/incr/diff)のバックアップサイズを記録して、1日当たりに生成されるWALの量を測定するのが最善です。これにより、必要な容量のおおよその見当が付きます。ただし、データベースの変化に伴い、必要量も時間とともに変わる可能性があります。

default: /var/lib/pgbackrest
example: --repo1-path=/backup/db/backrest

アーカイブ保持オプション(--repo-retention-archive)

連続したWALを何回分のバックアップに相当する期間保持するかを指定します。

注記: バックアップの一貫性を確保するために必要なWALセグメントは、このオプションの設定にかかわらず、そのバックアップが期限切れになるまで常に保持されます。

この値が未設定で、repo-retention-full-typeがcount(デフォルト)の場合、期限切れ処理の対象アーカイブを決める値は、repo-retention-archive-typeがfull(またはdiff)なら、それに対応するrepo-retention-full(またはrepo-retention-diff)の値がデフォルトになります。これにより、すでに期限切れになったバックアップのWALだけが期限切れになります。repo-retention-full-typeがtimeの場合は、repo-retention-fullの設定を満たして保持された最も古いフルバックアップより前のアーカイブを削除することがデフォルトになります。

repo-retention-archive-typeをincrに設定した場合は、このオプションを設定する必要があります。ディスク容量に余裕がない場合は、この設定をrepo-retention-archive-typeと組み合わせ、WALセグメントを積極的に期限切れにできます。ただし、WALが期限切れになったバックアップからPITRを実行できなくなるため、推奨しません。

allowed: [1, 9999999]
example: --repo1-retention-archive=2

非推奨の名前:retention-archive

アーカイブ保持種別オプション(--repo-retention-archive-type)

WALの保持に使用するバックアップの種類です。

fullに設定すると、pgBackRestはrepo-retention-archiveで定義した数のフルバックアップに対応するアーカイブログを保持します。diff(差分)に設定すると、repo-retention-archiveで定義した数のフルバックアップと差分バックアップに対応するアーカイブログを保持します。つまり、最後に取得したバックアップがフルバックアップであれば、repo-retentionの計算では差分バックアップとして数えます。incr(増分)に設定すると、repo-retention-archiveで定義した数のフルバックアップ、差分バックアップ、増分バックアップに対応するアーカイブログを保持します。この設定はデフォルトから変更しないことを推奨します。デフォルトでは、フルバックアップの期限切れに伴ってのみWALを期限切れにします。

default: full
example: --repo1-retention-archive-type=diff

非推奨の名前:retention-archive-type

差分バックアップ保持オプション(--repo-retention-diff)

保持する差分バックアップの数です。

差分バックアップが期限切れになると、それに関連するすべての増分バックアップも期限切れになります。未定義の場合は、依存するフルバックアップが期限切れになるまで、すべての差分バックアップを保持します。

期限切れ処理では、フルバックアップも差分バックアップの数に含まれます。このため、ほとんどの場合、保持が必要な差分バックアップの数はわずかに少なくなります。

allowed: [1, 9999999]
example: --repo1-retention-diff=3

非推奨の名前:retention-diff

フルバックアップ保持オプション(--repo-retention-full)

フルバックアップの保持数/保持期間です。

フルバックアップが期限切れになると、それに関連するすべての差分バックアップと増分バックアップも期限切れになります。このオプションが未定義の場合は警告を出力します。無期限の保持が必要な場合は、最大値を設定してください。

allowed: [1, 9999999]
example: --repo1-retention-full=2

非推奨の名前:retention-full

フルバックアップ保持種別オプション(--repo-retention-full-type)

フルバックアップの保持種別です。

repo-retention-full設定が、保持する期間(日数)とフルバックアップの数のどちらを表すかを決定します。

timeに設定すると、repo-retention-full以上の日数が経過したバックアップが少なくともほかに1つ存在する場合に、repo-retention-fullより古いフルバックアップをリポジトリから削除します。たとえば、repo-retention-fullが30(日)で、25日前と35日前の2つのフルバックアップがある場合、どちらも期限切れにはなりません。35日前のバックアップを期限切れにすると25日前のバックアップだけが残り、古いバックアップを期限切れにする前に少なくとも30日前のバックアップを1つ確保するという30日間の保持ポリシーに違反するためです。repo-retention-archive-typeとrepo-retention-archiveを明示的に設定していない限り、残っている最も古いフルバックアップより前のアーカイブ済みWALは自動的に期限切れになります。

countに設定すると、repo-retention-fullを超えるフルバックアップを期限切れにします。たとえば、repo-retention-fullが4で、5つ目のフルバックアップが完了すると、数を4に保つために最も古いフルバックアップを期限切れにします。

保持の計算に含めるには、バックアップが正常に完了している必要があります。たとえば、repo-retention-full-typeがcountで、repo-retention-fullが2の場合、最も古いバックアップを期限切れにするには、完了したフルバックアップが3つ必要です。

default: count
example: --repo1-retention-full-type=time

バックアップ履歴保持オプション(--repo-retention-history)

バックアップ履歴マニフェストを保持する日数です。

バックアップが完了すると、バックアップマニフェストのコピーをbackup.historyパスに保存します。これらのファイルは、バックアップやWALの増加量を経時的に測定するなどのデータ分析に役立つため、デフォルトでは期限切れになりません。

バックアップ履歴マニフェストを保持する日数を定義するには、repo-retention-historyを設定します。期限切れになっていないバックアップは、常にバックアップ履歴に保持されます。期限切れになっていないバックアップの履歴だけを保持するには、repo-retention-history=0を指定します。

フルバックアップの履歴マニフェストが期限切れになると、そのフルバックアップに関連するすべての差分バックアップと増分バックアップの履歴マニフェストも期限切れになります。

allowed: [0, 9999999]
example: --repo1-retention-history=365

S3リポジトリバケットオプション(--repo-s3-bucket)

S3リポジトリのバケットです。

リポジトリの保存に使用するS3バケットです。

repo-path=/を設定するとpgBackRestリポジトリをバケットのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのAWSが生成するコンテンツもバケットに保存できるようにすることを推奨します。

example: --repo1-s3-bucket=pg-backup

S3リポジトリエンドポイントオプション(--repo-s3-endpoint)

S3リポジトリのエンドポイントです。

選択したリージョンに対して有効なAWSエンドポイントを使用してください。

独自の構成やテスト構成では、repo-storage-ca-file、repo-storage-ca-path、repo-storage-host、repo-storage-port、repo-storage-verify-tlsの各オプションが役立つ場合があります。

example: --repo1-s3-endpoint=s3.amazonaws.com

S3リポジトリキー種別オプション(--repo-s3-key-type)

S3リポジトリのキー種別です。

次の種別をサポートします。

  • shared - 共有キー
  • auto - 一時認証情報を自動取得
  • web-id - ウェブID認証情報を自動取得
  • pod-id - EKS Pod Identityの認証情報を自動取得
  • process - プロセスを実行して認証情報を取得
default: shared
example: --repo1-s3-key-type=auto

S3リポジトリKMSキーIDオプション(--repo-s3-kms-key-id)

S3リポジトリのKMSキーです。

指定したAWS Key Management Serviceのキーを使用して、S3のサーバー側暗号化を有効にします。

example: --repo1-s3-kms-key-id=bceb4f13-6939-4be3-910d-df54dee817b7

S3認証プロセスコマンドオプション(--repo-s3-process-cmd)

S3の認証プロセスコマンドです。

一時的なS3認証情報を取得するために実行するコマンド(および任意の引数)です。リストの最初の要素がコマンドで、残りの要素はパラメーターとして渡します。

プロセスは、AccessKeyId、SecretAccessKey、SessionToken、Expirationフィールドを含むJSONを出力する必要があります。認証情報は有効期限の前に自動更新されます。形式の詳細は、プロセス認証情報プロバイダー を参照してください。

example: --repo1-s3-process-cmd=/usr/local/bin/get-credentials --repo1-s3-process-cmd=--role --repo1-s3-process-cmd=my-role

S3リポジトリリージョンオプション(--repo-s3-region)

S3リポジトリのリージョンです。

バケットを作成したAWSリージョンです。

example: --repo1-s3-region=us-east-1

S3リポジトリのリクエスタ支払いオプション(--repo-s3-requester-pays)

S3リポジトリのリクエスタ支払いです。

S3のリクエスタ支払いを有効にします。

default: n
example: --no-repo1-s3-requester-pays

S3リポジトリロールオプション(--repo-s3-role)

S3リポジトリのロールです。

repo-s3-key-type=autoの場合に、一時認証情報の取得に使用するAWSロール名(完全なARNではありません)です。

example: --repo1-s3-role=authrole

S3リポジトリサービスオプション(--repo-s3-service)

S3の署名サービスです。

SigV4認証で使用するS3署名サービスです。標準のS3エンドポイントでは、デフォルトはs3です。S3 Outpostsエンドポイントを使用する場合は、s3-outpostsに設定します。

default: s3
example: --repo1-s3-service=s3-outposts

S3リポジトリSTSエンドポイントオプション(--repo-s3-sts-host)

S3リポジトリのSTSエンドポイントです。

repo-s3-key-type=web-idを設定した場合に、一時認証情報の取得に使用するSTSエンドポイントです。リージョン別STSを使用するには、リージョン別エンドポイント(例:sts.us-east-1.amazonaws.com)を設定します。GovCloudや中国リージョンで必要になる場合や、レイテンシーを低減するために使用する場合があります。

default: sts.amazonaws.com
example: --repo1-s3-sts-host=sts.us-east-1.amazonaws.com

S3リポジトリURI形式オプション(--repo-s3-uri-style)

S3のURI形式です。

次のURI形式をサポートします。

  • host - bucket.endpointホストに接続します。
  • path - endpointホストに接続し、URIの先頭にバケットを付加します。
default: host
example: --repo1-s3-uri-style=path

SFTPリポジトリホストオプション(--repo-sftp-host)

SFTPリポジトリのホストです。

リポジトリが存在するSFTPホストです。

example: --repo1-sftp-host=sftprepo.domain

SFTPリポジトリホストフィンガープリントオプション(--repo-sftp-host-fingerprint)

SFTPリポジトリホストのフィンガープリントです。

SFTPリポジトリホストのフィンガープリントの生成方法は、repo-sftp-host-key-hash-typeと一致させてください。awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -bでフィンガープリントを生成します。sshホストキーは通常、/etc/sshディレクトリにあります。

example: --repo1-sftp-host-fingerprint=f84e172dfead7aeeeae6c1fdfb5aa8cf

SFTPホストキー確認方式オプション(--repo-sftp-host-key-check-type)

SFTPのホストキー確認方式です。

次のSFTPホストキー確認方式をサポートします。

  • strict - pgBackRestは~/.ssh/known_hostsファイルにホストキーを自動追加せず、ホストキーが変更されたホスト、または既知のホストファイルで見つからないホストへの接続を拒否します。このオプションでは、新しいホストをすべて手動で追加する必要があります。
  • accept-new - pgBackRestは新しいホストキーをユーザーの既知のホストファイルに自動追加しますが、ホストキーが変更されたホストへの接続は許可しません。
  • fingerprint - pgBackRestは、repo-sftp-host-fingerprintオプションで指定したフィンガープリントとホストキーを照合します。
  • none - ホストキーを確認しません。
default: strict
example: --repo1-sftp-host-key-check-type=accept-new

SFTPリポジトリホストキーハッシュ種別オプション(--repo-sftp-host-key-hash-type)

SFTPリポジトリのホストキーハッシュ種別です。

SFTPリポジトリのホストキーハッシュ種別です。SSHの開始時に、リモートシステムのホストキーのダイジェスト計算に使用するハッシュ種別を指定します。新しいバージョンのlibssh2は、md5とsha1に加えてsha256もサポートします。

example: --repo1-sftp-host-key-hash-type=sha256

SFTPリポジトリホストポートオプション(--repo-sftp-host-port)

SFTPリポジトリホストのポートです。

SFTPリポジトリホストのポートです。

default: 22
allowed: [1, 65535]
example: --repo1-sftp-host-port=22

SFTPリポジトリホストユーザーオプション(--repo-sftp-host-user)

SFTPリポジトリホストのユーザーです。

リポジトリの保存に使用するホスト上のユーザーです。

example: --repo1-sftp-host-user=pg-backup

SFTP既知ホストファイルオプション(--repo-sftp-known-host)

SFTPの既知のホストファイルです。

認証時に一致するSFTPホストを探す既知のホストファイルです。未指定の場合、pgBackRestはデフォルトで~/.ssh/known_hosts、~/.ssh/known_hosts2、/etc/ssh/ssh_known_hosts、/etc/ssh/ssh_known_hosts2を検索します。1つ以上のファイルパスを設定した場合は、それらを検索して一致を確認します。ファイルパスは絶対パス、または先頭がチルダのパスである必要があります。repo-sftp-known-hostオプションを複数回指定することで、検索する既知のホストファイルを複数指定できます。既知のホストファイルによる確認を使用するには、repo-sftp-host-fingerprintを指定してはいけません。repo-sftp-host-check-typeオプションも参照してください。

example: --repo1-sftp-known-host=/home/postgres/.ssh/known_hosts

SFTPリポジトリ秘密鍵ファイルオプション(--repo-sftp-private-key-file)

SFTPの秘密鍵ファイルです。

認証に使用するSFTP秘密鍵ファイルです。

example: --repo1-sftp-private-key-file=~/.ssh/id_ed25519

SFTPリポジトリ公開鍵ファイルオプション(--repo-sftp-public-key-file)

SFTPの公開鍵ファイルです。

認証に使用するSFTP公開鍵ファイルです。OpenSSLに対してコンパイルした場合は任意ですが、別のライブラリに対してコンパイルした場合は必須です。

example: --repo1-sftp-public-key-file=~/.ssh/id_ed25519.pub

リポジトリストレージCAファイルオプション(--repo-storage-ca-file)

リポジトリストレージのCAファイルです。

ストレージ(例:S3、Azure)の証明書に、システムのデフォルト以外のCAファイルを使用します。

example: --repo1-storage-ca-file=/etc/pki/tls/certs/ca-bundle.crt

非推奨の名前:repo-azure-ca-file, repo-s3-ca-file

リポジトリストレージTLS CAパスオプション(--repo-storage-ca-path)

リポジトリストレージのCAパスです。

ストレージ(例:S3、Azure)の証明書に、システムのデフォルト以外のCAパスを使用します。

example: --repo1-storage-ca-path=/etc/pki/tls/certs

非推奨の名前:repo-azure-ca-path, repo-s3-ca-path

リポジトリストレージホストオプション(--repo-storage-host)

リポジトリストレージのホストです。

ストレージ(例:S3、Azure)のエンドポイントとは異なるホストに接続します。通常はテストに使用します。

example: --repo1-storage-host=127.0.0.1

非推奨の名前:repo-azure-host, repo-s3-host

リポジトリストレージポートオプション(--repo-storage-port)

リポジトリストレージのポートです。

ストレージ(例:S3、Azure)のエンドポイント(ホストを指定した場合はそのホスト)への接続に使用するポートです。

default: 443
allowed: [1, 65535]
example: --repo1-storage-port=9000

非推奨の名前:repo-azure-port, repo-s3-port

リポジトリストレージタグオプション(--repo-storage-tag)

リポジトリストレージのタグです。

リポジトリがオブジェクトストア(例:S3)の場合に、オブジェクトに付加するタグを指定します。このオプションを繰り返して、複数のタグを追加できます。

pgBackRestにはこれらのタグを変更する機能がないため、リポジトリ全体でタグを統一するには、stanza-createを実行する前に正しく設定してください。

example: --repo1-storage-tag=key1=value1

リポジトリストレージアップロードチャンクサイズオプション(--repo-storage-upload-chunk-size)

リポジトリストレージのアップロードチャンクサイズです。

S3などのオブジェクトストアでは、ファイルが大きすぎてメモリに格納できない場合に、チャンクに分けてアップロードできます。ファイルをメモリに格納できる場合でも、アップロードに使用するメモリ量を制限する方がメモリ効率は高くなります。

チャンクサイズを大きくすると、アップロードリクエストを最小限に抑え、チャンク分割せずに1回のリクエストでアップロードできるファイルが増えるため、一般にパフォーマンスが向上します。一方、メモリ使用量は増加します。チャンクバッファーはプロセスごとに割り当てる必要があるため、process-maxの値が大きいほど、全体のメモリ消費量も増えます。

有効なチャンクサイズは、ストレージの種類やプラットフォームによって異なります。たとえば、AWS S3の最小チャンクサイズは5MiBです。チャンクサイズの呼び方もストレージの種類によって異なるため、最小値/最大値を調べる際は、AWS S3では「part size」、GCSでは「chunk size」、Azureでは「block size」を使用してください。

ファイルが1GiB(PostgreSQLがデフォルトで作成する最大サイズ)より大きい場合、ファイルのアップロードを完了するために、許容される最大値までチャンクサイズを段階的に増やします。

default (depending on repo-type):
    azure - 4MiB
    gcs - 4MiB
    s3 - 5MiB

allow range (depending on repo-type):
    azure - [4MiB, 1GiB]
    gcs - [4MiB, 1GiB]
    s3 - [5MiB, 1GiB]

example: --repo1-storage-upload-chunk-size=16MiB

リポジトリストレージ証明書検証オプション(--repo-storage-verify-tls)

リポジトリストレージの証明書を検証します。

このオプションでは、ストレージ(例:S3、Azure)サーバーのTLS証明書の検証を有効/無効にできます。無効化は、テストや自己署名証明書を使用する場合に限ってください。

default: y
example: --no-repo1-storage-verify-tls

非推奨の名前:repo-azure-verify-tls, repo-s3-verify-ssl, repo-s3-verify-tls

リポジトリ内にシンボリックリンクを作成します。

latestとテーブルスペースのシンボリックリンクの作成を有効にします。これらのシンボリックリンクは、スナップショットを使ってリポジトリ内でその場でリカバリーする場合に最も役立ちますが、そのような利用は一般的ではありません。

大多数のユーザーには役立たないと考えられる機能ですが、従来の動作を維持するため、デフォルトで有効になっています。ただし、シンボリックリンクをサポートしないPosixに似たストレージでは、無効にすると役立つ場合があります。

default: y
example: --no-repo1-symlink

リポジトリ種別オプション(--repo-type)

リポジトリに使用するストレージの種類です。

次のリポジトリ種類をサポートします。

  • azure - Azure Blob Storage Service
  • cifs - posixと同様ですが、リンクとディレクトリのfsyncを無効にします
  • gcs - Google Cloud Storage
  • posix - Posix準拠のファイルシステム
  • s3 - AWS Simple Storage Service
  • sftp - Secure File Transfer Protocol

NFSマウントをposixリポジトリとして使用する場合、PostgreSQLのドキュメントに記載されたものと同じ規則がpgBackRestにも適用されます。データベースクラスターの作成 - ファイルシステム を参照してください。

default: posix
example: --repo1-type=cifs

4.7 - ヘルプコマンド (help)

pgBackRestのhelpコマンドのオプションおよび動作に関するリファレンス。

3つのレベルのヘルプが用意されています。コマンドが指定されない場合は、一般のヘルプが表示されます。コマンドが指定された場合(例:pgbackrest help backup)、そのコマンドの詳細な説明と有効なオプションの一覧が表示されます。コマンドに加えてオプションが指定された場合(例:pgbackrest help backup type)、そのオプションがコマンドに適用される際の詳細な説明が表示されます。

コマンドオプション

ヘルプ表示オプション (--help)

ヘルプを表示します。

ヘルプを表示します。helpコマンドが指定されていなくても同様に機能し、--versionオプションを上書きします。

default: n
example: --help

バージョン表示オプション (--version)

バージョンを表示します。

バージョン情報を表示します。versionまたはhelpコマンドが指定されていなくても同様です。

default: n
example: --version

4.8 - 情報表示コマンド(info)

pgBackRestのinfoコマンドのオプションと動作のリファレンス。

infoコマンドは、単一のstanzaまたはすべてのstanzaを対象に動作します。デフォルトはテキスト出力で、要求したstanzaのバックアップについて、人が読みやすい要約を提供します。この形式は、どのリリースでも変更される可能性があります。

機械可読の出力には--output=jsonを使用します。JSON出力はテキスト出力よりはるかに多くの情報を含み、バグが見つからない限り形式は維持されます。

実行を高速化するには、--detail-level=progressを指定して出力を進行状況の情報だけに限定します。この場合、stanzaが利用可能かどうかの確認以外は、すべての確認を省略します。

stanzaごとに独立したセクションがあり、--stanzaオプションで単一のstanzaに出力を限定できます。stanzaの「status」は、stanzaの健全性を簡潔に示します。「ok」であれば、pgBackRestは正常に動作しています。複数のリポジトリがある場合、「mixed」は、1つ以上のリポジトリでstanzaが正常でないことを示し、その場合はリポジトリごとにstanzaの状態を詳しく表示します。リポジトリで既知のエラーコードに該当しないエラーが発生した場合は、エラーコード「other」を使用し、エラーの詳細をすべて表示します。「wal archive min/max」は、現在アーカイブに保存されている最小と最大のWALを示します。複数のリポジトリがある場合、--repoオプションを設定しない限り、すべてのリポジトリを対象に報告します。アーカイブの保持ポリシーなどの理由により、途中に欠落がある可能性があります。

ホスト上で該当するコマンドが実行中の場合、「status」の横に「backup/expire running」や「restore running」というメッセージが表示されます。テキスト出力にはリポジトリごとの進行状況も表示され、JSON出力には「repo」配列が含まれます。

バックアップは古い順に表示します。最も古いバックアップは常にフルバックアップ(ラベルの末尾のFで示します)ですが、最新のバックアップはフル、差分(末尾がD)、増分(末尾がI)のいずれの場合もあります。

「timestamp start/stop」は、バックアップが実行された期間を示します。「timestamp stop」は、ポイントインタイムリカバリーの際に使用するバックアップを決定するために使用できます。ポイントインタイムリカバリーの詳細は、ポイントインタイムリカバリー セクションを参照してください。

「wal start/stop」は、リストア時にデータベースの一貫性を確保するために必要なWALの範囲を示します。backupコマンドは、完了する前に、この範囲のWALがアーカイブに存在することを確認します。

「database size」は、データベース全体の非圧縮サイズです。「database backup size」は、実際にバックアップするデータベース内のデータ量です(フルバックアップでは同じ値になります)。

「repo」は、このバックアップが存在するリポジトリを示します。「backup set size」は、このバックアップからデータベースをリストアするために必要な、このバックアップと参照先バックアップのリポジトリ内のすべてのファイルを含みます。一方、「backup size」は、このバックアップのファイルだけを含みます(フルバックアップでは、これらも同じ値になります)。pgBackRestで圧縮が有効な場合、リポジトリのサイズには圧縮後のファイルサイズが反映されます。

「backup reference total」は、このバックアップのリストアに必要な追加のバックアップの一覧を要約します。参照先の完全な一覧を表示するには、--setオプションを使用します。

コマンドオプション

詳細度オプション(--detail-level)

出力の詳細度です。

次のレベルをサポートします。

  • progress - 現在のバックアップ/期限切れ処理の進行状況のみを出力します。このレベルは--setオプションと併用できません。
  • full - 完全な情報を出力します。
default: full
example: --detail-level=progress

出力オプション(--output)

出力形式です。

次の出力形式をサポートします。

  • text - 人が読みやすいバックアップ情報の要約。
  • json - JSON形式の、網羅的で機械可読なバックアップ情報。
default: text
example: --output=json

バックアップセットオプション(--set)

詳細を表示するバックアップセットです。

詳細には、このバックアップのリストアに必要な追加のバックアップの完全な一覧、バックアップセット内のデータベースの一覧(OID付き、テンプレートデータベースを除く)、テーブルスペース(OID付き)とデフォルトのリストア先、シンボリックリンクと--link-all指定時のリストア先が含まれます。

example: --set=20150131-153358F_20150131-153401I

種類オプション(--type)

バックアップの種類で絞り込みます。

次のバックアップ種類のいずれかを使用して、出力を絞り込みます。

  • full - フルバックアップのみを出力します。
  • diff - 差分バックアップのみを出力します。
  • incr - 増分バックアップのみを出力します。
example: --type=full

一般オプション

rootでの実行許可オプション(--allow-root)

rootユーザーによるコマンドの実行を許可します。

デフォルトでは、ファイルの所有権を慎重に管理するように設計されたrestoreコマンドのみをrootユーザーで実行できます。ほかのコマンドをrootで実行すると、たとえばリポジトリ内にroot所有のファイルが作成され、PostgreSQLユーザーがアクセスできなくなって、後続のコマンドが失敗するおそれがあります。

それでもコマンドをrootで実行する場合は、このオプションを有効にします。ただし、リポジトリとPostgreSQLクラスターを所有するユーザーとしてpgBackRestを実行する方がはるかに適切です。

default: n
example: --allow-root

バッファーサイズオプション(--buffer-size)

I/O処理のバッファーサイズです。

コピー、圧縮、暗号化などの処理に使用するバッファーサイズです。使用するバッファーの数はオプションによって異なり、各処理で追加のメモリを使用する場合があります。たとえば、gz圧縮では256KiBのメモリを追加で使用する場合があります。

指定できる値は、16KiB、32KiB、64KiB、128KiB、256KiB、512KiB、1MiB、2MiB、4MiB、8MiB、16MiBです。

default: 1MiB
example: --buffer-size=2MiB

SSHクライアントコマンドオプション(--cmd-ssh)

SSHクライアントのコマンドです。

別のSSHクライアントを使用したい場合や、sshコマンドが$PATHに含まれていない場合に、使用するSSHクライアントコマンドを指定します。

default: ssh
example: --cmd-ssh=/usr/bin/ssh

ネットワーク圧縮レベルオプション(--compress-level-network)

ネットワークの圧縮レベルです。

compress-type=noneで、コマンドがリポジトリと同じホストで実行されない場合のネットワーク圧縮レベルを設定します。圧縮によってネットワークトラフィックを削減します。compress-typeがnoneでない場合は、ファイルを1回だけ圧縮するように、compress-level-network設定を無視して代わりにcompress-levelを使用します。

default: 1
allowed: [-5, 12]
example: --compress-level-network=1

設定ファイルオプション(--config)

pgBackRestの設定ファイルです。

デフォルトとは異なる設定ファイルを指定するには、このオプションを使用します。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --config=/conf/pgbackrest/pgbackrest.conf

追加設定パスオプション(--config-include-path)

追加のpgBackRest設定ファイルへのパスです。

指定した場所にある拡張子.confの設定ファイルをpgBackRest設定ファイルと連結し、1つの設定ファイルとして扱います。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --config-include-path=/conf/pgbackrest/conf.d

設定パスオプション(--config-path)

pgBackRest設定ファイルの基準パスです。

この設定は、--configと--config-include-pathの各オプションがコマンドラインで明示的に設定されていない場合に、それらのデフォルトの基準パスを上書きします。

たとえば、--config-path=/conf/pgbackrestだけを渡すと、--configのデフォルトは/conf/pgbackrest/pgbackrest.confに、--config-include-pathのデフォルトは/conf/pgbackrest/conf.dに設定されます。

default: CFGOPTDEF_CONFIG_PATH
example: --config-path=/conf/pgbackrest

I/Oタイムアウトオプション(--io-timeout)

I/Oのタイムアウトです。

接続および読み取り/書き込み処理に使用する、秒単位のタイムアウトです。

読み取り/書き込み処理全体がこのタイムアウト内に完了する必要はありませんが、わずか1バイトでも、何らかの進展が必要です。

default: 1m
allowed: [100ms, 1h]
example: --io-timeout=120

ロックパスオプション(--lock-path)

ロックファイルを保存するパスです。

ロックパスは、pgBackRestが競合する処理の同時実行を防ぐためのロックファイルを作成する場所です。

default: /tmp/pgbackrest
example: --lock-path=/backup/db/lock

プロセス優先度設定オプション(--priority)

プロセスの優先度を設定します。

カーネルのスケジューラーがプロセスに与える優先度(niceness)を定義します。正の値は優先度を下げ、負の値は優先度を上げます。通常、プロセスには自身の優先度を上げる権限がありません。

allowed: [-20, 19]
example: --priority=19

プロトコルタイムアウトオプション(--protocol-timeout)

プロトコルのタイムアウトです。

ローカルまたはリモートのプロセスが、プロトコル層で新しいメッセージの受信を待つタイムアウトを秒単位で設定します。これにより、プロセスがメッセージを無期限に待ち続けることを防ぎます。

注記: protocol-timeoutオプションは、db-timeoutオプションより大きくする必要があります。

default: 31m
allowed: [100ms, 7d]
example: --protocol-timeout=630

キープアライブオプション(--sck-keep-alive)

キープアライブを有効にします。

ソケット接続でキープアライブメッセージを有効にします。

default: y
example: --no-sck-keep-alive

stanzaオプション(--stanza)

stanzaを定義します。

stanzaは、PostgreSQLデータベースクラスターの場所、バックアップ方法、アーカイブオプションなどを定義する設定です。ほとんどのデータベースサーバーにはPostgreSQLデータベースクラスターが1つだけ存在し、stanzaも1つになります。一方、バックアップサーバーには、バックアップが必要なデータベースクラスターごとにstanzaがあります。

stanzaにはプライマリークラスターにちなんだ名前を付けたくなりますが、クラスターに含まれるデータベースを表す名前の方が適しています。stanza名はプライマリーとすべてのレプリカで使用するため、mainやprodなどのローカルクラスター名よりも、appやdwなど、クラスターの実際の役割を表す名前を選ぶ方が適切です。

example: --stanza=main

キープアライブ回数オプション(--tcp-keep-alive-count)

キープアライブの回数です。

接続が切れたと判断するまでに、応答がなくても許容するTCPキープアライブメッセージの数を指定します。

このオプションは、TCP_KEEPCNTソケットオプションをサポートするシステムで利用できます。

allowed: [1, 32]
example: --tcp-keep-alive-count=3

キープアライブ待機時間オプション(--tcp-keep-alive-idle)

キープアライブの待機時間です。

ネットワーク通信がない状態で、オペレーティングシステムがTCPキープアライブメッセージを送信するまでの時間を秒単位で指定します。

このオプションは、TCP_KEEPIDLEソケットオプションをサポートするシステムで利用できます。

allowed: [1, 3600]
example: --tcp-keep-alive-idle=60

キープアライブ間隔オプション(--tcp-keep-alive-interval)

キープアライブの送信間隔です。

応答のないTCPキープアライブメッセージを再送信するまでの時間を秒単位で指定します。

このオプションは、TCP_KEEPINTVLソケットオプションをサポートするシステムで利用できます。

allowed: [1, 900]
example: --tcp-keep-alive-interval=30

TLSv1.2暗号スイートオプション(--tls-cipher-12)

許可するTLSv1.2暗号スイートです。

pgBackRestクライアントとサーバー間のすべてのTLS接続は暗号化されます。デフォルトでは、オブジェクトストア(例:S3)への接続も暗号化されます。

注記: どのトランスポート接続でも、セキュリティーの最低要件はTLSv1.2です。

必要に応じて、受け入れる暗号スイートを調整できます。特別なセキュリティー要件がなければ、例に示す値が妥当な選択です。未設定(デフォルト)の場合は、使用するOpenSSLライブラリのデフォルトが適用されます。

example: --tls-cipher-12=HIGH:MEDIUM:+3DES:!aNULL

TLSv1.3暗号スイートオプション(--tls-cipher-13)

許可するTLSv1.3暗号スイートです。

pgBackRestクライアントとサーバー間のすべてのTLS接続は暗号化されます。デフォルトでは、オブジェクトストア(例:S3)への接続も暗号化されます。

注記: どのトランスポート接続でも、セキュリティーの最低要件はTLSv1.2です。

必要に応じて、受け入れる暗号スイートを調整できます。未設定(デフォルト)の場合は、使用するOpenSSLライブラリのデフォルトが適用されます。

example: --tls-cipher-13=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256

ログオプション

コンソールログレベルオプション(--log-level-console)

コンソールに出力するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: warn
example: --log-level-console=error

ファイルログレベルオプション(--log-level-file)

ファイルに記録するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: info
example: --log-level-file=debug

標準エラーログレベルオプション(--log-level-stderr)

stderrに出力するログのレベルです。

stdout(log-level-consoleで指定)の代わりにstderrへ出力するログレベルを指定します。stderrにはタイムスタンプとプロセスを出力しません。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: off
example: --log-level-stderr=error

ログパスオプション(--log-path)

ログファイルを保存するパスです。

ログパスは、pgBackRestがログファイルを保存する場所です。log-level-file=offの場合、ログパスは不要です。

default: /var/log/pgbackrest
example: --log-path=/backup/db/log

サブプロセスログオプション(--log-subprocess)

サブプロセスでのログ記録を有効にします。

このプロセスが作成するすべてのサブプロセスで、log-level-fileで指定したログレベルによるファイルへのログ記録を有効にします。

default: n
example: --log-subprocess

ログタイムスタンプオプション(--log-timestamp)

ログのタイムスタンプを有効にします。

コンソールとファイルのログでタイムスタンプを有効にします。このオプションは、ドキュメント生成などの特殊な状況では無効にします。

default: y
example: --no-log-timestamp

リポジトリオプション

リポジトリ指定オプション(--repo)

リポジトリを指定します。

コマンドの操作対象となるリポジトリを指定します。

たとえば、このオプションを使用すると、pgBackRestに選択させずに、特定のリポジトリからリストアできます。

allowed: [1, 256]
example: --repo=1

Azureリポジトリコンテナーオプション(--repo-azure-container)

Azureリポジトリのコンテナーです。

リポジトリの保存に使用するAzureコンテナーです。

repo-path=/を設定するとpgBackRestリポジトリをコンテナーのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのAzureが生成するコンテンツもコンテナーに保存できるようにすることを推奨します。

example: --repo1-azure-container=pg-backup

Azureリポジトリキー種別オプション(--repo-azure-key-type)

Azureリポジトリのキー種別です。

認可には次の種別をサポートします。

  • shared - 共有キー
  • sas - 共有アクセス署名
  • auto - AzureマネージドIDを使用して自動的に認可
default: shared
example: --repo1-azure-key-type=sas

AzureリポジトリURI形式オプション(--repo-azure-uri-style)

AzureのURI形式です。

次のURI形式をサポートします。

  • host - account.endpointホストに接続します。
  • path - endpointホストに接続し、URIの先頭にアカウントを付加します。
default: host
example: --repo1-azure-uri-style=path

リポジトリ暗号方式オプション(--repo-cipher-type)

リポジトリの暗号化に使用する暗号方式です。

次の暗号方式をサポートします。

  • none - リポジトリを暗号化しません
  • aes-256-cbc - 鍵長256ビットのAdvanced Encryption Standard

リポジトリの種類(例:S3)が暗号化をサポートしていても、暗号化は常にクライアント側で実行されます。

default: none
example: --repo1-cipher-type=aes-256-cbc

GCSリポジトリバケットオプション(--repo-gcs-bucket)

GCSリポジトリのバケットです。

リポジトリの保存に使用するGCSバケットです。

repo-path=/を設定するとpgBackRestリポジトリをバケットのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのGCSが生成するコンテンツもバケットに保存できるようにすることを推奨します。

example: --repo1-gcs-bucket=/pg-backup

GCSリポジトリエンドポイントオプション(--repo-gcs-endpoint)

GCSリポジトリのエンドポイントです。

ストレージサービスへの接続に使用するエンドポイントです。ローカルのGCSサーバーや別のエンドポイントを使用するように変更できます。

default: storage.googleapis.com
example: --repo1-gcs-endpoint=localhost

GCSリポジトリキー種別オプション(--repo-gcs-key-type)

GCSリポジトリのキー種別です。

認可には次の種別をサポートします。

  • auto - インスタンスのサービスアカウントを使用して認可します。
  • service - ローカルに保存したキーでサービスアカウントを使用します。
  • token - fakegcsなどを使用するローカルテスト用です。

repo-gcs-key-type=serviceの場合、認証トークンの更新時に認証情報を再読み込みします。

default: service
example: --repo1-gcs-key-type=auto

GCSリポジトリプロジェクトIDオプション(--repo-gcs-user-project)

GCSのプロジェクトIDです。

リクエストの課金先を決定するために使用するGCSプロジェクトIDです。

example: --repo1-gcs-user-project=my-project

リポジトリホストオプション(--repo-host)

リモート操作時のリポジトリホストです。

ローカルにマウントされたファイルシステムにバックアップおよびアーカイブする場合、この設定は不要です。

example: --repo1-host=repo1.domain.com

非推奨の名前:backup-host

リポジトリホスト認証局ファイルオプション(--repo-host-ca-file)

リポジトリホストの認証局ファイルです。

リポジトリホストへの接続に、システムのデフォルト以外のCAファイルを使用します。

example: --repo1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt

リポジトリホスト認証局パスオプション(--repo-host-ca-path)

リポジトリホストの認証局パスです。

リポジトリホストへの接続に、システムのデフォルト以外のCAパスを使用します。

example: --repo1-host-ca-path=/etc/pki/tls/certs

リポジトリホスト証明書ファイルオプション(--repo-host-cert-file)

リポジトリホストの証明書ファイルです。

クライアントの身元を証明するためにリポジトリホストに送信します。

example: --repo1-host-cert-file=/path/to/client.crt

リポジトリホストコマンドオプション(--repo-host-cmd)

リポジトリホストのpgBackRestコマンドです。

pgBackRestコマンドのパスがローカルホストとリポジトリホストで異なる場合にのみ必要です。未定義の場合、リポジトリホストのコマンドにはローカルと同じコマンドを設定します。

default: [path of executed pgbackrest binary]
example: --repo1-host-cmd=/usr/lib/backrest/bin/pgbackrest

非推奨の名前:backup-cmd

リポジトリホスト設定オプション(--repo-host-config)

pgBackRestリポジトリホストの設定ファイルです。

リポジトリホスト上の設定ファイルの場所を設定します。リポジトリホストの設定ファイルがローカルの設定ファイルと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --repo1-host-config=/conf/pgbackrest/pgbackrest.conf

非推奨の名前:backup-config

リポジトリホスト追加設定パスオプション(--repo-host-config-include-path)

pgBackRestリポジトリホストの追加設定パスです。

リポジトリホスト上の追加設定パスの場所を設定します。リポジトリホストの追加設定パスがローカルの追加設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --repo1-host-config-include-path=/conf/pgbackrest/conf.d

リポジトリホスト設定パスオプション(--repo-host-config-path)

pgBackRestリポジトリホストの設定パスです。

リポジトリホスト上の設定パスの場所を設定します。リポジトリホストの設定パスがローカルの設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH
example: --repo1-host-config-path=/conf/pgbackrest

リポジトリホストキーファイルオプション(--repo-host-key-file)

リポジトリホストのキーファイルです。

クライアント証明書が所有者によって送信されたことを証明します。

example: --repo1-host-key-file=/path/to/client.key

リポジトリホストポートオプション(--repo-host-port)

repo-hostが設定されている場合のリポジトリホストのポートです。

リポジトリホストのプロトコルにデフォルト以外のポートを指定するには、このオプションを使用します。

注記: repo-host-type=sshの場合、repo-host-portにデフォルト値はありません。この場合、ポートはcmd-sshで指定したコマンドの設定に従います。

default (depending on repo-host-type):
    tls - 8432

allowed: [0, 65535]
example: --repo1-host-port=25

非推奨の名前:backup-ssh-port

リポジトリホストプロトコル種別オプション(--repo-host-type)

リポジトリホストのプロトコル種別です。

次のプロトコル種別をサポートします。

  • ssh - Secure Shell。
  • tls - pgBackRest TLSサーバー。
default: ssh
example: --repo1-host-type=tls

リポジトリホストユーザーオプション(--repo-host-user)

repo-hostが設定されている場合のリポジトリホストのユーザーです。

リポジトリホスト上の操作に使用するユーザーを定義します。postgresユーザーではなく、pgbackrestなどの別のユーザーを使用することを推奨します。リポジトリホストでPostgreSQLを実行する場合は、postgresユーザーをpgbackrestグループに追加することで、リポジトリの内容を誤って破損させずに読み取り権限を与えられます。

default: pgbackrest
example: --repo1-host-user=repo-user

非推奨の名前:backup-user

リポジトリパスオプション(--repo-path)

バックアップとアーカイブを保存するパスです。

リポジトリは、pgBackRestがバックアップを保存し、WALセグメントをアーカイブする場所です。

必要な容量を事前に見積もるのは難しい場合があります。まずいくつかバックアップを取得し、各種類(full/incr/diff)のバックアップサイズを記録して、1日当たりに生成されるWALの量を測定するのが最善です。これにより、必要な容量のおおよその見当が付きます。ただし、データベースの変化に伴い、必要量も時間とともに変わる可能性があります。

default: /var/lib/pgbackrest
example: --repo1-path=/backup/db/backrest

S3リポジトリバケットオプション(--repo-s3-bucket)

S3リポジトリのバケットです。

リポジトリの保存に使用するS3バケットです。

repo-path=/を設定するとpgBackRestリポジトリをバケットのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのAWSが生成するコンテンツもバケットに保存できるようにすることを推奨します。

example: --repo1-s3-bucket=pg-backup

S3リポジトリエンドポイントオプション(--repo-s3-endpoint)

S3リポジトリのエンドポイントです。

選択したリージョンに対して有効なAWSエンドポイントを使用してください。

独自の構成やテスト構成では、repo-storage-ca-file、repo-storage-ca-path、repo-storage-host、repo-storage-port、repo-storage-verify-tlsの各オプションが役立つ場合があります。

example: --repo1-s3-endpoint=s3.amazonaws.com

S3リポジトリキー種別オプション(--repo-s3-key-type)

S3リポジトリのキー種別です。

次の種別をサポートします。

  • shared - 共有キー
  • auto - 一時認証情報を自動取得
  • web-id - ウェブID認証情報を自動取得
  • pod-id - EKS Pod Identityの認証情報を自動取得
  • process - プロセスを実行して認証情報を取得
default: shared
example: --repo1-s3-key-type=auto

S3リポジトリKMSキーIDオプション(--repo-s3-kms-key-id)

S3リポジトリのKMSキーです。

指定したAWS Key Management Serviceのキーを使用して、S3のサーバー側暗号化を有効にします。

example: --repo1-s3-kms-key-id=bceb4f13-6939-4be3-910d-df54dee817b7

S3認証プロセスコマンドオプション(--repo-s3-process-cmd)

S3の認証プロセスコマンドです。

一時的なS3認証情報を取得するために実行するコマンド(および任意の引数)です。リストの最初の要素がコマンドで、残りの要素はパラメーターとして渡します。

プロセスは、AccessKeyId、SecretAccessKey、SessionToken、Expirationフィールドを含むJSONを出力する必要があります。認証情報は有効期限の前に自動更新されます。形式の詳細は、プロセス認証情報プロバイダー を参照してください。

example: --repo1-s3-process-cmd=/usr/local/bin/get-credentials --repo1-s3-process-cmd=--role --repo1-s3-process-cmd=my-role

S3リポジトリリージョンオプション(--repo-s3-region)

S3リポジトリのリージョンです。

バケットを作成したAWSリージョンです。

example: --repo1-s3-region=us-east-1

S3リポジトリのリクエスタ支払いオプション(--repo-s3-requester-pays)

S3リポジトリのリクエスタ支払いです。

S3のリクエスタ支払いを有効にします。

default: n
example: --no-repo1-s3-requester-pays

S3リポジトリロールオプション(--repo-s3-role)

S3リポジトリのロールです。

repo-s3-key-type=autoの場合に、一時認証情報の取得に使用するAWSロール名(完全なARNではありません)です。

example: --repo1-s3-role=authrole

S3リポジトリサービスオプション(--repo-s3-service)

S3の署名サービスです。

SigV4認証で使用するS3署名サービスです。標準のS3エンドポイントでは、デフォルトはs3です。S3 Outpostsエンドポイントを使用する場合は、s3-outpostsに設定します。

default: s3
example: --repo1-s3-service=s3-outposts

S3リポジトリSTSエンドポイントオプション(--repo-s3-sts-host)

S3リポジトリのSTSエンドポイントです。

repo-s3-key-type=web-idを設定した場合に、一時認証情報の取得に使用するSTSエンドポイントです。リージョン別STSを使用するには、リージョン別エンドポイント(例:sts.us-east-1.amazonaws.com)を設定します。GovCloudや中国リージョンで必要になる場合や、レイテンシーを低減するために使用する場合があります。

default: sts.amazonaws.com
example: --repo1-s3-sts-host=sts.us-east-1.amazonaws.com

S3リポジトリURI形式オプション(--repo-s3-uri-style)

S3のURI形式です。

次のURI形式をサポートします。

  • host - bucket.endpointホストに接続します。
  • path - endpointホストに接続し、URIの先頭にバケットを付加します。
default: host
example: --repo1-s3-uri-style=path

SFTPリポジトリホストオプション(--repo-sftp-host)

SFTPリポジトリのホストです。

リポジトリが存在するSFTPホストです。

example: --repo1-sftp-host=sftprepo.domain

SFTPリポジトリホストフィンガープリントオプション(--repo-sftp-host-fingerprint)

SFTPリポジトリホストのフィンガープリントです。

SFTPリポジトリホストのフィンガープリントの生成方法は、repo-sftp-host-key-hash-typeと一致させてください。awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -bでフィンガープリントを生成します。sshホストキーは通常、/etc/sshディレクトリにあります。

example: --repo1-sftp-host-fingerprint=f84e172dfead7aeeeae6c1fdfb5aa8cf

SFTPホストキー確認方式オプション(--repo-sftp-host-key-check-type)

SFTPのホストキー確認方式です。

次のSFTPホストキー確認方式をサポートします。

  • strict - pgBackRestは~/.ssh/known_hostsファイルにホストキーを自動追加せず、ホストキーが変更されたホスト、または既知のホストファイルで見つからないホストへの接続を拒否します。このオプションでは、新しいホストをすべて手動で追加する必要があります。
  • accept-new - pgBackRestは新しいホストキーをユーザーの既知のホストファイルに自動追加しますが、ホストキーが変更されたホストへの接続は許可しません。
  • fingerprint - pgBackRestは、repo-sftp-host-fingerprintオプションで指定したフィンガープリントとホストキーを照合します。
  • none - ホストキーを確認しません。
default: strict
example: --repo1-sftp-host-key-check-type=accept-new

SFTPリポジトリホストキーハッシュ種別オプション(--repo-sftp-host-key-hash-type)

SFTPリポジトリのホストキーハッシュ種別です。

SFTPリポジトリのホストキーハッシュ種別です。SSHの開始時に、リモートシステムのホストキーのダイジェスト計算に使用するハッシュ種別を指定します。新しいバージョンのlibssh2は、md5とsha1に加えてsha256もサポートします。

example: --repo1-sftp-host-key-hash-type=sha256

SFTPリポジトリホストポートオプション(--repo-sftp-host-port)

SFTPリポジトリホストのポートです。

SFTPリポジトリホストのポートです。

default: 22
allowed: [1, 65535]
example: --repo1-sftp-host-port=22

SFTPリポジトリホストユーザーオプション(--repo-sftp-host-user)

SFTPリポジトリホストのユーザーです。

リポジトリの保存に使用するホスト上のユーザーです。

example: --repo1-sftp-host-user=pg-backup

SFTP既知ホストファイルオプション(--repo-sftp-known-host)

SFTPの既知のホストファイルです。

認証時に一致するSFTPホストを探す既知のホストファイルです。未指定の場合、pgBackRestはデフォルトで~/.ssh/known_hosts、~/.ssh/known_hosts2、/etc/ssh/ssh_known_hosts、/etc/ssh/ssh_known_hosts2を検索します。1つ以上のファイルパスを設定した場合は、それらを検索して一致を確認します。ファイルパスは絶対パス、または先頭がチルダのパスである必要があります。repo-sftp-known-hostオプションを複数回指定することで、検索する既知のホストファイルを複数指定できます。既知のホストファイルによる確認を使用するには、repo-sftp-host-fingerprintを指定してはいけません。repo-sftp-host-check-typeオプションも参照してください。

example: --repo1-sftp-known-host=/home/postgres/.ssh/known_hosts

SFTPリポジトリ秘密鍵ファイルオプション(--repo-sftp-private-key-file)

SFTPの秘密鍵ファイルです。

認証に使用するSFTP秘密鍵ファイルです。

example: --repo1-sftp-private-key-file=~/.ssh/id_ed25519

SFTPリポジトリ公開鍵ファイルオプション(--repo-sftp-public-key-file)

SFTPの公開鍵ファイルです。

認証に使用するSFTP公開鍵ファイルです。OpenSSLに対してコンパイルした場合は任意ですが、別のライブラリに対してコンパイルした場合は必須です。

example: --repo1-sftp-public-key-file=~/.ssh/id_ed25519.pub

リポジトリストレージCAファイルオプション(--repo-storage-ca-file)

リポジトリストレージのCAファイルです。

ストレージ(例:S3、Azure)の証明書に、システムのデフォルト以外のCAファイルを使用します。

example: --repo1-storage-ca-file=/etc/pki/tls/certs/ca-bundle.crt

非推奨の名前:repo-azure-ca-file, repo-s3-ca-file

リポジトリストレージTLS CAパスオプション(--repo-storage-ca-path)

リポジトリストレージのCAパスです。

ストレージ(例:S3、Azure)の証明書に、システムのデフォルト以外のCAパスを使用します。

example: --repo1-storage-ca-path=/etc/pki/tls/certs

非推奨の名前:repo-azure-ca-path, repo-s3-ca-path

リポジトリストレージホストオプション(--repo-storage-host)

リポジトリストレージのホストです。

ストレージ(例:S3、Azure)のエンドポイントとは異なるホストに接続します。通常はテストに使用します。

example: --repo1-storage-host=127.0.0.1

非推奨の名前:repo-azure-host, repo-s3-host

リポジトリストレージポートオプション(--repo-storage-port)

リポジトリストレージのポートです。

ストレージ(例:S3、Azure)のエンドポイント(ホストを指定した場合はそのホスト)への接続に使用するポートです。

default: 443
allowed: [1, 65535]
example: --repo1-storage-port=9000

非推奨の名前:repo-azure-port, repo-s3-port

リポジトリストレージタグオプション(--repo-storage-tag)

リポジトリストレージのタグです。

リポジトリがオブジェクトストア(例:S3)の場合に、オブジェクトに付加するタグを指定します。このオプションを繰り返して、複数のタグを追加できます。

pgBackRestにはこれらのタグを変更する機能がないため、リポジトリ全体でタグを統一するには、stanza-createを実行する前に正しく設定してください。

example: --repo1-storage-tag=key1=value1

リポジトリストレージアップロードチャンクサイズオプション(--repo-storage-upload-chunk-size)

リポジトリストレージのアップロードチャンクサイズです。

S3などのオブジェクトストアでは、ファイルが大きすぎてメモリに格納できない場合に、チャンクに分けてアップロードできます。ファイルをメモリに格納できる場合でも、アップロードに使用するメモリ量を制限する方がメモリ効率は高くなります。

チャンクサイズを大きくすると、アップロードリクエストを最小限に抑え、チャンク分割せずに1回のリクエストでアップロードできるファイルが増えるため、一般にパフォーマンスが向上します。一方、メモリ使用量は増加します。チャンクバッファーはプロセスごとに割り当てる必要があるため、process-maxの値が大きいほど、全体のメモリ消費量も増えます。

有効なチャンクサイズは、ストレージの種類やプラットフォームによって異なります。たとえば、AWS S3の最小チャンクサイズは5MiBです。チャンクサイズの呼び方もストレージの種類によって異なるため、最小値/最大値を調べる際は、AWS S3では「part size」、GCSでは「chunk size」、Azureでは「block size」を使用してください。

ファイルが1GiB(PostgreSQLがデフォルトで作成する最大サイズ)より大きい場合、ファイルのアップロードを完了するために、許容される最大値までチャンクサイズを段階的に増やします。

default (depending on repo-type):
    azure - 4MiB
    gcs - 4MiB
    s3 - 5MiB

allow range (depending on repo-type):
    azure - [4MiB, 1GiB]
    gcs - [4MiB, 1GiB]
    s3 - [5MiB, 1GiB]

example: --repo1-storage-upload-chunk-size=16MiB

リポジトリストレージ証明書検証オプション(--repo-storage-verify-tls)

リポジトリストレージの証明書を検証します。

このオプションでは、ストレージ(例:S3、Azure)サーバーのTLS証明書の検証を有効/無効にできます。無効化は、テストや自己署名証明書を使用する場合に限ってください。

default: y
example: --no-repo1-storage-verify-tls

非推奨の名前:repo-azure-verify-tls, repo-s3-verify-ssl, repo-s3-verify-tls

リポジトリ対象時刻オプション(--repo-target-time)

リポジトリの対象時刻です。

対象時刻は、コマンドがバージョン管理されたストレージ上のリポジトリを読み取る際の時点を定義します。これにより、ある時点の状態のリポジトリを読み取り、ユーザーの誤操作やマルウェアによって削除または破損したデータをリカバリーできます。

S3、GCS、Azureはストレージのバージョン管理をサポートしますが、通常はデフォルトで有効になっていません。バージョン管理の有効化に加え、S3ではオブジェクトロック、GCSやAzureでは論理削除を有効にすると役立つ場合があります。

repo-target-timeオプションを指定する場合は、repoオプションも指定する必要があります。すべてのリポジトリ種類がバージョン管理をサポートするとは限らず、一般にリカバリーでは単一のリポジトリを対象とするのが妥当です。

ストレージのタイムスタンプとの比較は、指定したタイムスタンプ以下(<=)で行い、タイムスタンプにミリ秒を指定しても切り捨てられます。

example: --repo-target-time=2024-08-08 12:12:12+00

リポジトリ種別オプション(--repo-type)

リポジトリに使用するストレージの種類です。

次のリポジトリ種類をサポートします。

  • azure - Azure Blob Storage Service
  • cifs - posixと同様ですが、リンクとディレクトリのfsyncを無効にします
  • gcs - Google Cloud Storage
  • posix - Posix準拠のファイルシステム
  • s3 - AWS Simple Storage Service
  • sftp - Secure File Transfer Protocol

NFSマウントをposixリポジトリとして使用する場合、PostgreSQLのドキュメントに記載されたものと同じ規則がpgBackRestにも適用されます。データベースクラスターの作成 - ファイルシステム を参照してください。

default: posix
example: --repo1-type=cifs

4.9 - リポジトリ取得コマンド(repo-get)

pgBackRestのrepo-getコマンドのオプションと動作のリファレンス。

unixのcatコマンドに似ていますが、サポートされているすべてのリポジトリ種類で動作します。このコマンドには完全修飾ファイル名が必要で、主に管理、調査、テストに使用します。通常のpgBackRest構成で必須のものではありません。

リポジトリが暗号化されている場合、repo-getはファイルを自動的に復号します。ファイルは自動的には展開しませんが、出力をgzip -dなどの適切な展開コマンドにパイプで渡せます。

複数のリポジトリが設定されている場合、--repoオプションを指定しない限り、コマンドはデフォルトで最も優先度の高いリポジトリ(例:repo1)を使用します。

コマンドオプション

欠落無視オプション(--ignore-missing)

ソースファイルの欠落を無視します。

ソースファイルが存在しない場合、エラーを送出せずに終了コード1で終了します。

default: n
example: --ignore-missing

一般オプション

rootでの実行許可オプション(--allow-root)

rootユーザーによるコマンドの実行を許可します。

デフォルトでは、ファイルの所有権を慎重に管理するように設計されたrestoreコマンドのみをrootユーザーで実行できます。ほかのコマンドをrootで実行すると、たとえばリポジトリ内にroot所有のファイルが作成され、PostgreSQLユーザーがアクセスできなくなって、後続のコマンドが失敗するおそれがあります。

それでもコマンドをrootで実行する場合は、このオプションを有効にします。ただし、リポジトリとPostgreSQLクラスターを所有するユーザーとしてpgBackRestを実行する方がはるかに適切です。

default: n
example: --allow-root

バッファーサイズオプション(--buffer-size)

I/O処理のバッファーサイズです。

コピー、圧縮、暗号化などの処理に使用するバッファーサイズです。使用するバッファーの数はオプションによって異なり、各処理で追加のメモリを使用する場合があります。たとえば、gz圧縮では256KiBのメモリを追加で使用する場合があります。

指定できる値は、16KiB、32KiB、64KiB、128KiB、256KiB、512KiB、1MiB、2MiB、4MiB、8MiB、16MiBです。

default: 1MiB
example: --buffer-size=2MiB

SSHクライアントコマンドオプション(--cmd-ssh)

SSHクライアントのコマンドです。

別のSSHクライアントを使用したい場合や、sshコマンドが$PATHに含まれていない場合に、使用するSSHクライアントコマンドを指定します。

default: ssh
example: --cmd-ssh=/usr/bin/ssh

ネットワーク圧縮レベルオプション(--compress-level-network)

ネットワークの圧縮レベルです。

compress-type=noneで、コマンドがリポジトリと同じホストで実行されない場合のネットワーク圧縮レベルを設定します。圧縮によってネットワークトラフィックを削減します。compress-typeがnoneでない場合は、ファイルを1回だけ圧縮するように、compress-level-network設定を無視して代わりにcompress-levelを使用します。

default: 1
allowed: [-5, 12]
example: --compress-level-network=1

設定ファイルオプション(--config)

pgBackRestの設定ファイルです。

デフォルトとは異なる設定ファイルを指定するには、このオプションを使用します。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --config=/conf/pgbackrest/pgbackrest.conf

追加設定パスオプション(--config-include-path)

追加のpgBackRest設定ファイルへのパスです。

指定した場所にある拡張子.confの設定ファイルをpgBackRest設定ファイルと連結し、1つの設定ファイルとして扱います。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --config-include-path=/conf/pgbackrest/conf.d

設定パスオプション(--config-path)

pgBackRest設定ファイルの基準パスです。

この設定は、--configと--config-include-pathの各オプションがコマンドラインで明示的に設定されていない場合に、それらのデフォルトの基準パスを上書きします。

たとえば、--config-path=/conf/pgbackrestだけを渡すと、--configのデフォルトは/conf/pgbackrest/pgbackrest.confに、--config-include-pathのデフォルトは/conf/pgbackrest/conf.dに設定されます。

default: CFGOPTDEF_CONFIG_PATH
example: --config-path=/conf/pgbackrest

I/Oタイムアウトオプション(--io-timeout)

I/Oのタイムアウトです。

接続および読み取り/書き込み処理に使用する、秒単位のタイムアウトです。

読み取り/書き込み処理全体がこのタイムアウト内に完了する必要はありませんが、わずか1バイトでも、何らかの進展が必要です。

default: 1m
allowed: [100ms, 1h]
example: --io-timeout=120

固定umaskオプション(--neutral-umask)

固定のumaskを使用します。

umaskを0000に設定し、リポジトリ内のファイルやディレクトリが適切な権限で作成されるようにします。デフォルトのディレクトリ権限は0750、ファイル権限は0640です。

代わりに実行ユーザーのumaskを使用するには、設定ファイルにneutral-umask=n、またはコマンドラインに--no-neutral-umaskを指定します。

default: y
example: --no-neutral-umask

プロセス優先度設定オプション(--priority)

プロセスの優先度を設定します。

カーネルのスケジューラーがプロセスに与える優先度(niceness)を定義します。正の値は優先度を下げ、負の値は優先度を上げます。通常、プロセスには自身の優先度を上げる権限がありません。

allowed: [-20, 19]
example: --priority=19

プロトコルタイムアウトオプション(--protocol-timeout)

プロトコルのタイムアウトです。

ローカルまたはリモートのプロセスが、プロトコル層で新しいメッセージの受信を待つタイムアウトを秒単位で設定します。これにより、プロセスがメッセージを無期限に待ち続けることを防ぎます。

注記: protocol-timeoutオプションは、db-timeoutオプションより大きくする必要があります。

default: 31m
allowed: [100ms, 7d]
example: --protocol-timeout=630

生データオプション(--raw)

データを変換しません。

現在のコマンドでは、データの変換(暗号化、展開など)を行いません。

default: n
example: --raw

キープアライブオプション(--sck-keep-alive)

キープアライブを有効にします。

ソケット接続でキープアライブメッセージを有効にします。

default: y
example: --no-sck-keep-alive

キープアライブ回数オプション(--tcp-keep-alive-count)

キープアライブの回数です。

接続が切れたと判断するまでに、応答がなくても許容するTCPキープアライブメッセージの数を指定します。

このオプションは、TCP_KEEPCNTソケットオプションをサポートするシステムで利用できます。

allowed: [1, 32]
example: --tcp-keep-alive-count=3

キープアライブ待機時間オプション(--tcp-keep-alive-idle)

キープアライブの待機時間です。

ネットワーク通信がない状態で、オペレーティングシステムがTCPキープアライブメッセージを送信するまでの時間を秒単位で指定します。

このオプションは、TCP_KEEPIDLEソケットオプションをサポートするシステムで利用できます。

allowed: [1, 3600]
example: --tcp-keep-alive-idle=60

キープアライブ間隔オプション(--tcp-keep-alive-interval)

キープアライブの送信間隔です。

応答のないTCPキープアライブメッセージを再送信するまでの時間を秒単位で指定します。

このオプションは、TCP_KEEPINTVLソケットオプションをサポートするシステムで利用できます。

allowed: [1, 900]
example: --tcp-keep-alive-interval=30

TLSv1.2暗号スイートオプション(--tls-cipher-12)

許可するTLSv1.2暗号スイートです。

pgBackRestクライアントとサーバー間のすべてのTLS接続は暗号化されます。デフォルトでは、オブジェクトストア(例:S3)への接続も暗号化されます。

注記: どのトランスポート接続でも、セキュリティーの最低要件はTLSv1.2です。

必要に応じて、受け入れる暗号スイートを調整できます。特別なセキュリティー要件がなければ、例に示す値が妥当な選択です。未設定(デフォルト)の場合は、使用するOpenSSLライブラリのデフォルトが適用されます。

example: --tls-cipher-12=HIGH:MEDIUM:+3DES:!aNULL

TLSv1.3暗号スイートオプション(--tls-cipher-13)

許可するTLSv1.3暗号スイートです。

pgBackRestクライアントとサーバー間のすべてのTLS接続は暗号化されます。デフォルトでは、オブジェクトストア(例:S3)への接続も暗号化されます。

注記: どのトランスポート接続でも、セキュリティーの最低要件はTLSv1.2です。

必要に応じて、受け入れる暗号スイートを調整できます。未設定(デフォルト)の場合は、使用するOpenSSLライブラリのデフォルトが適用されます。

example: --tls-cipher-13=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256

ログオプション

コンソールログレベルオプション(--log-level-console)

コンソールに出力するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: warn
example: --log-level-console=error

ファイルログレベルオプション(--log-level-file)

ファイルに記録するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: info
example: --log-level-file=debug

標準エラーログレベルオプション(--log-level-stderr)

stderrに出力するログのレベルです。

stdout(log-level-consoleで指定)の代わりにstderrへ出力するログレベルを指定します。stderrにはタイムスタンプとプロセスを出力しません。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: off
example: --log-level-stderr=error

ログパスオプション(--log-path)

ログファイルを保存するパスです。

ログパスは、pgBackRestがログファイルを保存する場所です。log-level-file=offの場合、ログパスは不要です。

default: /var/log/pgbackrest
example: --log-path=/backup/db/log

サブプロセスログオプション(--log-subprocess)

サブプロセスでのログ記録を有効にします。

このプロセスが作成するすべてのサブプロセスで、log-level-fileで指定したログレベルによるファイルへのログ記録を有効にします。

default: n
example: --log-subprocess

ログタイムスタンプオプション(--log-timestamp)

ログのタイムスタンプを有効にします。

コンソールとファイルのログでタイムスタンプを有効にします。このオプションは、ドキュメント生成などの特殊な状況では無効にします。

default: y
example: --no-log-timestamp

リポジトリオプション

リポジトリ指定オプション(--repo)

リポジトリを指定します。

コマンドの操作対象となるリポジトリを指定します。

たとえば、このオプションを使用すると、pgBackRestに選択させずに、特定のリポジトリからリストアできます。

allowed: [1, 256]
example: --repo=1

Azureリポジトリコンテナーオプション(--repo-azure-container)

Azureリポジトリのコンテナーです。

リポジトリの保存に使用するAzureコンテナーです。

repo-path=/を設定するとpgBackRestリポジトリをコンテナーのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのAzureが生成するコンテンツもコンテナーに保存できるようにすることを推奨します。

example: --repo1-azure-container=pg-backup

Azureリポジトリキー種別オプション(--repo-azure-key-type)

Azureリポジトリのキー種別です。

認可には次の種別をサポートします。

  • shared - 共有キー
  • sas - 共有アクセス署名
  • auto - AzureマネージドIDを使用して自動的に認可
default: shared
example: --repo1-azure-key-type=sas

AzureリポジトリURI形式オプション(--repo-azure-uri-style)

AzureのURI形式です。

次のURI形式をサポートします。

  • host - account.endpointホストに接続します。
  • path - endpointホストに接続し、URIの先頭にアカウントを付加します。
default: host
example: --repo1-azure-uri-style=path

リポジトリ暗号方式オプション(--repo-cipher-type)

リポジトリの暗号化に使用する暗号方式です。

次の暗号方式をサポートします。

  • none - リポジトリを暗号化しません
  • aes-256-cbc - 鍵長256ビットのAdvanced Encryption Standard

リポジトリの種類(例:S3)が暗号化をサポートしていても、暗号化は常にクライアント側で実行されます。

default: none
example: --repo1-cipher-type=aes-256-cbc

GCSリポジトリバケットオプション(--repo-gcs-bucket)

GCSリポジトリのバケットです。

リポジトリの保存に使用するGCSバケットです。

repo-path=/を設定するとpgBackRestリポジトリをバケットのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのGCSが生成するコンテンツもバケットに保存できるようにすることを推奨します。

example: --repo1-gcs-bucket=/pg-backup

GCSリポジトリエンドポイントオプション(--repo-gcs-endpoint)

GCSリポジトリのエンドポイントです。

ストレージサービスへの接続に使用するエンドポイントです。ローカルのGCSサーバーや別のエンドポイントを使用するように変更できます。

default: storage.googleapis.com
example: --repo1-gcs-endpoint=localhost

GCSリポジトリキー種別オプション(--repo-gcs-key-type)

GCSリポジトリのキー種別です。

認可には次の種別をサポートします。

  • auto - インスタンスのサービスアカウントを使用して認可します。
  • service - ローカルに保存したキーでサービスアカウントを使用します。
  • token - fakegcsなどを使用するローカルテスト用です。

repo-gcs-key-type=serviceの場合、認証トークンの更新時に認証情報を再読み込みします。

default: service
example: --repo1-gcs-key-type=auto

GCSリポジトリプロジェクトIDオプション(--repo-gcs-user-project)

GCSのプロジェクトIDです。

リクエストの課金先を決定するために使用するGCSプロジェクトIDです。

example: --repo1-gcs-user-project=my-project

リポジトリホストオプション(--repo-host)

リモート操作時のリポジトリホストです。

ローカルにマウントされたファイルシステムにバックアップおよびアーカイブする場合、この設定は不要です。

example: --repo1-host=repo1.domain.com

非推奨の名前:backup-host

リポジトリホスト認証局ファイルオプション(--repo-host-ca-file)

リポジトリホストの認証局ファイルです。

リポジトリホストへの接続に、システムのデフォルト以外のCAファイルを使用します。

example: --repo1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt

リポジトリホスト認証局パスオプション(--repo-host-ca-path)

リポジトリホストの認証局パスです。

リポジトリホストへの接続に、システムのデフォルト以外のCAパスを使用します。

example: --repo1-host-ca-path=/etc/pki/tls/certs

リポジトリホスト証明書ファイルオプション(--repo-host-cert-file)

リポジトリホストの証明書ファイルです。

クライアントの身元を証明するためにリポジトリホストに送信します。

example: --repo1-host-cert-file=/path/to/client.crt

リポジトリホストコマンドオプション(--repo-host-cmd)

リポジトリホストのpgBackRestコマンドです。

pgBackRestコマンドのパスがローカルホストとリポジトリホストで異なる場合にのみ必要です。未定義の場合、リポジトリホストのコマンドにはローカルと同じコマンドを設定します。

default: [path of executed pgbackrest binary]
example: --repo1-host-cmd=/usr/lib/backrest/bin/pgbackrest

非推奨の名前:backup-cmd

リポジトリホスト設定オプション(--repo-host-config)

pgBackRestリポジトリホストの設定ファイルです。

リポジトリホスト上の設定ファイルの場所を設定します。リポジトリホストの設定ファイルがローカルの設定ファイルと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --repo1-host-config=/conf/pgbackrest/pgbackrest.conf

非推奨の名前:backup-config

リポジトリホスト追加設定パスオプション(--repo-host-config-include-path)

pgBackRestリポジトリホストの追加設定パスです。

リポジトリホスト上の追加設定パスの場所を設定します。リポジトリホストの追加設定パスがローカルの追加設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --repo1-host-config-include-path=/conf/pgbackrest/conf.d

リポジトリホスト設定パスオプション(--repo-host-config-path)

pgBackRestリポジトリホストの設定パスです。

リポジトリホスト上の設定パスの場所を設定します。リポジトリホストの設定パスがローカルの設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH
example: --repo1-host-config-path=/conf/pgbackrest

リポジトリホストキーファイルオプション(--repo-host-key-file)

リポジトリホストのキーファイルです。

クライアント証明書が所有者によって送信されたことを証明します。

example: --repo1-host-key-file=/path/to/client.key

リポジトリホストポートオプション(--repo-host-port)

repo-hostが設定されている場合のリポジトリホストのポートです。

リポジトリホストのプロトコルにデフォルト以外のポートを指定するには、このオプションを使用します。

注記: repo-host-type=sshの場合、repo-host-portにデフォルト値はありません。この場合、ポートはcmd-sshで指定したコマンドの設定に従います。

default (depending on repo-host-type):
    tls - 8432

allowed: [0, 65535]
example: --repo1-host-port=25

非推奨の名前:backup-ssh-port

リポジトリホストプロトコル種別オプション(--repo-host-type)

リポジトリホストのプロトコル種別です。

次のプロトコル種別をサポートします。

  • ssh - Secure Shell。
  • tls - pgBackRest TLSサーバー。
default: ssh
example: --repo1-host-type=tls

リポジトリホストユーザーオプション(--repo-host-user)

repo-hostが設定されている場合のリポジトリホストのユーザーです。

リポジトリホスト上の操作に使用するユーザーを定義します。postgresユーザーではなく、pgbackrestなどの別のユーザーを使用することを推奨します。リポジトリホストでPostgreSQLを実行する場合は、postgresユーザーをpgbackrestグループに追加することで、リポジトリの内容を誤って破損させずに読み取り権限を与えられます。

default: pgbackrest
example: --repo1-host-user=repo-user

非推奨の名前:backup-user

リポジトリパスオプション(--repo-path)

バックアップとアーカイブを保存するパスです。

リポジトリは、pgBackRestがバックアップを保存し、WALセグメントをアーカイブする場所です。

必要な容量を事前に見積もるのは難しい場合があります。まずいくつかバックアップを取得し、各種類(full/incr/diff)のバックアップサイズを記録して、1日当たりに生成されるWALの量を測定するのが最善です。これにより、必要な容量のおおよその見当が付きます。ただし、データベースの変化に伴い、必要量も時間とともに変わる可能性があります。

default: /var/lib/pgbackrest
example: --repo1-path=/backup/db/backrest

S3リポジトリバケットオプション(--repo-s3-bucket)

S3リポジトリのバケットです。

リポジトリの保存に使用するS3バケットです。

repo-path=/を設定するとpgBackRestリポジトリをバケットのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのAWSが生成するコンテンツもバケットに保存できるようにすることを推奨します。

example: --repo1-s3-bucket=pg-backup

S3リポジトリエンドポイントオプション(--repo-s3-endpoint)

S3リポジトリのエンドポイントです。

選択したリージョンに対して有効なAWSエンドポイントを使用してください。

独自の構成やテスト構成では、repo-storage-ca-file、repo-storage-ca-path、repo-storage-host、repo-storage-port、repo-storage-verify-tlsの各オプションが役立つ場合があります。

example: --repo1-s3-endpoint=s3.amazonaws.com

S3リポジトリキー種別オプション(--repo-s3-key-type)

S3リポジトリのキー種別です。

次の種別をサポートします。

  • shared - 共有キー
  • auto - 一時認証情報を自動取得
  • web-id - ウェブID認証情報を自動取得
  • pod-id - EKS Pod Identityの認証情報を自動取得
  • process - プロセスを実行して認証情報を取得
default: shared
example: --repo1-s3-key-type=auto

S3リポジトリKMSキーIDオプション(--repo-s3-kms-key-id)

S3リポジトリのKMSキーです。

指定したAWS Key Management Serviceのキーを使用して、S3のサーバー側暗号化を有効にします。

example: --repo1-s3-kms-key-id=bceb4f13-6939-4be3-910d-df54dee817b7

S3認証プロセスコマンドオプション(--repo-s3-process-cmd)

S3の認証プロセスコマンドです。

一時的なS3認証情報を取得するために実行するコマンド(および任意の引数)です。リストの最初の要素がコマンドで、残りの要素はパラメーターとして渡します。

プロセスは、AccessKeyId、SecretAccessKey、SessionToken、Expirationフィールドを含むJSONを出力する必要があります。認証情報は有効期限の前に自動更新されます。形式の詳細は、プロセス認証情報プロバイダー を参照してください。

example: --repo1-s3-process-cmd=/usr/local/bin/get-credentials --repo1-s3-process-cmd=--role --repo1-s3-process-cmd=my-role

S3リポジトリリージョンオプション(--repo-s3-region)

S3リポジトリのリージョンです。

バケットを作成したAWSリージョンです。

example: --repo1-s3-region=us-east-1

S3リポジトリのリクエスタ支払いオプション(--repo-s3-requester-pays)

S3リポジトリのリクエスタ支払いです。

S3のリクエスタ支払いを有効にします。

default: n
example: --no-repo1-s3-requester-pays

S3リポジトリロールオプション(--repo-s3-role)

S3リポジトリのロールです。

repo-s3-key-type=autoの場合に、一時認証情報の取得に使用するAWSロール名(完全なARNではありません)です。

example: --repo1-s3-role=authrole

S3リポジトリサービスオプション(--repo-s3-service)

S3の署名サービスです。

SigV4認証で使用するS3署名サービスです。標準のS3エンドポイントでは、デフォルトはs3です。S3 Outpostsエンドポイントを使用する場合は、s3-outpostsに設定します。

default: s3
example: --repo1-s3-service=s3-outposts

S3リポジトリSTSエンドポイントオプション(--repo-s3-sts-host)

S3リポジトリのSTSエンドポイントです。

repo-s3-key-type=web-idを設定した場合に、一時認証情報の取得に使用するSTSエンドポイントです。リージョン別STSを使用するには、リージョン別エンドポイント(例:sts.us-east-1.amazonaws.com)を設定します。GovCloudや中国リージョンで必要になる場合や、レイテンシーを低減するために使用する場合があります。

default: sts.amazonaws.com
example: --repo1-s3-sts-host=sts.us-east-1.amazonaws.com

S3リポジトリURI形式オプション(--repo-s3-uri-style)

S3のURI形式です。

次のURI形式をサポートします。

  • host - bucket.endpointホストに接続します。
  • path - endpointホストに接続し、URIの先頭にバケットを付加します。
default: host
example: --repo1-s3-uri-style=path

SFTPリポジトリホストオプション(--repo-sftp-host)

SFTPリポジトリのホストです。

リポジトリが存在するSFTPホストです。

example: --repo1-sftp-host=sftprepo.domain

SFTPリポジトリホストフィンガープリントオプション(--repo-sftp-host-fingerprint)

SFTPリポジトリホストのフィンガープリントです。

SFTPリポジトリホストのフィンガープリントの生成方法は、repo-sftp-host-key-hash-typeと一致させてください。awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -bでフィンガープリントを生成します。sshホストキーは通常、/etc/sshディレクトリにあります。

example: --repo1-sftp-host-fingerprint=f84e172dfead7aeeeae6c1fdfb5aa8cf

SFTPホストキー確認方式オプション(--repo-sftp-host-key-check-type)

SFTPのホストキー確認方式です。

次のSFTPホストキー確認方式をサポートします。

  • strict - pgBackRestは~/.ssh/known_hostsファイルにホストキーを自動追加せず、ホストキーが変更されたホスト、または既知のホストファイルで見つからないホストへの接続を拒否します。このオプションでは、新しいホストをすべて手動で追加する必要があります。
  • accept-new - pgBackRestは新しいホストキーをユーザーの既知のホストファイルに自動追加しますが、ホストキーが変更されたホストへの接続は許可しません。
  • fingerprint - pgBackRestは、repo-sftp-host-fingerprintオプションで指定したフィンガープリントとホストキーを照合します。
  • none - ホストキーを確認しません。
default: strict
example: --repo1-sftp-host-key-check-type=accept-new

SFTPリポジトリホストキーハッシュ種別オプション(--repo-sftp-host-key-hash-type)

SFTPリポジトリのホストキーハッシュ種別です。

SFTPリポジトリのホストキーハッシュ種別です。SSHの開始時に、リモートシステムのホストキーのダイジェスト計算に使用するハッシュ種別を指定します。新しいバージョンのlibssh2は、md5とsha1に加えてsha256もサポートします。

example: --repo1-sftp-host-key-hash-type=sha256

SFTPリポジトリホストポートオプション(--repo-sftp-host-port)

SFTPリポジトリホストのポートです。

SFTPリポジトリホストのポートです。

default: 22
allowed: [1, 65535]
example: --repo1-sftp-host-port=22

SFTPリポジトリホストユーザーオプション(--repo-sftp-host-user)

SFTPリポジトリホストのユーザーです。

リポジトリの保存に使用するホスト上のユーザーです。

example: --repo1-sftp-host-user=pg-backup

SFTP既知ホストファイルオプション(--repo-sftp-known-host)

SFTPの既知のホストファイルです。

認証時に一致するSFTPホストを探す既知のホストファイルです。未指定の場合、pgBackRestはデフォルトで~/.ssh/known_hosts、~/.ssh/known_hosts2、/etc/ssh/ssh_known_hosts、/etc/ssh/ssh_known_hosts2を検索します。1つ以上のファイルパスを設定した場合は、それらを検索して一致を確認します。ファイルパスは絶対パス、または先頭がチルダのパスである必要があります。repo-sftp-known-hostオプションを複数回指定することで、検索する既知のホストファイルを複数指定できます。既知のホストファイルによる確認を使用するには、repo-sftp-host-fingerprintを指定してはいけません。repo-sftp-host-check-typeオプションも参照してください。

example: --repo1-sftp-known-host=/home/postgres/.ssh/known_hosts

SFTPリポジトリ秘密鍵ファイルオプション(--repo-sftp-private-key-file)

SFTPの秘密鍵ファイルです。

認証に使用するSFTP秘密鍵ファイルです。

example: --repo1-sftp-private-key-file=~/.ssh/id_ed25519

SFTPリポジトリ公開鍵ファイルオプション(--repo-sftp-public-key-file)

SFTPの公開鍵ファイルです。

認証に使用するSFTP公開鍵ファイルです。OpenSSLに対してコンパイルした場合は任意ですが、別のライブラリに対してコンパイルした場合は必須です。

example: --repo1-sftp-public-key-file=~/.ssh/id_ed25519.pub

リポジトリストレージCAファイルオプション(--repo-storage-ca-file)

リポジトリストレージのCAファイルです。

ストレージ(例:S3、Azure)の証明書に、システムのデフォルト以外のCAファイルを使用します。

example: --repo1-storage-ca-file=/etc/pki/tls/certs/ca-bundle.crt

非推奨の名前:repo-azure-ca-file, repo-s3-ca-file

リポジトリストレージTLS CAパスオプション(--repo-storage-ca-path)

リポジトリストレージのCAパスです。

ストレージ(例:S3、Azure)の証明書に、システムのデフォルト以外のCAパスを使用します。

example: --repo1-storage-ca-path=/etc/pki/tls/certs

非推奨の名前:repo-azure-ca-path, repo-s3-ca-path

リポジトリストレージホストオプション(--repo-storage-host)

リポジトリストレージのホストです。

ストレージ(例:S3、Azure)のエンドポイントとは異なるホストに接続します。通常はテストに使用します。

example: --repo1-storage-host=127.0.0.1

非推奨の名前:repo-azure-host, repo-s3-host

リポジトリストレージポートオプション(--repo-storage-port)

リポジトリストレージのポートです。

ストレージ(例:S3、Azure)のエンドポイント(ホストを指定した場合はそのホスト)への接続に使用するポートです。

default: 443
allowed: [1, 65535]
example: --repo1-storage-port=9000

非推奨の名前:repo-azure-port, repo-s3-port

リポジトリストレージタグオプション(--repo-storage-tag)

リポジトリストレージのタグです。

リポジトリがオブジェクトストア(例:S3)の場合に、オブジェクトに付加するタグを指定します。このオプションを繰り返して、複数のタグを追加できます。

pgBackRestにはこれらのタグを変更する機能がないため、リポジトリ全体でタグを統一するには、stanza-createを実行する前に正しく設定してください。

example: --repo1-storage-tag=key1=value1

リポジトリストレージアップロードチャンクサイズオプション(--repo-storage-upload-chunk-size)

リポジトリストレージのアップロードチャンクサイズです。

S3などのオブジェクトストアでは、ファイルが大きすぎてメモリに格納できない場合に、チャンクに分けてアップロードできます。ファイルをメモリに格納できる場合でも、アップロードに使用するメモリ量を制限する方がメモリ効率は高くなります。

チャンクサイズを大きくすると、アップロードリクエストを最小限に抑え、チャンク分割せずに1回のリクエストでアップロードできるファイルが増えるため、一般にパフォーマンスが向上します。一方、メモリ使用量は増加します。チャンクバッファーはプロセスごとに割り当てる必要があるため、process-maxの値が大きいほど、全体のメモリ消費量も増えます。

有効なチャンクサイズは、ストレージの種類やプラットフォームによって異なります。たとえば、AWS S3の最小チャンクサイズは5MiBです。チャンクサイズの呼び方もストレージの種類によって異なるため、最小値/最大値を調べる際は、AWS S3では「part size」、GCSでは「chunk size」、Azureでは「block size」を使用してください。

ファイルが1GiB(PostgreSQLがデフォルトで作成する最大サイズ)より大きい場合、ファイルのアップロードを完了するために、許容される最大値までチャンクサイズを段階的に増やします。

default (depending on repo-type):
    azure - 4MiB
    gcs - 4MiB
    s3 - 5MiB

allow range (depending on repo-type):
    azure - [4MiB, 1GiB]
    gcs - [4MiB, 1GiB]
    s3 - [5MiB, 1GiB]

example: --repo1-storage-upload-chunk-size=16MiB

リポジトリストレージ証明書検証オプション(--repo-storage-verify-tls)

リポジトリストレージの証明書を検証します。

このオプションでは、ストレージ(例:S3、Azure)サーバーのTLS証明書の検証を有効/無効にできます。無効化は、テストや自己署名証明書を使用する場合に限ってください。

default: y
example: --no-repo1-storage-verify-tls

非推奨の名前:repo-azure-verify-tls, repo-s3-verify-ssl, repo-s3-verify-tls

リポジトリ対象時刻オプション(--repo-target-time)

リポジトリの対象時刻です。

対象時刻は、コマンドがバージョン管理されたストレージ上のリポジトリを読み取る際の時点を定義します。これにより、ある時点の状態のリポジトリを読み取り、ユーザーの誤操作やマルウェアによって削除または破損したデータをリカバリーできます。

S3、GCS、Azureはストレージのバージョン管理をサポートしますが、通常はデフォルトで有効になっていません。バージョン管理の有効化に加え、S3ではオブジェクトロック、GCSやAzureでは論理削除を有効にすると役立つ場合があります。

repo-target-timeオプションを指定する場合は、repoオプションも指定する必要があります。すべてのリポジトリ種類がバージョン管理をサポートするとは限らず、一般にリカバリーでは単一のリポジトリを対象とするのが妥当です。

ストレージのタイムスタンプとの比較は、指定したタイムスタンプ以下(<=)で行い、タイムスタンプにミリ秒を指定しても切り捨てられます。

example: --repo-target-time=2024-08-08 12:12:12+00

リポジトリ種別オプション(--repo-type)

リポジトリに使用するストレージの種類です。

次のリポジトリ種類をサポートします。

  • azure - Azure Blob Storage Service
  • cifs - posixと同様ですが、リンクとディレクトリのfsyncを無効にします
  • gcs - Google Cloud Storage
  • posix - Posix準拠のファイルシステム
  • s3 - AWS Simple Storage Service
  • sftp - Secure File Transfer Protocol

NFSマウントをposixリポジトリとして使用する場合、PostgreSQLのドキュメントに記載されたものと同じ規則がpgBackRestにも適用されます。データベースクラスターの作成 - ファイルシステム を参照してください。

default: posix
example: --repo1-type=cifs

4.10 - リポジトリ一覧コマンド(repo-ls)

pgBackRestのrepo-lsコマンドのオプションと動作のリファレンス。

unixのlsコマンドに似ていますが、サポートされているすべてのリポジトリ種類で動作します。このコマンドは、絶対パス、または--repo-pathオプションで定義したリポジトリパスからの相対パスを受け取ります。主に管理、調査、テストに使用し、通常のpgBackRest構成で必須のものではありません。

デフォルトのテキスト出力は、1行に1つのファイル名を表示します。--output=jsonを指定すると、JSON形式で出力できます。

複数のリポジトリが設定されている場合、--repoオプションを指定しない限り、コマンドはデフォルトで最も優先度の高いリポジトリ(例:repo1)を使用します。

コマンドオプション

出力フィルターオプション(--filter)

正規表現で出力を絞り込みます。

出力する前に、ファイル/パス名に対してフィルターを適用します。

example: --filter="(F|D|I)$"

出力オプション(--output)

出力形式です。

次の出力形式をサポートします。

  • text - 1行に1つのファイル/リンク/パス名を表示する単純な一覧。
  • json - JSON形式の詳細なファイル/リンク/パス情報。

JSON形式で使用できるフィールドは次のとおりです。

  • name - ファイル/リンク/パス名(再帰時は部分的なパスも含む)。
  • type - file、path、linkのいずれか。
  • size - バイト単位のサイズ(ファイルのみ)。
  • time - 最終更新時刻(ファイルのみ)。
  • destination - リンク先(リンクのみ)。
default: text
example: --output=json

サブパス再帰オプション(--recurse)

出力にすべてのサブパスを含めます。

すべてのサブパスと、それらのファイルを出力に含めます。

default: n
example: --recurse

出力並べ替えオプション(--sort)

出力を昇順、降順、または並べ替えなしにします。

次の並べ替え方式をサポートします。

  • asc - 昇順に並べ替えます。
  • desc - 降順に並べ替えます。
  • none - 並べ替えません。
default: asc
example: --sort=desc

一般オプション

rootでの実行許可オプション(--allow-root)

rootユーザーによるコマンドの実行を許可します。

デフォルトでは、ファイルの所有権を慎重に管理するように設計されたrestoreコマンドのみをrootユーザーで実行できます。ほかのコマンドをrootで実行すると、たとえばリポジトリ内にroot所有のファイルが作成され、PostgreSQLユーザーがアクセスできなくなって、後続のコマンドが失敗するおそれがあります。

それでもコマンドをrootで実行する場合は、このオプションを有効にします。ただし、リポジトリとPostgreSQLクラスターを所有するユーザーとしてpgBackRestを実行する方がはるかに適切です。

default: n
example: --allow-root

バッファーサイズオプション(--buffer-size)

I/O処理のバッファーサイズです。

コピー、圧縮、暗号化などの処理に使用するバッファーサイズです。使用するバッファーの数はオプションによって異なり、各処理で追加のメモリを使用する場合があります。たとえば、gz圧縮では256KiBのメモリを追加で使用する場合があります。

指定できる値は、16KiB、32KiB、64KiB、128KiB、256KiB、512KiB、1MiB、2MiB、4MiB、8MiB、16MiBです。

default: 1MiB
example: --buffer-size=2MiB

SSHクライアントコマンドオプション(--cmd-ssh)

SSHクライアントのコマンドです。

別のSSHクライアントを使用したい場合や、sshコマンドが$PATHに含まれていない場合に、使用するSSHクライアントコマンドを指定します。

default: ssh
example: --cmd-ssh=/usr/bin/ssh

ネットワーク圧縮レベルオプション(--compress-level-network)

ネットワークの圧縮レベルです。

compress-type=noneで、コマンドがリポジトリと同じホストで実行されない場合のネットワーク圧縮レベルを設定します。圧縮によってネットワークトラフィックを削減します。compress-typeがnoneでない場合は、ファイルを1回だけ圧縮するように、compress-level-network設定を無視して代わりにcompress-levelを使用します。

default: 1
allowed: [-5, 12]
example: --compress-level-network=1

設定ファイルオプション(--config)

pgBackRestの設定ファイルです。

デフォルトとは異なる設定ファイルを指定するには、このオプションを使用します。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --config=/conf/pgbackrest/pgbackrest.conf

追加設定パスオプション(--config-include-path)

追加のpgBackRest設定ファイルへのパスです。

指定した場所にある拡張子.confの設定ファイルをpgBackRest設定ファイルと連結し、1つの設定ファイルとして扱います。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --config-include-path=/conf/pgbackrest/conf.d

設定パスオプション(--config-path)

pgBackRest設定ファイルの基準パスです。

この設定は、--configと--config-include-pathの各オプションがコマンドラインで明示的に設定されていない場合に、それらのデフォルトの基準パスを上書きします。

たとえば、--config-path=/conf/pgbackrestだけを渡すと、--configのデフォルトは/conf/pgbackrest/pgbackrest.confに、--config-include-pathのデフォルトは/conf/pgbackrest/conf.dに設定されます。

default: CFGOPTDEF_CONFIG_PATH
example: --config-path=/conf/pgbackrest

I/Oタイムアウトオプション(--io-timeout)

I/Oのタイムアウトです。

接続および読み取り/書き込み処理に使用する、秒単位のタイムアウトです。

読み取り/書き込み処理全体がこのタイムアウト内に完了する必要はありませんが、わずか1バイトでも、何らかの進展が必要です。

default: 1m
allowed: [100ms, 1h]
example: --io-timeout=120

固定umaskオプション(--neutral-umask)

固定のumaskを使用します。

umaskを0000に設定し、リポジトリ内のファイルやディレクトリが適切な権限で作成されるようにします。デフォルトのディレクトリ権限は0750、ファイル権限は0640です。

代わりに実行ユーザーのumaskを使用するには、設定ファイルにneutral-umask=n、またはコマンドラインに--no-neutral-umaskを指定します。

default: y
example: --no-neutral-umask

プロセス優先度設定オプション(--priority)

プロセスの優先度を設定します。

カーネルのスケジューラーがプロセスに与える優先度(niceness)を定義します。正の値は優先度を下げ、負の値は優先度を上げます。通常、プロセスには自身の優先度を上げる権限がありません。

allowed: [-20, 19]
example: --priority=19

プロトコルタイムアウトオプション(--protocol-timeout)

プロトコルのタイムアウトです。

ローカルまたはリモートのプロセスが、プロトコル層で新しいメッセージの受信を待つタイムアウトを秒単位で設定します。これにより、プロセスがメッセージを無期限に待ち続けることを防ぎます。

注記: protocol-timeoutオプションは、db-timeoutオプションより大きくする必要があります。

default: 31m
allowed: [100ms, 7d]
example: --protocol-timeout=630

キープアライブオプション(--sck-keep-alive)

キープアライブを有効にします。

ソケット接続でキープアライブメッセージを有効にします。

default: y
example: --no-sck-keep-alive

キープアライブ回数オプション(--tcp-keep-alive-count)

キープアライブの回数です。

接続が切れたと判断するまでに、応答がなくても許容するTCPキープアライブメッセージの数を指定します。

このオプションは、TCP_KEEPCNTソケットオプションをサポートするシステムで利用できます。

allowed: [1, 32]
example: --tcp-keep-alive-count=3

キープアライブ待機時間オプション(--tcp-keep-alive-idle)

キープアライブの待機時間です。

ネットワーク通信がない状態で、オペレーティングシステムがTCPキープアライブメッセージを送信するまでの時間を秒単位で指定します。

このオプションは、TCP_KEEPIDLEソケットオプションをサポートするシステムで利用できます。

allowed: [1, 3600]
example: --tcp-keep-alive-idle=60

キープアライブ間隔オプション(--tcp-keep-alive-interval)

キープアライブの送信間隔です。

応答のないTCPキープアライブメッセージを再送信するまでの時間を秒単位で指定します。

このオプションは、TCP_KEEPINTVLソケットオプションをサポートするシステムで利用できます。

allowed: [1, 900]
example: --tcp-keep-alive-interval=30

TLSv1.2暗号スイートオプション(--tls-cipher-12)

許可するTLSv1.2暗号スイートです。

pgBackRestクライアントとサーバー間のすべてのTLS接続は暗号化されます。デフォルトでは、オブジェクトストア(例:S3)への接続も暗号化されます。

注記: どのトランスポート接続でも、セキュリティーの最低要件はTLSv1.2です。

必要に応じて、受け入れる暗号スイートを調整できます。特別なセキュリティー要件がなければ、例に示す値が妥当な選択です。未設定(デフォルト)の場合は、使用するOpenSSLライブラリのデフォルトが適用されます。

example: --tls-cipher-12=HIGH:MEDIUM:+3DES:!aNULL

TLSv1.3暗号スイートオプション(--tls-cipher-13)

許可するTLSv1.3暗号スイートです。

pgBackRestクライアントとサーバー間のすべてのTLS接続は暗号化されます。デフォルトでは、オブジェクトストア(例:S3)への接続も暗号化されます。

注記: どのトランスポート接続でも、セキュリティーの最低要件はTLSv1.2です。

必要に応じて、受け入れる暗号スイートを調整できます。未設定(デフォルト)の場合は、使用するOpenSSLライブラリのデフォルトが適用されます。

example: --tls-cipher-13=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256

ログオプション

コンソールログレベルオプション(--log-level-console)

コンソールに出力するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: warn
example: --log-level-console=error

ファイルログレベルオプション(--log-level-file)

ファイルに記録するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: info
example: --log-level-file=debug

標準エラーログレベルオプション(--log-level-stderr)

stderrに出力するログのレベルです。

stdout(log-level-consoleで指定)の代わりにstderrへ出力するログレベルを指定します。stderrにはタイムスタンプとプロセスを出力しません。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: off
example: --log-level-stderr=error

ログパスオプション(--log-path)

ログファイルを保存するパスです。

ログパスは、pgBackRestがログファイルを保存する場所です。log-level-file=offの場合、ログパスは不要です。

default: /var/log/pgbackrest
example: --log-path=/backup/db/log

サブプロセスログオプション(--log-subprocess)

サブプロセスでのログ記録を有効にします。

このプロセスが作成するすべてのサブプロセスで、log-level-fileで指定したログレベルによるファイルへのログ記録を有効にします。

default: n
example: --log-subprocess

ログタイムスタンプオプション(--log-timestamp)

ログのタイムスタンプを有効にします。

コンソールとファイルのログでタイムスタンプを有効にします。このオプションは、ドキュメント生成などの特殊な状況では無効にします。

default: y
example: --no-log-timestamp

リポジトリオプション

リポジトリ指定オプション(--repo)

リポジトリを指定します。

コマンドの操作対象となるリポジトリを指定します。

たとえば、このオプションを使用すると、pgBackRestに選択させずに、特定のリポジトリからリストアできます。

allowed: [1, 256]
example: --repo=1

Azureリポジトリコンテナーオプション(--repo-azure-container)

Azureリポジトリのコンテナーです。

リポジトリの保存に使用するAzureコンテナーです。

repo-path=/を設定するとpgBackRestリポジトリをコンテナーのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのAzureが生成するコンテンツもコンテナーに保存できるようにすることを推奨します。

example: --repo1-azure-container=pg-backup

Azureリポジトリキー種別オプション(--repo-azure-key-type)

Azureリポジトリのキー種別です。

認可には次の種別をサポートします。

  • shared - 共有キー
  • sas - 共有アクセス署名
  • auto - AzureマネージドIDを使用して自動的に認可
default: shared
example: --repo1-azure-key-type=sas

AzureリポジトリURI形式オプション(--repo-azure-uri-style)

AzureのURI形式です。

次のURI形式をサポートします。

  • host - account.endpointホストに接続します。
  • path - endpointホストに接続し、URIの先頭にアカウントを付加します。
default: host
example: --repo1-azure-uri-style=path

リポジトリ暗号方式オプション(--repo-cipher-type)

リポジトリの暗号化に使用する暗号方式です。

次の暗号方式をサポートします。

  • none - リポジトリを暗号化しません
  • aes-256-cbc - 鍵長256ビットのAdvanced Encryption Standard

リポジトリの種類(例:S3)が暗号化をサポートしていても、暗号化は常にクライアント側で実行されます。

default: none
example: --repo1-cipher-type=aes-256-cbc

GCSリポジトリバケットオプション(--repo-gcs-bucket)

GCSリポジトリのバケットです。

リポジトリの保存に使用するGCSバケットです。

repo-path=/を設定するとpgBackRestリポジトリをバケットのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのGCSが生成するコンテンツもバケットに保存できるようにすることを推奨します。

example: --repo1-gcs-bucket=/pg-backup

GCSリポジトリエンドポイントオプション(--repo-gcs-endpoint)

GCSリポジトリのエンドポイントです。

ストレージサービスへの接続に使用するエンドポイントです。ローカルのGCSサーバーや別のエンドポイントを使用するように変更できます。

default: storage.googleapis.com
example: --repo1-gcs-endpoint=localhost

GCSリポジトリキー種別オプション(--repo-gcs-key-type)

GCSリポジトリのキー種別です。

認可には次の種別をサポートします。

  • auto - インスタンスのサービスアカウントを使用して認可します。
  • service - ローカルに保存したキーでサービスアカウントを使用します。
  • token - fakegcsなどを使用するローカルテスト用です。

repo-gcs-key-type=serviceの場合、認証トークンの更新時に認証情報を再読み込みします。

default: service
example: --repo1-gcs-key-type=auto

GCSリポジトリプロジェクトIDオプション(--repo-gcs-user-project)

GCSのプロジェクトIDです。

リクエストの課金先を決定するために使用するGCSプロジェクトIDです。

example: --repo1-gcs-user-project=my-project

リポジトリホストオプション(--repo-host)

リモート操作時のリポジトリホストです。

ローカルにマウントされたファイルシステムにバックアップおよびアーカイブする場合、この設定は不要です。

example: --repo1-host=repo1.domain.com

非推奨の名前:backup-host

リポジトリホスト認証局ファイルオプション(--repo-host-ca-file)

リポジトリホストの認証局ファイルです。

リポジトリホストへの接続に、システムのデフォルト以外のCAファイルを使用します。

example: --repo1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt

リポジトリホスト認証局パスオプション(--repo-host-ca-path)

リポジトリホストの認証局パスです。

リポジトリホストへの接続に、システムのデフォルト以外のCAパスを使用します。

example: --repo1-host-ca-path=/etc/pki/tls/certs

リポジトリホスト証明書ファイルオプション(--repo-host-cert-file)

リポジトリホストの証明書ファイルです。

クライアントの身元を証明するためにリポジトリホストに送信します。

example: --repo1-host-cert-file=/path/to/client.crt

リポジトリホストコマンドオプション(--repo-host-cmd)

リポジトリホストのpgBackRestコマンドです。

pgBackRestコマンドのパスがローカルホストとリポジトリホストで異なる場合にのみ必要です。未定義の場合、リポジトリホストのコマンドにはローカルと同じコマンドを設定します。

default: [path of executed pgbackrest binary]
example: --repo1-host-cmd=/usr/lib/backrest/bin/pgbackrest

非推奨の名前:backup-cmd

リポジトリホスト設定オプション(--repo-host-config)

pgBackRestリポジトリホストの設定ファイルです。

リポジトリホスト上の設定ファイルの場所を設定します。リポジトリホストの設定ファイルがローカルの設定ファイルと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --repo1-host-config=/conf/pgbackrest/pgbackrest.conf

非推奨の名前:backup-config

リポジトリホスト追加設定パスオプション(--repo-host-config-include-path)

pgBackRestリポジトリホストの追加設定パスです。

リポジトリホスト上の追加設定パスの場所を設定します。リポジトリホストの追加設定パスがローカルの追加設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --repo1-host-config-include-path=/conf/pgbackrest/conf.d

リポジトリホスト設定パスオプション(--repo-host-config-path)

pgBackRestリポジトリホストの設定パスです。

リポジトリホスト上の設定パスの場所を設定します。リポジトリホストの設定パスがローカルの設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH
example: --repo1-host-config-path=/conf/pgbackrest

リポジトリホストキーファイルオプション(--repo-host-key-file)

リポジトリホストのキーファイルです。

クライアント証明書が所有者によって送信されたことを証明します。

example: --repo1-host-key-file=/path/to/client.key

リポジトリホストポートオプション(--repo-host-port)

repo-hostが設定されている場合のリポジトリホストのポートです。

リポジトリホストのプロトコルにデフォルト以外のポートを指定するには、このオプションを使用します。

注記: repo-host-type=sshの場合、repo-host-portにデフォルト値はありません。この場合、ポートはcmd-sshで指定したコマンドの設定に従います。

default (depending on repo-host-type):
    tls - 8432

allowed: [0, 65535]
example: --repo1-host-port=25

非推奨の名前:backup-ssh-port

リポジトリホストプロトコル種別オプション(--repo-host-type)

リポジトリホストのプロトコル種別です。

次のプロトコル種別をサポートします。

  • ssh - Secure Shell。
  • tls - pgBackRest TLSサーバー。
default: ssh
example: --repo1-host-type=tls

リポジトリホストユーザーオプション(--repo-host-user)

repo-hostが設定されている場合のリポジトリホストのユーザーです。

リポジトリホスト上の操作に使用するユーザーを定義します。postgresユーザーではなく、pgbackrestなどの別のユーザーを使用することを推奨します。リポジトリホストでPostgreSQLを実行する場合は、postgresユーザーをpgbackrestグループに追加することで、リポジトリの内容を誤って破損させずに読み取り権限を与えられます。

default: pgbackrest
example: --repo1-host-user=repo-user

非推奨の名前:backup-user

リポジトリパスオプション(--repo-path)

バックアップとアーカイブを保存するパスです。

リポジトリは、pgBackRestがバックアップを保存し、WALセグメントをアーカイブする場所です。

必要な容量を事前に見積もるのは難しい場合があります。まずいくつかバックアップを取得し、各種類(full/incr/diff)のバックアップサイズを記録して、1日当たりに生成されるWALの量を測定するのが最善です。これにより、必要な容量のおおよその見当が付きます。ただし、データベースの変化に伴い、必要量も時間とともに変わる可能性があります。

default: /var/lib/pgbackrest
example: --repo1-path=/backup/db/backrest

S3リポジトリバケットオプション(--repo-s3-bucket)

S3リポジトリのバケットです。

リポジトリの保存に使用するS3バケットです。

repo-path=/を設定するとpgBackRestリポジトリをバケットのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのAWSが生成するコンテンツもバケットに保存できるようにすることを推奨します。

example: --repo1-s3-bucket=pg-backup

S3リポジトリエンドポイントオプション(--repo-s3-endpoint)

S3リポジトリのエンドポイントです。

選択したリージョンに対して有効なAWSエンドポイントを使用してください。

独自の構成やテスト構成では、repo-storage-ca-file、repo-storage-ca-path、repo-storage-host、repo-storage-port、repo-storage-verify-tlsの各オプションが役立つ場合があります。

example: --repo1-s3-endpoint=s3.amazonaws.com

S3リポジトリキー種別オプション(--repo-s3-key-type)

S3リポジトリのキー種別です。

次の種別をサポートします。

  • shared - 共有キー
  • auto - 一時認証情報を自動取得
  • web-id - ウェブID認証情報を自動取得
  • pod-id - EKS Pod Identityの認証情報を自動取得
  • process - プロセスを実行して認証情報を取得
default: shared
example: --repo1-s3-key-type=auto

S3リポジトリKMSキーIDオプション(--repo-s3-kms-key-id)

S3リポジトリのKMSキーです。

指定したAWS Key Management Serviceのキーを使用して、S3のサーバー側暗号化を有効にします。

example: --repo1-s3-kms-key-id=bceb4f13-6939-4be3-910d-df54dee817b7

S3認証プロセスコマンドオプション(--repo-s3-process-cmd)

S3の認証プロセスコマンドです。

一時的なS3認証情報を取得するために実行するコマンド(および任意の引数)です。リストの最初の要素がコマンドで、残りの要素はパラメーターとして渡します。

プロセスは、AccessKeyId、SecretAccessKey、SessionToken、Expirationフィールドを含むJSONを出力する必要があります。認証情報は有効期限の前に自動更新されます。形式の詳細は、プロセス認証情報プロバイダー を参照してください。

example: --repo1-s3-process-cmd=/usr/local/bin/get-credentials --repo1-s3-process-cmd=--role --repo1-s3-process-cmd=my-role

S3リポジトリリージョンオプション(--repo-s3-region)

S3リポジトリのリージョンです。

バケットを作成したAWSリージョンです。

example: --repo1-s3-region=us-east-1

S3リポジトリのリクエスタ支払いオプション(--repo-s3-requester-pays)

S3リポジトリのリクエスタ支払いです。

S3のリクエスタ支払いを有効にします。

default: n
example: --no-repo1-s3-requester-pays

S3リポジトリロールオプション(--repo-s3-role)

S3リポジトリのロールです。

repo-s3-key-type=autoの場合に、一時認証情報の取得に使用するAWSロール名(完全なARNではありません)です。

example: --repo1-s3-role=authrole

S3リポジトリサービスオプション(--repo-s3-service)

S3の署名サービスです。

SigV4認証で使用するS3署名サービスです。標準のS3エンドポイントでは、デフォルトはs3です。S3 Outpostsエンドポイントを使用する場合は、s3-outpostsに設定します。

default: s3
example: --repo1-s3-service=s3-outposts

S3リポジトリSTSエンドポイントオプション(--repo-s3-sts-host)

S3リポジトリのSTSエンドポイントです。

repo-s3-key-type=web-idを設定した場合に、一時認証情報の取得に使用するSTSエンドポイントです。リージョン別STSを使用するには、リージョン別エンドポイント(例:sts.us-east-1.amazonaws.com)を設定します。GovCloudや中国リージョンで必要になる場合や、レイテンシーを低減するために使用する場合があります。

default: sts.amazonaws.com
example: --repo1-s3-sts-host=sts.us-east-1.amazonaws.com

S3リポジトリURI形式オプション(--repo-s3-uri-style)

S3のURI形式です。

次のURI形式をサポートします。

  • host - bucket.endpointホストに接続します。
  • path - endpointホストに接続し、URIの先頭にバケットを付加します。
default: host
example: --repo1-s3-uri-style=path

SFTPリポジトリホストオプション(--repo-sftp-host)

SFTPリポジトリのホストです。

リポジトリが存在するSFTPホストです。

example: --repo1-sftp-host=sftprepo.domain

SFTPリポジトリホストフィンガープリントオプション(--repo-sftp-host-fingerprint)

SFTPリポジトリホストのフィンガープリントです。

SFTPリポジトリホストのフィンガープリントの生成方法は、repo-sftp-host-key-hash-typeと一致させてください。awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -bでフィンガープリントを生成します。sshホストキーは通常、/etc/sshディレクトリにあります。

example: --repo1-sftp-host-fingerprint=f84e172dfead7aeeeae6c1fdfb5aa8cf

SFTPホストキー確認方式オプション(--repo-sftp-host-key-check-type)

SFTPのホストキー確認方式です。

次のSFTPホストキー確認方式をサポートします。

  • strict - pgBackRestは~/.ssh/known_hostsファイルにホストキーを自動追加せず、ホストキーが変更されたホスト、または既知のホストファイルで見つからないホストへの接続を拒否します。このオプションでは、新しいホストをすべて手動で追加する必要があります。
  • accept-new - pgBackRestは新しいホストキーをユーザーの既知のホストファイルに自動追加しますが、ホストキーが変更されたホストへの接続は許可しません。
  • fingerprint - pgBackRestは、repo-sftp-host-fingerprintオプションで指定したフィンガープリントとホストキーを照合します。
  • none - ホストキーを確認しません。
default: strict
example: --repo1-sftp-host-key-check-type=accept-new

SFTPリポジトリホストキーハッシュ種別オプション(--repo-sftp-host-key-hash-type)

SFTPリポジトリのホストキーハッシュ種別です。

SFTPリポジトリのホストキーハッシュ種別です。SSHの開始時に、リモートシステムのホストキーのダイジェスト計算に使用するハッシュ種別を指定します。新しいバージョンのlibssh2は、md5とsha1に加えてsha256もサポートします。

example: --repo1-sftp-host-key-hash-type=sha256

SFTPリポジトリホストポートオプション(--repo-sftp-host-port)

SFTPリポジトリホストのポートです。

SFTPリポジトリホストのポートです。

default: 22
allowed: [1, 65535]
example: --repo1-sftp-host-port=22

SFTPリポジトリホストユーザーオプション(--repo-sftp-host-user)

SFTPリポジトリホストのユーザーです。

リポジトリの保存に使用するホスト上のユーザーです。

example: --repo1-sftp-host-user=pg-backup

SFTP既知ホストファイルオプション(--repo-sftp-known-host)

SFTPの既知のホストファイルです。

認証時に一致するSFTPホストを探す既知のホストファイルです。未指定の場合、pgBackRestはデフォルトで~/.ssh/known_hosts、~/.ssh/known_hosts2、/etc/ssh/ssh_known_hosts、/etc/ssh/ssh_known_hosts2を検索します。1つ以上のファイルパスを設定した場合は、それらを検索して一致を確認します。ファイルパスは絶対パス、または先頭がチルダのパスである必要があります。repo-sftp-known-hostオプションを複数回指定することで、検索する既知のホストファイルを複数指定できます。既知のホストファイルによる確認を使用するには、repo-sftp-host-fingerprintを指定してはいけません。repo-sftp-host-check-typeオプションも参照してください。

example: --repo1-sftp-known-host=/home/postgres/.ssh/known_hosts

SFTPリポジトリ秘密鍵ファイルオプション(--repo-sftp-private-key-file)

SFTPの秘密鍵ファイルです。

認証に使用するSFTP秘密鍵ファイルです。

example: --repo1-sftp-private-key-file=~/.ssh/id_ed25519

SFTPリポジトリ公開鍵ファイルオプション(--repo-sftp-public-key-file)

SFTPの公開鍵ファイルです。

認証に使用するSFTP公開鍵ファイルです。OpenSSLに対してコンパイルした場合は任意ですが、別のライブラリに対してコンパイルした場合は必須です。

example: --repo1-sftp-public-key-file=~/.ssh/id_ed25519.pub

リポジトリストレージCAファイルオプション(--repo-storage-ca-file)

リポジトリストレージのCAファイルです。

ストレージ(例:S3、Azure)の証明書に、システムのデフォルト以外のCAファイルを使用します。

example: --repo1-storage-ca-file=/etc/pki/tls/certs/ca-bundle.crt

非推奨の名前:repo-azure-ca-file, repo-s3-ca-file

リポジトリストレージTLS CAパスオプション(--repo-storage-ca-path)

リポジトリストレージのCAパスです。

ストレージ(例:S3、Azure)の証明書に、システムのデフォルト以外のCAパスを使用します。

example: --repo1-storage-ca-path=/etc/pki/tls/certs

非推奨の名前:repo-azure-ca-path, repo-s3-ca-path

リポジトリストレージホストオプション(--repo-storage-host)

リポジトリストレージのホストです。

ストレージ(例:S3、Azure)のエンドポイントとは異なるホストに接続します。通常はテストに使用します。

example: --repo1-storage-host=127.0.0.1

非推奨の名前:repo-azure-host, repo-s3-host

リポジトリストレージポートオプション(--repo-storage-port)

リポジトリストレージのポートです。

ストレージ(例:S3、Azure)のエンドポイント(ホストを指定した場合はそのホスト)への接続に使用するポートです。

default: 443
allowed: [1, 65535]
example: --repo1-storage-port=9000

非推奨の名前:repo-azure-port, repo-s3-port

リポジトリストレージタグオプション(--repo-storage-tag)

リポジトリストレージのタグです。

リポジトリがオブジェクトストア(例:S3)の場合に、オブジェクトに付加するタグを指定します。このオプションを繰り返して、複数のタグを追加できます。

pgBackRestにはこれらのタグを変更する機能がないため、リポジトリ全体でタグを統一するには、stanza-createを実行する前に正しく設定してください。

example: --repo1-storage-tag=key1=value1

リポジトリストレージアップロードチャンクサイズオプション(--repo-storage-upload-chunk-size)

リポジトリストレージのアップロードチャンクサイズです。

S3などのオブジェクトストアでは、ファイルが大きすぎてメモリに格納できない場合に、チャンクに分けてアップロードできます。ファイルをメモリに格納できる場合でも、アップロードに使用するメモリ量を制限する方がメモリ効率は高くなります。

チャンクサイズを大きくすると、アップロードリクエストを最小限に抑え、チャンク分割せずに1回のリクエストでアップロードできるファイルが増えるため、一般にパフォーマンスが向上します。一方、メモリ使用量は増加します。チャンクバッファーはプロセスごとに割り当てる必要があるため、process-maxの値が大きいほど、全体のメモリ消費量も増えます。

有効なチャンクサイズは、ストレージの種類やプラットフォームによって異なります。たとえば、AWS S3の最小チャンクサイズは5MiBです。チャンクサイズの呼び方もストレージの種類によって異なるため、最小値/最大値を調べる際は、AWS S3では「part size」、GCSでは「chunk size」、Azureでは「block size」を使用してください。

ファイルが1GiB(PostgreSQLがデフォルトで作成する最大サイズ)より大きい場合、ファイルのアップロードを完了するために、許容される最大値までチャンクサイズを段階的に増やします。

default (depending on repo-type):
    azure - 4MiB
    gcs - 4MiB
    s3 - 5MiB

allow range (depending on repo-type):
    azure - [4MiB, 1GiB]
    gcs - [4MiB, 1GiB]
    s3 - [5MiB, 1GiB]

example: --repo1-storage-upload-chunk-size=16MiB

リポジトリストレージ証明書検証オプション(--repo-storage-verify-tls)

リポジトリストレージの証明書を検証します。

このオプションでは、ストレージ(例:S3、Azure)サーバーのTLS証明書の検証を有効/無効にできます。無効化は、テストや自己署名証明書を使用する場合に限ってください。

default: y
example: --no-repo1-storage-verify-tls

非推奨の名前:repo-azure-verify-tls, repo-s3-verify-ssl, repo-s3-verify-tls

リポジトリ対象時刻オプション(--repo-target-time)

リポジトリの対象時刻です。

対象時刻は、コマンドがバージョン管理されたストレージ上のリポジトリを読み取る際の時点を定義します。これにより、ある時点の状態のリポジトリを読み取り、ユーザーの誤操作やマルウェアによって削除または破損したデータをリカバリーできます。

S3、GCS、Azureはストレージのバージョン管理をサポートしますが、通常はデフォルトで有効になっていません。バージョン管理の有効化に加え、S3ではオブジェクトロック、GCSやAzureでは論理削除を有効にすると役立つ場合があります。

repo-target-timeオプションを指定する場合は、repoオプションも指定する必要があります。すべてのリポジトリ種類がバージョン管理をサポートするとは限らず、一般にリカバリーでは単一のリポジトリを対象とするのが妥当です。

ストレージのタイムスタンプとの比較は、指定したタイムスタンプ以下(<=)で行い、タイムスタンプにミリ秒を指定しても切り捨てられます。

example: --repo-target-time=2024-08-08 12:12:12+00

リポジトリ種別オプション(--repo-type)

リポジトリに使用するストレージの種類です。

次のリポジトリ種類をサポートします。

  • azure - Azure Blob Storage Service
  • cifs - posixと同様ですが、リンクとディレクトリのfsyncを無効にします
  • gcs - Google Cloud Storage
  • posix - Posix準拠のファイルシステム
  • s3 - AWS Simple Storage Service
  • sftp - Secure File Transfer Protocol

NFSマウントをposixリポジトリとして使用する場合、PostgreSQLのドキュメントに記載されたものと同じ規則がpgBackRestにも適用されます。データベースクラスターの作成 - ファイルシステム を参照してください。

default: posix
example: --repo1-type=cifs

4.11 - リストアコマンド(restore)

pgBackRestのrestoreコマンドのオプションと動作のリファレンス。

restoreコマンドは、デフォルトではバックアップが存在する最初のリポジトリから最新のバックアップを自動選択します(クイックスタート - バックアップのリストア を参照)。リポジトリの確認順序はpgbackrest.confによって決まります(例:repo2より先にrepo1を確認します)。特定のリポジトリから選択するには、--repoオプション(例:--repo=1)を指定できます。最新以外のバックアップが必要な場合は、--setオプションを指定できます。

PITR に --type=time または --type=lsn を指定する場合は、--target オプションで対象の時刻または LSN を指定する必要があります。--set を指定しない場合、設定済みのリポジトリを順に調べ、終了時刻が対象時刻より前のバックアップ、または終了 LSN が対象 LSN 以下のバックアップを選択します。一致するバックアップが見つからない場合、--type=time と --type=lsn のどちらでも pgBackRest はエラーを返し、最新のバックアップにフォールバックしません。xid など、その他の PITR の種類では、対象が最新のバックアップより前であれば --set オプションを指定する必要があります。詳細と例については、ポイントインタイムリカバリ を参照してください。

PostgreSQLの推奨に従い、レプリケーションスロットは含めません。詳細は、PostgreSQLドキュメントのデータディレクトリのバックアップ を参照してください。

コマンドオプション

アーカイブモードオプション(--archive-mode)

リストアしたクラスターでアーカイブを維持または無効にします。

このオプションでは、リストアしたクラスターのアーカイブを維持または無効にできます。作業のためにクラスターを昇格させる必要があるものの、新しいプライマリーにする意図がない場合に役立ちます。この場合、そのクラスターからWALをリポジトリに送信するのは適切ではありません。

次のモードをサポートします。

  • off - archive_mode=offを設定してアーカイブを無効にします。
  • preserve - 現在のarchive_mode設定を維持します。

注記:このオプションはPostgreSQL < 12では利用できません。

default: preserve
example: --archive-mode=off

データベース除外オプション(--db-exclude)

指定したデータベースを除外してリストアします。

除外したデータベースは、容量を節約しつつPostgreSQLがリカバリーを実行できるように、ゼロで埋めたスパースファイルとしてリストアします。リカバリー後、これらのデータベースにはアクセスできませんが、drop databaseコマンドで削除できます。--db-excludeオプションを複数回指定して、除外するデータベースを複数指定できます。

--db-includeオプションと組み合わせた場合、--db-excludeは標準のシステムデータベース(template0、template1、postgres)にのみ適用されます。

example: --db-exclude=db_main

対象データベースオプション(--db-include)

指定したデータベースのみをリストアします。

この機能では、選択したデータベースのみをリストアできます。明示的に含めなかったデータベースは、容量を節約しつつPostgreSQLがリカバリーを実行できるように、ゼロで埋めたスパースファイルとしてリストアします。リカバリー後、含めなかったデータベースにはアクセスできませんが、drop databaseコマンドで削除できます。

注記: 組み込みデータベース(template0、template1、postgres)は、明示的に除外しない限り常にリストアします。

--db-includeオプションを複数回指定して、含めるデータベースを複数指定できます。

詳細と注意事項は、選択したデータベースのリストア を参照してください。

example: --db-include=db_main

強制オプション(--force)

リストアを強制します。

このオプションを単独で使用すると、PostgreSQLのデータパスとテーブルスペースのパスを完全に上書きします。--deltaと併用すると、チェックサムの代わりにタイムスタンプ/サイズを用いた差分処理を実行します。

default: n
example: --force

すべてのシンボリックリンクをリストアします。

デフォルトでは、シンボリックリンクされたディレクトリとファイルは、$PGDATA内の通常のディレクトリとファイルとしてリストアします。元のバックアップを取得したシステムとは異なるシステムで、元のリンク先にシンボリックリンクをリストアするのは安全でない可能性があるためです。このオプションは、バックアップを取得した元のシステムと同じ状態ですべてのシンボリックリンクをリストアします。

default: n
example: --link-all

シンボリックリンクのリンク先を変更します。

リストア時に、シンボリックリンクのリンク先ファイルまたはパスを変更できます。バックアップを生成した元のシステムとはストレージ構成が異なるシステムへのリストアに役立ちます。

example: --link-map=pg_xlog=/data/xlog

リカバリー設定オプション(--recovery-option)

postgresql.auto.confまたはrecovery.confのオプションを設定します。

postgresql.auto.confまたはrecovery.confのオプションの詳細は、サーバーの設定 を参照してください(使用しているPostgreSQLバージョンを必ず選択してください)。このオプションは複数回使用できます。

PostgreSQL >= 12では、オプションをpostgresql.auto.confに書き込みます。それ以外のすべてのバージョンでは、recovery.confに書き込みます。

注記: restore_commandオプションは自動生成されますが、このオプションで上書きできます。pgBackRestが処理するように設計されているため、独自のrestore_commandを指定する場合は注意してください。リカバリー対象のオプション(recovery_target_name、recovery_target_timeなど)はpgBackRestが自動生成するため、このオプションで設定しないでください。

pgBackRestはpostgresql.auto.confまたはrecovery.confファイルを書き込んだ後にPostgreSQLを起動しないため、手動で再起動する前に、いつでもpostgresql.auto.confまたはrecovery.confを編集/確認できます。

example: --recovery-option=primary_conninfo=db.mydomain.com

バックアップセットオプション(--set)

リストアするバックアップセットです。

リストア対象のバックアップセットです。latestは最新のバックアップをリストアします。それ以外の場合は、リストアするバックアップの名前を指定します。

default: latest
example: --set=20150131-153358F_20150131-153401I

テーブルスペースマッピングオプション(--tablespace-map)

テーブルスペースを指定したディレクトリにリストアします。

リストア時にテーブルスペースを新しい場所に移動します。レプリカ上でテーブルスペースの場所が異なる場合や、アップグレード後のシステムのマウントポイントが異なる場合に役立ちます。

テーブルスペースの場所はpg_tablespaceに保存されていないため、テーブルスペースを移動しても問題ありません。ただし、テーブルスペースをdata_directoryに移動することは推奨せず、問題が生じる可能性があります。テーブルスペースの移動については、http://www.databasesoup.com/2013/11/moving-tablespaces.html が参考になります。

example: --tablespace-map=ts_01=/db/ts_01

全テーブルスペースマッピングオプション(--tablespace-map-all)

すべてのテーブルスペースを指定したディレクトリにリストアします。

デフォルトでは、テーブルスペースを元の場所にリストアします。この動作はtablespace-mapオプションでテーブルスペースごとに変更できますが、すべてのテーブルスペースを一度に新しいディレクトリに再マッピングする方が望ましい場合もあります。バックアップを生成した元のシステムとストレージ構成が異なる可能性がある、開発環境やステージング環境で特に役立ちます。

指定したパスは、バックアップ内のすべてのテーブルスペースを作成する際の親パスになります。

注意:

バックアップの開始後に作成されたテーブルスペースはマッピングされません。テーブルスペースのマッピングが必要な場合は、テーブルスペースの作成後に新しいバックアップを取得してください。

example: --tablespace-map-all=/data/tablespace

リカバリー対象オプション(--target)

リカバリーの対象です。

--typeがlsn、name、xid、timeの場合のリカバリー対象を定義します。対象が最新のバックアップより前で、--typeがtimeでもlsnでもない場合は、--setオプションでバックアップセットを指定してください。

example: --target=2015-01-30 14:15:11 EST

対象到達時の動作オプション(--target-action)

リカバリー対象に到達したときの動作です。

PostgreSQL 10以降のデフォルトであるhot_standby=onの場合、このオプションは、対象に到達したとき、またはアーカイブ内のWALが尽きたときのクラスターの動作を一貫して制御します。

PostgreSQL >= 12でhot_standby=offの場合、pauseはshutdownと同じ動作になります。PostgreSQL < 12でhot_standby=offの場合、pauseはpromoteと同じ動作になります。

次の動作をサポートします。

  • pause - リカバリー対象に到達したら一時停止します。
  • promote - リカバリー対象に到達したら昇格し、タイムラインを切り替えます。
  • shutdown - リカバリー対象に到達したらサーバーを停止します。(PostgreSQL >= 9.5)
default: pause
example: --target-action=promote

リカバリー対象除外オプション(--target-exclusive)

リカバリー対象に到達する直前で停止します。

対象へのリカバリーで対象自体を除外するかどうかを定義します(デフォルトでは含めます)。--typeがlsn、time、xidの場合にのみ有効です。たとえば、--type=xidかつ--target=1007の場合に--target-exclusiveを使用すると、トランザクション1007の内容を除外します。詳細は、PostgreSQLドキュメントのrecovery_target_inclusiveオプションを参照してください。

default: n
example: --no-target-exclusive

対象タイムラインオプション(--target-timeline)

タイムラインに沿ってリカバリーします。

詳細は、PostgreSQLドキュメントのrecovery_target_timelineを参照してください。

example: --target-timeline=3

種類オプション(--type)

リカバリーの種類です。

次のリカバリー種類をサポートします。

  • default - アーカイブストリームの末尾までリカバリーします。
  • immediate - データベースの一貫性が確保されるまでだけリカバリーします。
  • lsn - --targetで指定したLSN(Log Sequence Number)までリカバリーします。このオプションはPostgreSQL >= 10でのみサポートします。
  • name - --targetで指定したリストアポイントまでリカバリーします。
  • xid - --targetで指定したトランザクションIDまでリカバリーします。
  • time - --targetで指定した時刻までリカバリーします。
  • preserve - 既存のpostgresql.auto.confまたはrecovery.confファイルを維持します。
  • standby - postgresql.auto.confまたはrecovery.confファイルにstandby_mode=onを追加し、クラスターをスタンバイモードで起動させます。
  • none - postgresql.auto.confもrecovery.confも書き込まないため、PostgreSQLはpg_xlog/pg_walに存在するWALセグメントを使用して一貫性の確保を試みます。必要なWALセグメントを用意するか、archive-copy設定でバックアップに含めてください。

警告:

リカバリーの終了時にタイムラインが増加しないため、type=noneでのリカバリーは避けてください。たとえば、PostgreSQLが重複するWALのアーカイブを試みて拒否され、ディスクが満杯になり、PostgreSQLのパニックに至る可能性があります。また、pg_rewindなどのツールが正しく動作しなかったり、破損を引き起こしたりする可能性があります。

オフラインバックアップのデフォルトのリストアtypeはnoneです。これは、wal_level=minimalではポイントインタイムリカバリーができないためです。wal_level > minimalであればオフラインバックアップからもポイントインタイムリカバリーが可能なため、typeを明示的に設定した場合はその設定に従います。

default: default
example: --type=xid

一般オプション

rootでの実行許可オプション(--allow-root)

rootユーザーによるコマンドの実行を許可します。

デフォルトでは、ファイルの所有権を慎重に管理するように設計されたrestoreコマンドのみをrootユーザーで実行できます。ほかのコマンドをrootで実行すると、たとえばリポジトリ内にroot所有のファイルが作成され、PostgreSQLユーザーがアクセスできなくなって、後続のコマンドが失敗するおそれがあります。

それでもコマンドをrootで実行する場合は、このオプションを有効にします。ただし、リポジトリとPostgreSQLクラスターを所有するユーザーとしてpgBackRestを実行する方がはるかに適切です。

default: y
example: --allow-root

バッファーサイズオプション(--buffer-size)

I/O処理のバッファーサイズです。

コピー、圧縮、暗号化などの処理に使用するバッファーサイズです。使用するバッファーの数はオプションによって異なり、各処理で追加のメモリを使用する場合があります。たとえば、gz圧縮では256KiBのメモリを追加で使用する場合があります。

指定できる値は、16KiB、32KiB、64KiB、128KiB、256KiB、512KiB、1MiB、2MiB、4MiB、8MiB、16MiBです。

default: 1MiB
example: --buffer-size=2MiB

pgBackRestコマンドオプション(--cmd)

pgBackRestコマンドです。

pgBackRestは、たとえばrestoreコマンドがrestore_command設定を生成する際に、コマンド文字列を生成することがあります。この場合、cmdオプションを指定しない限り、pgBackRestプロセスの実行に使用したコマンドが使われます。

注意:

pgBackRestコマンドをラッパー経由で実行すると、予測できない動作を引き起こす可能性があるため、推奨しません。

default: [path of executed pgbackrest binary]
example: --cmd=/var/lib/pgsql/bin/pgbackrest_wrapper.sh

SSHクライアントコマンドオプション(--cmd-ssh)

SSHクライアントのコマンドです。

別のSSHクライアントを使用したい場合や、sshコマンドが$PATHに含まれていない場合に、使用するSSHクライアントコマンドを指定します。

default: ssh
example: --cmd-ssh=/usr/bin/ssh

ネットワーク圧縮レベルオプション(--compress-level-network)

ネットワークの圧縮レベルです。

compress-type=noneで、コマンドがリポジトリと同じホストで実行されない場合のネットワーク圧縮レベルを設定します。圧縮によってネットワークトラフィックを削減します。compress-typeがnoneでない場合は、ファイルを1回だけ圧縮するように、compress-level-network設定を無視して代わりにcompress-levelを使用します。

default: 1
allowed: [-5, 12]
example: --compress-level-network=1

設定ファイルオプション(--config)

pgBackRestの設定ファイルです。

デフォルトとは異なる設定ファイルを指定するには、このオプションを使用します。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --config=/conf/pgbackrest/pgbackrest.conf

追加設定パスオプション(--config-include-path)

追加のpgBackRest設定ファイルへのパスです。

指定した場所にある拡張子.confの設定ファイルをpgBackRest設定ファイルと連結し、1つの設定ファイルとして扱います。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --config-include-path=/conf/pgbackrest/conf.d

設定パスオプション(--config-path)

pgBackRest設定ファイルの基準パスです。

この設定は、--configと--config-include-pathの各オプションがコマンドラインで明示的に設定されていない場合に、それらのデフォルトの基準パスを上書きします。

たとえば、--config-path=/conf/pgbackrestだけを渡すと、--configのデフォルトは/conf/pgbackrest/pgbackrest.confに、--config-include-pathのデフォルトは/conf/pgbackrest/conf.dに設定されます。

default: CFGOPTDEF_CONFIG_PATH
example: --config-path=/conf/pgbackrest

差分処理オプション(--delta)

チェックサムを使用してリストアまたはバックアップします。

リストア時には、デフォルトでPostgreSQLのデータディレクトリとテーブルスペースディレクトリが存在し、空であることを想定します。このオプションは、チェックサムを使用して差分リストアを実行します。

バックアップ時には、このオプションによってタイムスタンプの代わりにチェックサムを使用し、ファイルをコピーするかどうかを判定します。

default: n
example: --delta

I/Oタイムアウトオプション(--io-timeout)

I/Oのタイムアウトです。

接続および読み取り/書き込み処理に使用する、秒単位のタイムアウトです。

読み取り/書き込み処理全体がこのタイムアウト内に完了する必要はありませんが、わずか1バイトでも、何らかの進展が必要です。

default: 1m
allowed: [100ms, 1h]
example: --io-timeout=120

ロックパスオプション(--lock-path)

ロックファイルを保存するパスです。

ロックパスは、pgBackRestが競合する処理の同時実行を防ぐためのロックファイルを作成する場所です。

default: /tmp/pgbackrest
example: --lock-path=/backup/db/lock

固定umaskオプション(--neutral-umask)

固定のumaskを使用します。

umaskを0000に設定し、リポジトリ内のファイルやディレクトリが適切な権限で作成されるようにします。デフォルトのディレクトリ権限は0750、ファイル権限は0640です。

代わりに実行ユーザーのumaskを使用するには、設定ファイルにneutral-umask=n、またはコマンドラインに--no-neutral-umaskを指定します。

default: y
example: --no-neutral-umask

プロセス優先度設定オプション(--priority)

プロセスの優先度を設定します。

カーネルのスケジューラーがプロセスに与える優先度(niceness)を定義します。正の値は優先度を下げ、負の値は優先度を上げます。通常、プロセスには自身の優先度を上げる権限がありません。

allowed: [-20, 19]
example: --priority=19

最大プロセス数オプション(--process-max)

圧縮/転送に使用する最大プロセス数です。

各プロセスが圧縮と転送を実行することでコマンドを高速化しますが、データベースのパフォーマンスに影響するほどprocess-maxを高く設定しないでください。

default: 1
allowed: [1, 999]
example: --process-max=4

プロトコルタイムアウトオプション(--protocol-timeout)

プロトコルのタイムアウトです。

ローカルまたはリモートのプロセスが、プロトコル層で新しいメッセージの受信を待つタイムアウトを秒単位で設定します。これにより、プロセスがメッセージを無期限に待ち続けることを防ぎます。

注記: protocol-timeoutオプションは、db-timeoutオプションより大きくする必要があります。

default: 31m
allowed: [100ms, 7d]
example: --protocol-timeout=630

キープアライブオプション(--sck-keep-alive)

キープアライブを有効にします。

ソケット接続でキープアライブメッセージを有効にします。

default: y
example: --no-sck-keep-alive

stanzaオプション(--stanza)

stanzaを定義します。

stanzaは、PostgreSQLデータベースクラスターの場所、バックアップ方法、アーカイブオプションなどを定義する設定です。ほとんどのデータベースサーバーにはPostgreSQLデータベースクラスターが1つだけ存在し、stanzaも1つになります。一方、バックアップサーバーには、バックアップが必要なデータベースクラスターごとにstanzaがあります。

stanzaにはプライマリークラスターにちなんだ名前を付けたくなりますが、クラスターに含まれるデータベースを表す名前の方が適しています。stanza名はプライマリーとすべてのレプリカで使用するため、mainやprodなどのローカルクラスター名よりも、appやdwなど、クラスターの実際の役割を表す名前を選ぶ方が適切です。

example: --stanza=main

キープアライブ回数オプション(--tcp-keep-alive-count)

キープアライブの回数です。

接続が切れたと判断するまでに、応答がなくても許容するTCPキープアライブメッセージの数を指定します。

このオプションは、TCP_KEEPCNTソケットオプションをサポートするシステムで利用できます。

allowed: [1, 32]
example: --tcp-keep-alive-count=3

キープアライブ待機時間オプション(--tcp-keep-alive-idle)

キープアライブの待機時間です。

ネットワーク通信がない状態で、オペレーティングシステムがTCPキープアライブメッセージを送信するまでの時間を秒単位で指定します。

このオプションは、TCP_KEEPIDLEソケットオプションをサポートするシステムで利用できます。

allowed: [1, 3600]
example: --tcp-keep-alive-idle=60

キープアライブ間隔オプション(--tcp-keep-alive-interval)

キープアライブの送信間隔です。

応答のないTCPキープアライブメッセージを再送信するまでの時間を秒単位で指定します。

このオプションは、TCP_KEEPINTVLソケットオプションをサポートするシステムで利用できます。

allowed: [1, 900]
example: --tcp-keep-alive-interval=30

TLSv1.2暗号スイートオプション(--tls-cipher-12)

許可するTLSv1.2暗号スイートです。

pgBackRestクライアントとサーバー間のすべてのTLS接続は暗号化されます。デフォルトでは、オブジェクトストア(例:S3)への接続も暗号化されます。

注記: どのトランスポート接続でも、セキュリティーの最低要件はTLSv1.2です。

必要に応じて、受け入れる暗号スイートを調整できます。特別なセキュリティー要件がなければ、例に示す値が妥当な選択です。未設定(デフォルト)の場合は、使用するOpenSSLライブラリのデフォルトが適用されます。

example: --tls-cipher-12=HIGH:MEDIUM:+3DES:!aNULL

TLSv1.3暗号スイートオプション(--tls-cipher-13)

許可するTLSv1.3暗号スイートです。

pgBackRestクライアントとサーバー間のすべてのTLS接続は暗号化されます。デフォルトでは、オブジェクトストア(例:S3)への接続も暗号化されます。

注記: どのトランスポート接続でも、セキュリティーの最低要件はTLSv1.2です。

必要に応じて、受け入れる暗号スイートを調整できます。未設定(デフォルト)の場合は、使用するOpenSSLライブラリのデフォルトが適用されます。

example: --tls-cipher-13=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256

ログオプション

コンソールログレベルオプション(--log-level-console)

コンソールに出力するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: warn
example: --log-level-console=error

ファイルログレベルオプション(--log-level-file)

ファイルに記録するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: info
example: --log-level-file=debug

標準エラーログレベルオプション(--log-level-stderr)

stderrに出力するログのレベルです。

stdout(log-level-consoleで指定)の代わりにstderrへ出力するログレベルを指定します。stderrにはタイムスタンプとプロセスを出力しません。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: off
example: --log-level-stderr=error

ログパスオプション(--log-path)

ログファイルを保存するパスです。

ログパスは、pgBackRestがログファイルを保存する場所です。log-level-file=offの場合、ログパスは不要です。

default: /var/log/pgbackrest
example: --log-path=/backup/db/log

サブプロセスログオプション(--log-subprocess)

サブプロセスでのログ記録を有効にします。

このプロセスが作成するすべてのサブプロセスで、log-level-fileで指定したログレベルによるファイルへのログ記録を有効にします。

default: n
example: --log-subprocess

ログタイムスタンプオプション(--log-timestamp)

ログのタイムスタンプを有効にします。

コンソールとファイルのログでタイムスタンプを有効にします。このオプションは、ドキュメント生成などの特殊な状況では無効にします。

default: y
example: --no-log-timestamp

メンテナー向けオプション

PostgreSQLバージョン強制指定オプション(--pg-version-force)

PostgreSQLのバージョンを強制指定します。

pg_controlまたはWALヘッダーを読み取って自動検出したバージョンの代わりに、指定したPostgreSQLバージョンを使用します。これは主に、これらの値がリリース版とは異なるPostgreSQLのフォークや開発版で役立ちます。PostgreSQLがserver_version_numで報告するバージョンは、強制指定したバージョンと一致する必要があります。

警告:

このオプションは慎重に使用してください。pg_controlとWALヘッダーは引き続き、指定バージョンで想定される形式、つまり公式のオープンソース版PostgreSQLの形式で読み取られます。フォークや開発版が、pgBackRestの依存するフィールドの形式を変更していると、予期しない動作が生じます。一般に、このオプションが想定どおりに動作するのは、フォークが独自の構造体メンバーをすべて標準のPostgreSQLメンバーの後ろに追加している場合に限られます。

example: --pg-version-force=15

リポジトリオプション

リポジトリ指定オプション(--repo)

リポジトリを指定します。

コマンドの操作対象となるリポジトリを指定します。

たとえば、このオプションを使用すると、pgBackRestに選択させずに、特定のリポジトリからリストアできます。

allowed: [1, 256]
example: --repo=1

Azureリポジトリコンテナーオプション(--repo-azure-container)

Azureリポジトリのコンテナーです。

リポジトリの保存に使用するAzureコンテナーです。

repo-path=/を設定するとpgBackRestリポジトリをコンテナーのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのAzureが生成するコンテンツもコンテナーに保存できるようにすることを推奨します。

example: --repo1-azure-container=pg-backup

Azureリポジトリキー種別オプション(--repo-azure-key-type)

Azureリポジトリのキー種別です。

認可には次の種別をサポートします。

  • shared - 共有キー
  • sas - 共有アクセス署名
  • auto - AzureマネージドIDを使用して自動的に認可
default: shared
example: --repo1-azure-key-type=sas

AzureリポジトリURI形式オプション(--repo-azure-uri-style)

AzureのURI形式です。

次のURI形式をサポートします。

  • host - account.endpointホストに接続します。
  • path - endpointホストに接続し、URIの先頭にアカウントを付加します。
default: host
example: --repo1-azure-uri-style=path

リポジトリ暗号方式オプション(--repo-cipher-type)

リポジトリの暗号化に使用する暗号方式です。

次の暗号方式をサポートします。

  • none - リポジトリを暗号化しません
  • aes-256-cbc - 鍵長256ビットのAdvanced Encryption Standard

リポジトリの種類(例:S3)が暗号化をサポートしていても、暗号化は常にクライアント側で実行されます。

default: none
example: --repo1-cipher-type=aes-256-cbc

GCSリポジトリバケットオプション(--repo-gcs-bucket)

GCSリポジトリのバケットです。

リポジトリの保存に使用するGCSバケットです。

repo-path=/を設定するとpgBackRestリポジトリをバケットのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのGCSが生成するコンテンツもバケットに保存できるようにすることを推奨します。

example: --repo1-gcs-bucket=/pg-backup

GCSリポジトリエンドポイントオプション(--repo-gcs-endpoint)

GCSリポジトリのエンドポイントです。

ストレージサービスへの接続に使用するエンドポイントです。ローカルのGCSサーバーや別のエンドポイントを使用するように変更できます。

default: storage.googleapis.com
example: --repo1-gcs-endpoint=localhost

GCSリポジトリキー種別オプション(--repo-gcs-key-type)

GCSリポジトリのキー種別です。

認可には次の種別をサポートします。

  • auto - インスタンスのサービスアカウントを使用して認可します。
  • service - ローカルに保存したキーでサービスアカウントを使用します。
  • token - fakegcsなどを使用するローカルテスト用です。

repo-gcs-key-type=serviceの場合、認証トークンの更新時に認証情報を再読み込みします。

default: service
example: --repo1-gcs-key-type=auto

GCSリポジトリプロジェクトIDオプション(--repo-gcs-user-project)

GCSのプロジェクトIDです。

リクエストの課金先を決定するために使用するGCSプロジェクトIDです。

example: --repo1-gcs-user-project=my-project

リポジトリホストオプション(--repo-host)

リモート操作時のリポジトリホストです。

ローカルにマウントされたファイルシステムにバックアップおよびアーカイブする場合、この設定は不要です。

example: --repo1-host=repo1.domain.com

非推奨の名前:backup-host

リポジトリホスト認証局ファイルオプション(--repo-host-ca-file)

リポジトリホストの認証局ファイルです。

リポジトリホストへの接続に、システムのデフォルト以外のCAファイルを使用します。

example: --repo1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt

リポジトリホスト認証局パスオプション(--repo-host-ca-path)

リポジトリホストの認証局パスです。

リポジトリホストへの接続に、システムのデフォルト以外のCAパスを使用します。

example: --repo1-host-ca-path=/etc/pki/tls/certs

リポジトリホスト証明書ファイルオプション(--repo-host-cert-file)

リポジトリホストの証明書ファイルです。

クライアントの身元を証明するためにリポジトリホストに送信します。

example: --repo1-host-cert-file=/path/to/client.crt

リポジトリホストコマンドオプション(--repo-host-cmd)

リポジトリホストのpgBackRestコマンドです。

pgBackRestコマンドのパスがローカルホストとリポジトリホストで異なる場合にのみ必要です。未定義の場合、リポジトリホストのコマンドにはローカルと同じコマンドを設定します。

default: [path of executed pgbackrest binary]
example: --repo1-host-cmd=/usr/lib/backrest/bin/pgbackrest

非推奨の名前:backup-cmd

リポジトリホスト設定オプション(--repo-host-config)

pgBackRestリポジトリホストの設定ファイルです。

リポジトリホスト上の設定ファイルの場所を設定します。リポジトリホストの設定ファイルがローカルの設定ファイルと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --repo1-host-config=/conf/pgbackrest/pgbackrest.conf

非推奨の名前:backup-config

リポジトリホスト追加設定パスオプション(--repo-host-config-include-path)

pgBackRestリポジトリホストの追加設定パスです。

リポジトリホスト上の追加設定パスの場所を設定します。リポジトリホストの追加設定パスがローカルの追加設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --repo1-host-config-include-path=/conf/pgbackrest/conf.d

リポジトリホスト設定パスオプション(--repo-host-config-path)

pgBackRestリポジトリホストの設定パスです。

リポジトリホスト上の設定パスの場所を設定します。リポジトリホストの設定パスがローカルの設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH
example: --repo1-host-config-path=/conf/pgbackrest

リポジトリホストキーファイルオプション(--repo-host-key-file)

リポジトリホストのキーファイルです。

クライアント証明書が所有者によって送信されたことを証明します。

example: --repo1-host-key-file=/path/to/client.key

リポジトリホストポートオプション(--repo-host-port)

repo-hostが設定されている場合のリポジトリホストのポートです。

リポジトリホストのプロトコルにデフォルト以外のポートを指定するには、このオプションを使用します。

注記: repo-host-type=sshの場合、repo-host-portにデフォルト値はありません。この場合、ポートはcmd-sshで指定したコマンドの設定に従います。

default (depending on repo-host-type):
    tls - 8432

allowed: [0, 65535]
example: --repo1-host-port=25

非推奨の名前:backup-ssh-port

リポジトリホストプロトコル種別オプション(--repo-host-type)

リポジトリホストのプロトコル種別です。

次のプロトコル種別をサポートします。

  • ssh - Secure Shell。
  • tls - pgBackRest TLSサーバー。
default: ssh
example: --repo1-host-type=tls

リポジトリホストユーザーオプション(--repo-host-user)

repo-hostが設定されている場合のリポジトリホストのユーザーです。

リポジトリホスト上の操作に使用するユーザーを定義します。postgresユーザーではなく、pgbackrestなどの別のユーザーを使用することを推奨します。リポジトリホストでPostgreSQLを実行する場合は、postgresユーザーをpgbackrestグループに追加することで、リポジトリの内容を誤って破損させずに読み取り権限を与えられます。

default: pgbackrest
example: --repo1-host-user=repo-user

非推奨の名前:backup-user

リポジトリパスオプション(--repo-path)

バックアップとアーカイブを保存するパスです。

リポジトリは、pgBackRestがバックアップを保存し、WALセグメントをアーカイブする場所です。

必要な容量を事前に見積もるのは難しい場合があります。まずいくつかバックアップを取得し、各種類(full/incr/diff)のバックアップサイズを記録して、1日当たりに生成されるWALの量を測定するのが最善です。これにより、必要な容量のおおよその見当が付きます。ただし、データベースの変化に伴い、必要量も時間とともに変わる可能性があります。

default: /var/lib/pgbackrest
example: --repo1-path=/backup/db/backrest

S3リポジトリバケットオプション(--repo-s3-bucket)

S3リポジトリのバケットです。

リポジトリの保存に使用するS3バケットです。

repo-path=/を設定するとpgBackRestリポジトリをバケットのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのAWSが生成するコンテンツもバケットに保存できるようにすることを推奨します。

example: --repo1-s3-bucket=pg-backup

S3リポジトリエンドポイントオプション(--repo-s3-endpoint)

S3リポジトリのエンドポイントです。

選択したリージョンに対して有効なAWSエンドポイントを使用してください。

独自の構成やテスト構成では、repo-storage-ca-file、repo-storage-ca-path、repo-storage-host、repo-storage-port、repo-storage-verify-tlsの各オプションが役立つ場合があります。

example: --repo1-s3-endpoint=s3.amazonaws.com

S3リポジトリキー種別オプション(--repo-s3-key-type)

S3リポジトリのキー種別です。

次の種別をサポートします。

  • shared - 共有キー
  • auto - 一時認証情報を自動取得
  • web-id - ウェブID認証情報を自動取得
  • pod-id - EKS Pod Identityの認証情報を自動取得
  • process - プロセスを実行して認証情報を取得
default: shared
example: --repo1-s3-key-type=auto

S3リポジトリKMSキーIDオプション(--repo-s3-kms-key-id)

S3リポジトリのKMSキーです。

指定したAWS Key Management Serviceのキーを使用して、S3のサーバー側暗号化を有効にします。

example: --repo1-s3-kms-key-id=bceb4f13-6939-4be3-910d-df54dee817b7

S3認証プロセスコマンドオプション(--repo-s3-process-cmd)

S3の認証プロセスコマンドです。

一時的なS3認証情報を取得するために実行するコマンド(および任意の引数)です。リストの最初の要素がコマンドで、残りの要素はパラメーターとして渡します。

プロセスは、AccessKeyId、SecretAccessKey、SessionToken、Expirationフィールドを含むJSONを出力する必要があります。認証情報は有効期限の前に自動更新されます。形式の詳細は、プロセス認証情報プロバイダー を参照してください。

example: --repo1-s3-process-cmd=/usr/local/bin/get-credentials --repo1-s3-process-cmd=--role --repo1-s3-process-cmd=my-role

S3リポジトリリージョンオプション(--repo-s3-region)

S3リポジトリのリージョンです。

バケットを作成したAWSリージョンです。

example: --repo1-s3-region=us-east-1

S3リポジトリのリクエスタ支払いオプション(--repo-s3-requester-pays)

S3リポジトリのリクエスタ支払いです。

S3のリクエスタ支払いを有効にします。

default: n
example: --no-repo1-s3-requester-pays

S3リポジトリロールオプション(--repo-s3-role)

S3リポジトリのロールです。

repo-s3-key-type=autoの場合に、一時認証情報の取得に使用するAWSロール名(完全なARNではありません)です。

example: --repo1-s3-role=authrole

S3リポジトリサービスオプション(--repo-s3-service)

S3の署名サービスです。

SigV4認証で使用するS3署名サービスです。標準のS3エンドポイントでは、デフォルトはs3です。S3 Outpostsエンドポイントを使用する場合は、s3-outpostsに設定します。

default: s3
example: --repo1-s3-service=s3-outposts

S3リポジトリSTSエンドポイントオプション(--repo-s3-sts-host)

S3リポジトリのSTSエンドポイントです。

repo-s3-key-type=web-idを設定した場合に、一時認証情報の取得に使用するSTSエンドポイントです。リージョン別STSを使用するには、リージョン別エンドポイント(例:sts.us-east-1.amazonaws.com)を設定します。GovCloudや中国リージョンで必要になる場合や、レイテンシーを低減するために使用する場合があります。

default: sts.amazonaws.com
example: --repo1-s3-sts-host=sts.us-east-1.amazonaws.com

S3リポジトリURI形式オプション(--repo-s3-uri-style)

S3のURI形式です。

次のURI形式をサポートします。

  • host - bucket.endpointホストに接続します。
  • path - endpointホストに接続し、URIの先頭にバケットを付加します。
default: host
example: --repo1-s3-uri-style=path

SFTPリポジトリホストオプション(--repo-sftp-host)

SFTPリポジトリのホストです。

リポジトリが存在するSFTPホストです。

example: --repo1-sftp-host=sftprepo.domain

SFTPリポジトリホストフィンガープリントオプション(--repo-sftp-host-fingerprint)

SFTPリポジトリホストのフィンガープリントです。

SFTPリポジトリホストのフィンガープリントの生成方法は、repo-sftp-host-key-hash-typeと一致させてください。awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -bでフィンガープリントを生成します。sshホストキーは通常、/etc/sshディレクトリにあります。

example: --repo1-sftp-host-fingerprint=f84e172dfead7aeeeae6c1fdfb5aa8cf

SFTPホストキー確認方式オプション(--repo-sftp-host-key-check-type)

SFTPのホストキー確認方式です。

次のSFTPホストキー確認方式をサポートします。

  • strict - pgBackRestは~/.ssh/known_hostsファイルにホストキーを自動追加せず、ホストキーが変更されたホスト、または既知のホストファイルで見つからないホストへの接続を拒否します。このオプションでは、新しいホストをすべて手動で追加する必要があります。
  • accept-new - pgBackRestは新しいホストキーをユーザーの既知のホストファイルに自動追加しますが、ホストキーが変更されたホストへの接続は許可しません。
  • fingerprint - pgBackRestは、repo-sftp-host-fingerprintオプションで指定したフィンガープリントとホストキーを照合します。
  • none - ホストキーを確認しません。
default: strict
example: --repo1-sftp-host-key-check-type=accept-new

SFTPリポジトリホストキーハッシュ種別オプション(--repo-sftp-host-key-hash-type)

SFTPリポジトリのホストキーハッシュ種別です。

SFTPリポジトリのホストキーハッシュ種別です。SSHの開始時に、リモートシステムのホストキーのダイジェスト計算に使用するハッシュ種別を指定します。新しいバージョンのlibssh2は、md5とsha1に加えてsha256もサポートします。

example: --repo1-sftp-host-key-hash-type=sha256

SFTPリポジトリホストポートオプション(--repo-sftp-host-port)

SFTPリポジトリホストのポートです。

SFTPリポジトリホストのポートです。

default: 22
allowed: [1, 65535]
example: --repo1-sftp-host-port=22

SFTPリポジトリホストユーザーオプション(--repo-sftp-host-user)

SFTPリポジトリホストのユーザーです。

リポジトリの保存に使用するホスト上のユーザーです。

example: --repo1-sftp-host-user=pg-backup

SFTP既知ホストファイルオプション(--repo-sftp-known-host)

SFTPの既知のホストファイルです。

認証時に一致するSFTPホストを探す既知のホストファイルです。未指定の場合、pgBackRestはデフォルトで~/.ssh/known_hosts、~/.ssh/known_hosts2、/etc/ssh/ssh_known_hosts、/etc/ssh/ssh_known_hosts2を検索します。1つ以上のファイルパスを設定した場合は、それらを検索して一致を確認します。ファイルパスは絶対パス、または先頭がチルダのパスである必要があります。repo-sftp-known-hostオプションを複数回指定することで、検索する既知のホストファイルを複数指定できます。既知のホストファイルによる確認を使用するには、repo-sftp-host-fingerprintを指定してはいけません。repo-sftp-host-check-typeオプションも参照してください。

example: --repo1-sftp-known-host=/home/postgres/.ssh/known_hosts

SFTPリポジトリ秘密鍵ファイルオプション(--repo-sftp-private-key-file)

SFTPの秘密鍵ファイルです。

認証に使用するSFTP秘密鍵ファイルです。

example: --repo1-sftp-private-key-file=~/.ssh/id_ed25519

SFTPリポジトリ公開鍵ファイルオプション(--repo-sftp-public-key-file)

SFTPの公開鍵ファイルです。

認証に使用するSFTP公開鍵ファイルです。OpenSSLに対してコンパイルした場合は任意ですが、別のライブラリに対してコンパイルした場合は必須です。

example: --repo1-sftp-public-key-file=~/.ssh/id_ed25519.pub

リポジトリストレージCAファイルオプション(--repo-storage-ca-file)

リポジトリストレージのCAファイルです。

ストレージ(例:S3、Azure)の証明書に、システムのデフォルト以外のCAファイルを使用します。

example: --repo1-storage-ca-file=/etc/pki/tls/certs/ca-bundle.crt

非推奨の名前:repo-azure-ca-file, repo-s3-ca-file

リポジトリストレージTLS CAパスオプション(--repo-storage-ca-path)

リポジトリストレージのCAパスです。

ストレージ(例:S3、Azure)の証明書に、システムのデフォルト以外のCAパスを使用します。

example: --repo1-storage-ca-path=/etc/pki/tls/certs

非推奨の名前:repo-azure-ca-path, repo-s3-ca-path

リポジトリストレージホストオプション(--repo-storage-host)

リポジトリストレージのホストです。

ストレージ(例:S3、Azure)のエンドポイントとは異なるホストに接続します。通常はテストに使用します。

example: --repo1-storage-host=127.0.0.1

非推奨の名前:repo-azure-host, repo-s3-host

リポジトリストレージポートオプション(--repo-storage-port)

リポジトリストレージのポートです。

ストレージ(例:S3、Azure)のエンドポイント(ホストを指定した場合はそのホスト)への接続に使用するポートです。

default: 443
allowed: [1, 65535]
example: --repo1-storage-port=9000

非推奨の名前:repo-azure-port, repo-s3-port

リポジトリストレージタグオプション(--repo-storage-tag)

リポジトリストレージのタグです。

リポジトリがオブジェクトストア(例:S3)の場合に、オブジェクトに付加するタグを指定します。このオプションを繰り返して、複数のタグを追加できます。

pgBackRestにはこれらのタグを変更する機能がないため、リポジトリ全体でタグを統一するには、stanza-createを実行する前に正しく設定してください。

example: --repo1-storage-tag=key1=value1

リポジトリストレージアップロードチャンクサイズオプション(--repo-storage-upload-chunk-size)

リポジトリストレージのアップロードチャンクサイズです。

S3などのオブジェクトストアでは、ファイルが大きすぎてメモリに格納できない場合に、チャンクに分けてアップロードできます。ファイルをメモリに格納できる場合でも、アップロードに使用するメモリ量を制限する方がメモリ効率は高くなります。

チャンクサイズを大きくすると、アップロードリクエストを最小限に抑え、チャンク分割せずに1回のリクエストでアップロードできるファイルが増えるため、一般にパフォーマンスが向上します。一方、メモリ使用量は増加します。チャンクバッファーはプロセスごとに割り当てる必要があるため、process-maxの値が大きいほど、全体のメモリ消費量も増えます。

有効なチャンクサイズは、ストレージの種類やプラットフォームによって異なります。たとえば、AWS S3の最小チャンクサイズは5MiBです。チャンクサイズの呼び方もストレージの種類によって異なるため、最小値/最大値を調べる際は、AWS S3では「part size」、GCSでは「chunk size」、Azureでは「block size」を使用してください。

ファイルが1GiB(PostgreSQLがデフォルトで作成する最大サイズ)より大きい場合、ファイルのアップロードを完了するために、許容される最大値までチャンクサイズを段階的に増やします。

default (depending on repo-type):
    azure - 4MiB
    gcs - 4MiB
    s3 - 5MiB

allow range (depending on repo-type):
    azure - [4MiB, 1GiB]
    gcs - [4MiB, 1GiB]
    s3 - [5MiB, 1GiB]

example: --repo1-storage-upload-chunk-size=16MiB

リポジトリストレージ証明書検証オプション(--repo-storage-verify-tls)

リポジトリストレージの証明書を検証します。

このオプションでは、ストレージ(例:S3、Azure)サーバーのTLS証明書の検証を有効/無効にできます。無効化は、テストや自己署名証明書を使用する場合に限ってください。

default: y
example: --no-repo1-storage-verify-tls

非推奨の名前:repo-azure-verify-tls, repo-s3-verify-ssl, repo-s3-verify-tls

リポジトリ対象時刻オプション(--repo-target-time)

リポジトリの対象時刻です。

対象時刻は、コマンドがバージョン管理されたストレージ上のリポジトリを読み取る際の時点を定義します。これにより、ある時点の状態のリポジトリを読み取り、ユーザーの誤操作やマルウェアによって削除または破損したデータをリカバリーできます。

S3、GCS、Azureはストレージのバージョン管理をサポートしますが、通常はデフォルトで有効になっていません。バージョン管理の有効化に加え、S3ではオブジェクトロック、GCSやAzureでは論理削除を有効にすると役立つ場合があります。

repo-target-timeオプションを指定する場合は、repoオプションも指定する必要があります。すべてのリポジトリ種類がバージョン管理をサポートするとは限らず、一般にリカバリーでは単一のリポジトリを対象とするのが妥当です。

ストレージのタイムスタンプとの比較は、指定したタイムスタンプ以下(<=)で行い、タイムスタンプにミリ秒を指定しても切り捨てられます。

example: --repo-target-time=2024-08-08 12:12:12+00

リポジトリ種別オプション(--repo-type)

リポジトリに使用するストレージの種類です。

次のリポジトリ種類をサポートします。

  • azure - Azure Blob Storage Service
  • cifs - posixと同様ですが、リンクとディレクトリのfsyncを無効にします
  • gcs - Google Cloud Storage
  • posix - Posix準拠のファイルシステム
  • s3 - AWS Simple Storage Service
  • sftp - Secure File Transfer Protocol

NFSマウントをposixリポジトリとして使用する場合、PostgreSQLのドキュメントに記載されたものと同じ規則がpgBackRestにも適用されます。データベースクラスターの作成 - ファイルシステム を参照してください。

default: posix
example: --repo1-type=cifs

stanzaオプション

PostgreSQLパスオプション(--pg-path)

PostgreSQLのデータディレクトリです。

PostgreSQLが報告するdata_directoryと同じ値を設定してください。この値はさまざまな場所から読み取れますが、リストアやオフラインバックアップ時にそれらを利用できない場合に備えて、設定しておくことが賢明です。

pg-pathオプションは、オンラインバックアップのたびにPostgreSQLが報告する値と照合されるため、常に最新の値であるはずです。

example: --pg1-path=/data/db

非推奨の名前:db-path

4.12 - サーバーコマンド(server)

pgBackRestのserverコマンドのオプションと動作のリファレンス。

pgBackRestサーバーは、SSHプロトコルを使用せずにリモートホストにアクセスできるようにします。

コマンドオプション

TLSサーバーアドレスオプション(--tls-server-address)

TLSサーバーのアドレスです。

サーバーがクライアントのリクエストを待ち受けるIPアドレスです。

default: localhost
example: --tls-server-address=*

TLSサーバー認可クライアントオプション(--tls-server-auth)

TLSサーバーで認可するクライアントです。

サーバーはクライアントの証明書を検証し、証明書のCN(Common Name)をtls-server-authオプションでサーバーに設定した一覧と照合することで、クライアントを認可します。

tls-server-authオプションにカンマ区切りの一覧を指定すると、クライアントのCNを必要な数のstanzaに対して認可できます。tls-server-auth=client-cn=*を指定すると、すべてのstanzaに対して認可できます。クライアントのCNにワイルドカードは指定できません。

example: --tls-server-auth=client-cn=stanza1,stanza2

TLSサーバー認証局オプション(--tls-server-ca-file)

TLSサーバーの認証局です。

クライアント証明書が信頼できる認証局によって署名されていることを確認します。

example: --tls-server-ca-file=/path/to/server.ca

TLSサーバー証明書オプション(--tls-server-cert-file)

TLSサーバーの証明書ファイルです。

サーバーの身元を示すためにクライアントに送信します。

example: --tls-server-cert-file=/path/to/server.crt

TLSサーバーキーオプション(--tls-server-key-file)

TLSサーバーのキーファイルです。

サーバー証明書が所有者によって送信されたことを証明します。

example: --tls-server-key-file=/path/to/server.key

TLSサーバーポートオプション(--tls-server-port)

TLSサーバーのポートです。

サーバーがクライアントのリクエストを待ち受けるポートです。

default: 8432
allowed: [1, 65535]
example: --tls-server-port=8000

一般オプション

rootでの実行許可オプション(--allow-root)

rootユーザーによるコマンドの実行を許可します。

デフォルトでは、ファイルの所有権を慎重に管理するように設計されたrestoreコマンドのみをrootユーザーで実行できます。ほかのコマンドをrootで実行すると、たとえばリポジトリ内にroot所有のファイルが作成され、PostgreSQLユーザーがアクセスできなくなって、後続のコマンドが失敗するおそれがあります。

それでもコマンドをrootで実行する場合は、このオプションを有効にします。ただし、リポジトリとPostgreSQLクラスターを所有するユーザーとしてpgBackRestを実行する方がはるかに適切です。

default: n
example: --allow-root

バッファーサイズオプション(--buffer-size)

I/O処理のバッファーサイズです。

コピー、圧縮、暗号化などの処理に使用するバッファーサイズです。使用するバッファーの数はオプションによって異なり、各処理で追加のメモリを使用する場合があります。たとえば、gz圧縮では256KiBのメモリを追加で使用する場合があります。

指定できる値は、16KiB、32KiB、64KiB、128KiB、256KiB、512KiB、1MiB、2MiB、4MiB、8MiB、16MiBです。

default: 1MiB
example: --buffer-size=2MiB

設定ファイルオプション(--config)

pgBackRestの設定ファイルです。

デフォルトとは異なる設定ファイルを指定するには、このオプションを使用します。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --config=/conf/pgbackrest/pgbackrest.conf

追加設定パスオプション(--config-include-path)

追加のpgBackRest設定ファイルへのパスです。

指定した場所にある拡張子.confの設定ファイルをpgBackRest設定ファイルと連結し、1つの設定ファイルとして扱います。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --config-include-path=/conf/pgbackrest/conf.d

設定パスオプション(--config-path)

pgBackRest設定ファイルの基準パスです。

この設定は、--configと--config-include-pathの各オプションがコマンドラインで明示的に設定されていない場合に、それらのデフォルトの基準パスを上書きします。

たとえば、--config-path=/conf/pgbackrestだけを渡すと、--configのデフォルトは/conf/pgbackrest/pgbackrest.confに、--config-include-pathのデフォルトは/conf/pgbackrest/conf.dに設定されます。

default: CFGOPTDEF_CONFIG_PATH
example: --config-path=/conf/pgbackrest

I/Oタイムアウトオプション(--io-timeout)

I/Oのタイムアウトです。

接続および読み取り/書き込み処理に使用する、秒単位のタイムアウトです。

読み取り/書き込み処理全体がこのタイムアウト内に完了する必要はありませんが、わずか1バイトでも、何らかの進展が必要です。

default: 1m
allowed: [100ms, 1h]
example: --io-timeout=120

プロセス優先度設定オプション(--priority)

プロセスの優先度を設定します。

カーネルのスケジューラーがプロセスに与える優先度(niceness)を定義します。正の値は優先度を下げ、負の値は優先度を上げます。通常、プロセスには自身の優先度を上げる権限がありません。

allowed: [-20, 19]
example: --priority=19

プロトコルタイムアウトオプション(--protocol-timeout)

プロトコルのタイムアウトです。

ローカルまたはリモートのプロセスが、プロトコル層で新しいメッセージの受信を待つタイムアウトを秒単位で設定します。これにより、プロセスがメッセージを無期限に待ち続けることを防ぎます。

注記: protocol-timeoutオプションは、db-timeoutオプションより大きくする必要があります。

default: 31m
allowed: [100ms, 7d]
example: --protocol-timeout=630

キープアライブオプション(--sck-keep-alive)

キープアライブを有効にします。

ソケット接続でキープアライブメッセージを有効にします。

default: y
example: --no-sck-keep-alive

キープアライブ回数オプション(--tcp-keep-alive-count)

キープアライブの回数です。

接続が切れたと判断するまでに、応答がなくても許容するTCPキープアライブメッセージの数を指定します。

このオプションは、TCP_KEEPCNTソケットオプションをサポートするシステムで利用できます。

allowed: [1, 32]
example: --tcp-keep-alive-count=3

キープアライブ待機時間オプション(--tcp-keep-alive-idle)

キープアライブの待機時間です。

ネットワーク通信がない状態で、オペレーティングシステムがTCPキープアライブメッセージを送信するまでの時間を秒単位で指定します。

このオプションは、TCP_KEEPIDLEソケットオプションをサポートするシステムで利用できます。

allowed: [1, 3600]
example: --tcp-keep-alive-idle=60

キープアライブ間隔オプション(--tcp-keep-alive-interval)

キープアライブの送信間隔です。

応答のないTCPキープアライブメッセージを再送信するまでの時間を秒単位で指定します。

このオプションは、TCP_KEEPINTVLソケットオプションをサポートするシステムで利用できます。

allowed: [1, 900]
example: --tcp-keep-alive-interval=30

TLSv1.2暗号スイートオプション(--tls-cipher-12)

許可するTLSv1.2暗号スイートです。

pgBackRestクライアントとサーバー間のすべてのTLS接続は暗号化されます。デフォルトでは、オブジェクトストア(例:S3)への接続も暗号化されます。

注記: どのトランスポート接続でも、セキュリティーの最低要件はTLSv1.2です。

必要に応じて、受け入れる暗号スイートを調整できます。特別なセキュリティー要件がなければ、例に示す値が妥当な選択です。未設定(デフォルト)の場合は、使用するOpenSSLライブラリのデフォルトが適用されます。

example: --tls-cipher-12=HIGH:MEDIUM:+3DES:!aNULL

TLSv1.3暗号スイートオプション(--tls-cipher-13)

許可するTLSv1.3暗号スイートです。

pgBackRestクライアントとサーバー間のすべてのTLS接続は暗号化されます。デフォルトでは、オブジェクトストア(例:S3)への接続も暗号化されます。

注記: どのトランスポート接続でも、セキュリティーの最低要件はTLSv1.2です。

必要に応じて、受け入れる暗号スイートを調整できます。未設定(デフォルト)の場合は、使用するOpenSSLライブラリのデフォルトが適用されます。

example: --tls-cipher-13=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256

ログオプション

コンソールログレベルオプション(--log-level-console)

コンソールに出力するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: warn
example: --log-level-console=error

ファイルログレベルオプション(--log-level-file)

ファイルに記録するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: info
example: --log-level-file=debug

標準エラーログレベルオプション(--log-level-stderr)

stderrに出力するログのレベルです。

stdout(log-level-consoleで指定)の代わりにstderrへ出力するログレベルを指定します。stderrにはタイムスタンプとプロセスを出力しません。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: off
example: --log-level-stderr=error

ログパスオプション(--log-path)

ログファイルを保存するパスです。

ログパスは、pgBackRestがログファイルを保存する場所です。log-level-file=offの場合、ログパスは不要です。

default: /var/log/pgbackrest
example: --log-path=/backup/db/log

ログタイムスタンプオプション(--log-timestamp)

ログのタイムスタンプを有効にします。

コンソールとファイルのログでタイムスタンプを有効にします。このオプションは、ドキュメント生成などの特殊な状況では無効にします。

default: y
example: --no-log-timestamp

4.13 - サーバー生存確認コマンド(server-ping)

pgBackRestのserver-pingコマンドのオプションと動作のリファレンス。

pgBackRest TLSサーバーにpingを送信し、接続を受け付けていることを確認します。認証は試みないため、生存確認のみを行います。

コマンドラインにホストを指定しない場合は、tls-server-hostオプションを使用します。

コマンドオプション

TLSサーバーアドレスオプション(--tls-server-address)

TLSサーバーのアドレスです。

サーバーがクライアントのリクエストを待ち受けるIPアドレスです。

default: localhost
example: --tls-server-address=*

TLSサーバーポートオプション(--tls-server-port)

TLSサーバーのポートです。

サーバーがクライアントのリクエストを待ち受けるポートです。

default: 8432
allowed: [1, 65535]
example: --tls-server-port=8000

一般オプション

rootでの実行許可オプション(--allow-root)

rootユーザーによるコマンドの実行を許可します。

デフォルトでは、ファイルの所有権を慎重に管理するように設計されたrestoreコマンドのみをrootユーザーで実行できます。ほかのコマンドをrootで実行すると、たとえばリポジトリ内にroot所有のファイルが作成され、PostgreSQLユーザーがアクセスできなくなって、後続のコマンドが失敗するおそれがあります。

それでもコマンドをrootで実行する場合は、このオプションを有効にします。ただし、リポジトリとPostgreSQLクラスターを所有するユーザーとしてpgBackRestを実行する方がはるかに適切です。

default: n
example: --allow-root

バッファーサイズオプション(--buffer-size)

I/O処理のバッファーサイズです。

コピー、圧縮、暗号化などの処理に使用するバッファーサイズです。使用するバッファーの数はオプションによって異なり、各処理で追加のメモリを使用する場合があります。たとえば、gz圧縮では256KiBのメモリを追加で使用する場合があります。

指定できる値は、16KiB、32KiB、64KiB、128KiB、256KiB、512KiB、1MiB、2MiB、4MiB、8MiB、16MiBです。

default: 1MiB
example: --buffer-size=2MiB

設定ファイルオプション(--config)

pgBackRestの設定ファイルです。

デフォルトとは異なる設定ファイルを指定するには、このオプションを使用します。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --config=/conf/pgbackrest/pgbackrest.conf

追加設定パスオプション(--config-include-path)

追加のpgBackRest設定ファイルへのパスです。

指定した場所にある拡張子.confの設定ファイルをpgBackRest設定ファイルと連結し、1つの設定ファイルとして扱います。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --config-include-path=/conf/pgbackrest/conf.d

設定パスオプション(--config-path)

pgBackRest設定ファイルの基準パスです。

この設定は、--configと--config-include-pathの各オプションがコマンドラインで明示的に設定されていない場合に、それらのデフォルトの基準パスを上書きします。

たとえば、--config-path=/conf/pgbackrestだけを渡すと、--configのデフォルトは/conf/pgbackrest/pgbackrest.confに、--config-include-pathのデフォルトは/conf/pgbackrest/conf.dに設定されます。

default: CFGOPTDEF_CONFIG_PATH
example: --config-path=/conf/pgbackrest

I/Oタイムアウトオプション(--io-timeout)

I/Oのタイムアウトです。

接続および読み取り/書き込み処理に使用する、秒単位のタイムアウトです。

読み取り/書き込み処理全体がこのタイムアウト内に完了する必要はありませんが、わずか1バイトでも、何らかの進展が必要です。

default: 1m
allowed: [100ms, 1h]
example: --io-timeout=120

プロセス優先度設定オプション(--priority)

プロセスの優先度を設定します。

カーネルのスケジューラーがプロセスに与える優先度(niceness)を定義します。正の値は優先度を下げ、負の値は優先度を上げます。通常、プロセスには自身の優先度を上げる権限がありません。

allowed: [-20, 19]
example: --priority=19

キープアライブオプション(--sck-keep-alive)

キープアライブを有効にします。

ソケット接続でキープアライブメッセージを有効にします。

default: y
example: --no-sck-keep-alive

キープアライブ回数オプション(--tcp-keep-alive-count)

キープアライブの回数です。

接続が切れたと判断するまでに、応答がなくても許容するTCPキープアライブメッセージの数を指定します。

このオプションは、TCP_KEEPCNTソケットオプションをサポートするシステムで利用できます。

allowed: [1, 32]
example: --tcp-keep-alive-count=3

キープアライブ待機時間オプション(--tcp-keep-alive-idle)

キープアライブの待機時間です。

ネットワーク通信がない状態で、オペレーティングシステムがTCPキープアライブメッセージを送信するまでの時間を秒単位で指定します。

このオプションは、TCP_KEEPIDLEソケットオプションをサポートするシステムで利用できます。

allowed: [1, 3600]
example: --tcp-keep-alive-idle=60

キープアライブ間隔オプション(--tcp-keep-alive-interval)

キープアライブの送信間隔です。

応答のないTCPキープアライブメッセージを再送信するまでの時間を秒単位で指定します。

このオプションは、TCP_KEEPINTVLソケットオプションをサポートするシステムで利用できます。

allowed: [1, 900]
example: --tcp-keep-alive-interval=30

TLSv1.2暗号スイートオプション(--tls-cipher-12)

許可するTLSv1.2暗号スイートです。

pgBackRestクライアントとサーバー間のすべてのTLS接続は暗号化されます。デフォルトでは、オブジェクトストア(例:S3)への接続も暗号化されます。

注記: どのトランスポート接続でも、セキュリティーの最低要件はTLSv1.2です。

必要に応じて、受け入れる暗号スイートを調整できます。特別なセキュリティー要件がなければ、例に示す値が妥当な選択です。未設定(デフォルト)の場合は、使用するOpenSSLライブラリのデフォルトが適用されます。

example: --tls-cipher-12=HIGH:MEDIUM:+3DES:!aNULL

TLSv1.3暗号スイートオプション(--tls-cipher-13)

許可するTLSv1.3暗号スイートです。

pgBackRestクライアントとサーバー間のすべてのTLS接続は暗号化されます。デフォルトでは、オブジェクトストア(例:S3)への接続も暗号化されます。

注記: どのトランスポート接続でも、セキュリティーの最低要件はTLSv1.2です。

必要に応じて、受け入れる暗号スイートを調整できます。未設定(デフォルト)の場合は、使用するOpenSSLライブラリのデフォルトが適用されます。

example: --tls-cipher-13=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256

ログオプション

コンソールログレベルオプション(--log-level-console)

コンソールに出力するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: warn
example: --log-level-console=error

ファイルログレベルオプション(--log-level-file)

ファイルに記録するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: info
example: --log-level-file=debug

標準エラーログレベルオプション(--log-level-stderr)

stderrに出力するログのレベルです。

stdout(log-level-consoleで指定)の代わりにstderrへ出力するログレベルを指定します。stderrにはタイムスタンプとプロセスを出力しません。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: off
example: --log-level-stderr=error

ログパスオプション(--log-path)

ログファイルを保存するパスです。

ログパスは、pgBackRestがログファイルを保存する場所です。log-level-file=offの場合、ログパスは不要です。

default: /var/log/pgbackrest
example: --log-path=/backup/db/log

ログタイムスタンプオプション(--log-timestamp)

ログのタイムスタンプを有効にします。

コンソールとファイルのログでタイムスタンプを有効にします。このオプションは、ドキュメント生成などの特殊な状況では無効にします。

default: y
example: --no-log-timestamp

4.14 - stanza作成コマンド(stanza-create)

pgBackRestのstanza-createコマンドのオプションと動作のリファレンス。

pgbackrest.confにstanzaを設定した後、stanza-createコマンドを実行する必要があります。複数のリポジトリが設定されている場合は、それぞれにstanzaを作成します。作成済みのstanzaはスキップするため、新しいリポジトリを設定した場合でも、stanza-createは常に安全に実行できます。

詳細と例は、stanzaの作成 を参照してください。

コマンドオプション

オンラインオプション(--online)

オンラインのクラスターで作成します。

–no-onlineを指定すると、stanzaの作成時にpgBackRestはPostgreSQLに接続しません。

default: y
example: --no-online

一般オプション

rootでの実行許可オプション(--allow-root)

rootユーザーによるコマンドの実行を許可します。

デフォルトでは、ファイルの所有権を慎重に管理するように設計されたrestoreコマンドのみをrootユーザーで実行できます。ほかのコマンドをrootで実行すると、たとえばリポジトリ内にroot所有のファイルが作成され、PostgreSQLユーザーがアクセスできなくなって、後続のコマンドが失敗するおそれがあります。

それでもコマンドをrootで実行する場合は、このオプションを有効にします。ただし、リポジトリとPostgreSQLクラスターを所有するユーザーとしてpgBackRestを実行する方がはるかに適切です。

default: n
example: --allow-root

バッファーサイズオプション(--buffer-size)

I/O処理のバッファーサイズです。

コピー、圧縮、暗号化などの処理に使用するバッファーサイズです。使用するバッファーの数はオプションによって異なり、各処理で追加のメモリを使用する場合があります。たとえば、gz圧縮では256KiBのメモリを追加で使用する場合があります。

指定できる値は、16KiB、32KiB、64KiB、128KiB、256KiB、512KiB、1MiB、2MiB、4MiB、8MiB、16MiBです。

default: 1MiB
example: --buffer-size=2MiB

SSHクライアントコマンドオプション(--cmd-ssh)

SSHクライアントのコマンドです。

別のSSHクライアントを使用したい場合や、sshコマンドが$PATHに含まれていない場合に、使用するSSHクライアントコマンドを指定します。

default: ssh
example: --cmd-ssh=/usr/bin/ssh

ネットワーク圧縮レベルオプション(--compress-level-network)

ネットワークの圧縮レベルです。

compress-type=noneで、コマンドがリポジトリと同じホストで実行されない場合のネットワーク圧縮レベルを設定します。圧縮によってネットワークトラフィックを削減します。compress-typeがnoneでない場合は、ファイルを1回だけ圧縮するように、compress-level-network設定を無視して代わりにcompress-levelを使用します。

default: 1
allowed: [-5, 12]
example: --compress-level-network=1

設定ファイルオプション(--config)

pgBackRestの設定ファイルです。

デフォルトとは異なる設定ファイルを指定するには、このオプションを使用します。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --config=/conf/pgbackrest/pgbackrest.conf

追加設定パスオプション(--config-include-path)

追加のpgBackRest設定ファイルへのパスです。

指定した場所にある拡張子.confの設定ファイルをpgBackRest設定ファイルと連結し、1つの設定ファイルとして扱います。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --config-include-path=/conf/pgbackrest/conf.d

設定パスオプション(--config-path)

pgBackRest設定ファイルの基準パスです。

この設定は、--configと--config-include-pathの各オプションがコマンドラインで明示的に設定されていない場合に、それらのデフォルトの基準パスを上書きします。

たとえば、--config-path=/conf/pgbackrestだけを渡すと、--configのデフォルトは/conf/pgbackrest/pgbackrest.confに、--config-include-pathのデフォルトは/conf/pgbackrest/conf.dに設定されます。

default: CFGOPTDEF_CONFIG_PATH
example: --config-path=/conf/pgbackrest

データベースタイムアウトオプション(--db-timeout)

データベースクエリーのタイムアウトです。

データベースに対するクエリーのタイムアウトを秒単位で設定します。これには、それぞれかなりの時間がかかる可能性があるバックアップの開始/停止関数も含まれます。そのため、これらの関数が速やかに戻ることがわかっている場合(つまり、start-fast=yを設定し、バックアップ中にデータベースクラスターが多数のWALセグメントを生成しないことがわかっている場合)を除き、タイムアウトは長めにしておくことを推奨します。

注記: db-timeoutオプションは、protocol-timeoutオプションより小さくする必要があります。

default: 30m
allowed: [100ms, 7d]
example: --db-timeout=600

I/Oタイムアウトオプション(--io-timeout)

I/Oのタイムアウトです。

接続および読み取り/書き込み処理に使用する、秒単位のタイムアウトです。

読み取り/書き込み処理全体がこのタイムアウト内に完了する必要はありませんが、わずか1バイトでも、何らかの進展が必要です。

default: 1m
allowed: [100ms, 1h]
example: --io-timeout=120

ロックパスオプション(--lock-path)

ロックファイルを保存するパスです。

ロックパスは、pgBackRestが競合する処理の同時実行を防ぐためのロックファイルを作成する場所です。

default: /tmp/pgbackrest
example: --lock-path=/backup/db/lock

固定umaskオプション(--neutral-umask)

固定のumaskを使用します。

umaskを0000に設定し、リポジトリ内のファイルやディレクトリが適切な権限で作成されるようにします。デフォルトのディレクトリ権限は0750、ファイル権限は0640です。

代わりに実行ユーザーのumaskを使用するには、設定ファイルにneutral-umask=n、またはコマンドラインに--no-neutral-umaskを指定します。

default: y
example: --no-neutral-umask

プロセス優先度設定オプション(--priority)

プロセスの優先度を設定します。

カーネルのスケジューラーがプロセスに与える優先度(niceness)を定義します。正の値は優先度を下げ、負の値は優先度を上げます。通常、プロセスには自身の優先度を上げる権限がありません。

allowed: [-20, 19]
example: --priority=19

プロトコルタイムアウトオプション(--protocol-timeout)

プロトコルのタイムアウトです。

ローカルまたはリモートのプロセスが、プロトコル層で新しいメッセージの受信を待つタイムアウトを秒単位で設定します。これにより、プロセスがメッセージを無期限に待ち続けることを防ぎます。

注記: protocol-timeoutオプションは、db-timeoutオプションより大きくする必要があります。

default: 31m
allowed: [100ms, 7d]
example: --protocol-timeout=630

キープアライブオプション(--sck-keep-alive)

キープアライブを有効にします。

ソケット接続でキープアライブメッセージを有効にします。

default: y
example: --no-sck-keep-alive

stanzaオプション(--stanza)

stanzaを定義します。

stanzaは、PostgreSQLデータベースクラスターの場所、バックアップ方法、アーカイブオプションなどを定義する設定です。ほとんどのデータベースサーバーにはPostgreSQLデータベースクラスターが1つだけ存在し、stanzaも1つになります。一方、バックアップサーバーには、バックアップが必要なデータベースクラスターごとにstanzaがあります。

stanzaにはプライマリークラスターにちなんだ名前を付けたくなりますが、クラスターに含まれるデータベースを表す名前の方が適しています。stanza名はプライマリーとすべてのレプリカで使用するため、mainやprodなどのローカルクラスター名よりも、appやdwなど、クラスターの実際の役割を表す名前を選ぶ方が適切です。

example: --stanza=main

キープアライブ回数オプション(--tcp-keep-alive-count)

キープアライブの回数です。

接続が切れたと判断するまでに、応答がなくても許容するTCPキープアライブメッセージの数を指定します。

このオプションは、TCP_KEEPCNTソケットオプションをサポートするシステムで利用できます。

allowed: [1, 32]
example: --tcp-keep-alive-count=3

キープアライブ待機時間オプション(--tcp-keep-alive-idle)

キープアライブの待機時間です。

ネットワーク通信がない状態で、オペレーティングシステムがTCPキープアライブメッセージを送信するまでの時間を秒単位で指定します。

このオプションは、TCP_KEEPIDLEソケットオプションをサポートするシステムで利用できます。

allowed: [1, 3600]
example: --tcp-keep-alive-idle=60

キープアライブ間隔オプション(--tcp-keep-alive-interval)

キープアライブの送信間隔です。

応答のないTCPキープアライブメッセージを再送信するまでの時間を秒単位で指定します。

このオプションは、TCP_KEEPINTVLソケットオプションをサポートするシステムで利用できます。

allowed: [1, 900]
example: --tcp-keep-alive-interval=30

TLSv1.2暗号スイートオプション(--tls-cipher-12)

許可するTLSv1.2暗号スイートです。

pgBackRestクライアントとサーバー間のすべてのTLS接続は暗号化されます。デフォルトでは、オブジェクトストア(例:S3)への接続も暗号化されます。

注記: どのトランスポート接続でも、セキュリティーの最低要件はTLSv1.2です。

必要に応じて、受け入れる暗号スイートを調整できます。特別なセキュリティー要件がなければ、例に示す値が妥当な選択です。未設定(デフォルト)の場合は、使用するOpenSSLライブラリのデフォルトが適用されます。

example: --tls-cipher-12=HIGH:MEDIUM:+3DES:!aNULL

TLSv1.3暗号スイートオプション(--tls-cipher-13)

許可するTLSv1.3暗号スイートです。

pgBackRestクライアントとサーバー間のすべてのTLS接続は暗号化されます。デフォルトでは、オブジェクトストア(例:S3)への接続も暗号化されます。

注記: どのトランスポート接続でも、セキュリティーの最低要件はTLSv1.2です。

必要に応じて、受け入れる暗号スイートを調整できます。未設定(デフォルト)の場合は、使用するOpenSSLライブラリのデフォルトが適用されます。

example: --tls-cipher-13=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256

ログオプション

コンソールログレベルオプション(--log-level-console)

コンソールに出力するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: warn
example: --log-level-console=error

ファイルログレベルオプション(--log-level-file)

ファイルに記録するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: info
example: --log-level-file=debug

標準エラーログレベルオプション(--log-level-stderr)

stderrに出力するログのレベルです。

stdout(log-level-consoleで指定)の代わりにstderrへ出力するログレベルを指定します。stderrにはタイムスタンプとプロセスを出力しません。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: off
example: --log-level-stderr=error

ログパスオプション(--log-path)

ログファイルを保存するパスです。

ログパスは、pgBackRestがログファイルを保存する場所です。log-level-file=offの場合、ログパスは不要です。

default: /var/log/pgbackrest
example: --log-path=/backup/db/log

サブプロセスログオプション(--log-subprocess)

サブプロセスでのログ記録を有効にします。

このプロセスが作成するすべてのサブプロセスで、log-level-fileで指定したログレベルによるファイルへのログ記録を有効にします。

default: n
example: --log-subprocess

ログタイムスタンプオプション(--log-timestamp)

ログのタイムスタンプを有効にします。

コンソールとファイルのログでタイムスタンプを有効にします。このオプションは、ドキュメント生成などの特殊な状況では無効にします。

default: y
example: --no-log-timestamp

メンテナー向けオプション

PostgreSQLバージョン強制指定オプション(--pg-version-force)

PostgreSQLのバージョンを強制指定します。

pg_controlまたはWALヘッダーを読み取って自動検出したバージョンの代わりに、指定したPostgreSQLバージョンを使用します。これは主に、これらの値がリリース版とは異なるPostgreSQLのフォークや開発版で役立ちます。PostgreSQLがserver_version_numで報告するバージョンは、強制指定したバージョンと一致する必要があります。

警告:

このオプションは慎重に使用してください。pg_controlとWALヘッダーは引き続き、指定バージョンで想定される形式、つまり公式のオープンソース版PostgreSQLの形式で読み取られます。フォークや開発版が、pgBackRestの依存するフィールドの形式を変更していると、予期しない動作が生じます。一般に、このオプションが想定どおりに動作するのは、フォークが独自の構造体メンバーをすべて標準のPostgreSQLメンバーの後ろに追加している場合に限られます。

example: --pg-version-force=15

リポジトリオプション

Azureリポジトリコンテナーオプション(--repo-azure-container)

Azureリポジトリのコンテナーです。

リポジトリの保存に使用するAzureコンテナーです。

repo-path=/を設定するとpgBackRestリポジトリをコンテナーのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのAzureが生成するコンテンツもコンテナーに保存できるようにすることを推奨します。

example: --repo1-azure-container=pg-backup

Azureリポジトリキー種別オプション(--repo-azure-key-type)

Azureリポジトリのキー種別です。

認可には次の種別をサポートします。

  • shared - 共有キー
  • sas - 共有アクセス署名
  • auto - AzureマネージドIDを使用して自動的に認可
default: shared
example: --repo1-azure-key-type=sas

AzureリポジトリURI形式オプション(--repo-azure-uri-style)

AzureのURI形式です。

次のURI形式をサポートします。

  • host - account.endpointホストに接続します。
  • path - endpointホストに接続し、URIの先頭にアカウントを付加します。
default: host
example: --repo1-azure-uri-style=path

リポジトリ暗号方式オプション(--repo-cipher-type)

リポジトリの暗号化に使用する暗号方式です。

次の暗号方式をサポートします。

  • none - リポジトリを暗号化しません
  • aes-256-cbc - 鍵長256ビットのAdvanced Encryption Standard

リポジトリの種類(例:S3)が暗号化をサポートしていても、暗号化は常にクライアント側で実行されます。

default: none
example: --repo1-cipher-type=aes-256-cbc

GCSリポジトリバケットオプション(--repo-gcs-bucket)

GCSリポジトリのバケットです。

リポジトリの保存に使用するGCSバケットです。

repo-path=/を設定するとpgBackRestリポジトリをバケットのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのGCSが生成するコンテンツもバケットに保存できるようにすることを推奨します。

example: --repo1-gcs-bucket=/pg-backup

GCSリポジトリエンドポイントオプション(--repo-gcs-endpoint)

GCSリポジトリのエンドポイントです。

ストレージサービスへの接続に使用するエンドポイントです。ローカルのGCSサーバーや別のエンドポイントを使用するように変更できます。

default: storage.googleapis.com
example: --repo1-gcs-endpoint=localhost

GCSリポジトリキー種別オプション(--repo-gcs-key-type)

GCSリポジトリのキー種別です。

認可には次の種別をサポートします。

  • auto - インスタンスのサービスアカウントを使用して認可します。
  • service - ローカルに保存したキーでサービスアカウントを使用します。
  • token - fakegcsなどを使用するローカルテスト用です。

repo-gcs-key-type=serviceの場合、認証トークンの更新時に認証情報を再読み込みします。

default: service
example: --repo1-gcs-key-type=auto

GCSリポジトリプロジェクトIDオプション(--repo-gcs-user-project)

GCSのプロジェクトIDです。

リクエストの課金先を決定するために使用するGCSプロジェクトIDです。

example: --repo1-gcs-user-project=my-project

リポジトリホストオプション(--repo-host)

リモート操作時のリポジトリホストです。

ローカルにマウントされたファイルシステムにバックアップおよびアーカイブする場合、この設定は不要です。

example: --repo1-host=repo1.domain.com

非推奨の名前:backup-host

リポジトリホスト認証局ファイルオプション(--repo-host-ca-file)

リポジトリホストの認証局ファイルです。

リポジトリホストへの接続に、システムのデフォルト以外のCAファイルを使用します。

example: --repo1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt

リポジトリホスト認証局パスオプション(--repo-host-ca-path)

リポジトリホストの認証局パスです。

リポジトリホストへの接続に、システムのデフォルト以外のCAパスを使用します。

example: --repo1-host-ca-path=/etc/pki/tls/certs

リポジトリホスト証明書ファイルオプション(--repo-host-cert-file)

リポジトリホストの証明書ファイルです。

クライアントの身元を証明するためにリポジトリホストに送信します。

example: --repo1-host-cert-file=/path/to/client.crt

リポジトリホストコマンドオプション(--repo-host-cmd)

リポジトリホストのpgBackRestコマンドです。

pgBackRestコマンドのパスがローカルホストとリポジトリホストで異なる場合にのみ必要です。未定義の場合、リポジトリホストのコマンドにはローカルと同じコマンドを設定します。

default: [path of executed pgbackrest binary]
example: --repo1-host-cmd=/usr/lib/backrest/bin/pgbackrest

非推奨の名前:backup-cmd

リポジトリホスト設定オプション(--repo-host-config)

pgBackRestリポジトリホストの設定ファイルです。

リポジトリホスト上の設定ファイルの場所を設定します。リポジトリホストの設定ファイルがローカルの設定ファイルと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --repo1-host-config=/conf/pgbackrest/pgbackrest.conf

非推奨の名前:backup-config

リポジトリホスト追加設定パスオプション(--repo-host-config-include-path)

pgBackRestリポジトリホストの追加設定パスです。

リポジトリホスト上の追加設定パスの場所を設定します。リポジトリホストの追加設定パスがローカルの追加設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --repo1-host-config-include-path=/conf/pgbackrest/conf.d

リポジトリホスト設定パスオプション(--repo-host-config-path)

pgBackRestリポジトリホストの設定パスです。

リポジトリホスト上の設定パスの場所を設定します。リポジトリホストの設定パスがローカルの設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH
example: --repo1-host-config-path=/conf/pgbackrest

リポジトリホストキーファイルオプション(--repo-host-key-file)

リポジトリホストのキーファイルです。

クライアント証明書が所有者によって送信されたことを証明します。

example: --repo1-host-key-file=/path/to/client.key

リポジトリホストポートオプション(--repo-host-port)

repo-hostが設定されている場合のリポジトリホストのポートです。

リポジトリホストのプロトコルにデフォルト以外のポートを指定するには、このオプションを使用します。

注記: repo-host-type=sshの場合、repo-host-portにデフォルト値はありません。この場合、ポートはcmd-sshで指定したコマンドの設定に従います。

default (depending on repo-host-type):
    tls - 8432

allowed: [0, 65535]
example: --repo1-host-port=25

非推奨の名前:backup-ssh-port

リポジトリホストプロトコル種別オプション(--repo-host-type)

リポジトリホストのプロトコル種別です。

次のプロトコル種別をサポートします。

  • ssh - Secure Shell。
  • tls - pgBackRest TLSサーバー。
default: ssh
example: --repo1-host-type=tls

リポジトリホストユーザーオプション(--repo-host-user)

repo-hostが設定されている場合のリポジトリホストのユーザーです。

リポジトリホスト上の操作に使用するユーザーを定義します。postgresユーザーではなく、pgbackrestなどの別のユーザーを使用することを推奨します。リポジトリホストでPostgreSQLを実行する場合は、postgresユーザーをpgbackrestグループに追加することで、リポジトリの内容を誤って破損させずに読み取り権限を与えられます。

default: pgbackrest
example: --repo1-host-user=repo-user

非推奨の名前:backup-user

リポジトリパスオプション(--repo-path)

バックアップとアーカイブを保存するパスです。

リポジトリは、pgBackRestがバックアップを保存し、WALセグメントをアーカイブする場所です。

必要な容量を事前に見積もるのは難しい場合があります。まずいくつかバックアップを取得し、各種類(full/incr/diff)のバックアップサイズを記録して、1日当たりに生成されるWALの量を測定するのが最善です。これにより、必要な容量のおおよその見当が付きます。ただし、データベースの変化に伴い、必要量も時間とともに変わる可能性があります。

default: /var/lib/pgbackrest
example: --repo1-path=/backup/db/backrest

S3リポジトリバケットオプション(--repo-s3-bucket)

S3リポジトリのバケットです。

リポジトリの保存に使用するS3バケットです。

repo-path=/を設定するとpgBackRestリポジトリをバケットのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのAWSが生成するコンテンツもバケットに保存できるようにすることを推奨します。

example: --repo1-s3-bucket=pg-backup

S3リポジトリエンドポイントオプション(--repo-s3-endpoint)

S3リポジトリのエンドポイントです。

選択したリージョンに対して有効なAWSエンドポイントを使用してください。

独自の構成やテスト構成では、repo-storage-ca-file、repo-storage-ca-path、repo-storage-host、repo-storage-port、repo-storage-verify-tlsの各オプションが役立つ場合があります。

example: --repo1-s3-endpoint=s3.amazonaws.com

S3リポジトリキー種別オプション(--repo-s3-key-type)

S3リポジトリのキー種別です。

次の種別をサポートします。

  • shared - 共有キー
  • auto - 一時認証情報を自動取得
  • web-id - ウェブID認証情報を自動取得
  • pod-id - EKS Pod Identityの認証情報を自動取得
  • process - プロセスを実行して認証情報を取得
default: shared
example: --repo1-s3-key-type=auto

S3リポジトリKMSキーIDオプション(--repo-s3-kms-key-id)

S3リポジトリのKMSキーです。

指定したAWS Key Management Serviceのキーを使用して、S3のサーバー側暗号化を有効にします。

example: --repo1-s3-kms-key-id=bceb4f13-6939-4be3-910d-df54dee817b7

S3認証プロセスコマンドオプション(--repo-s3-process-cmd)

S3の認証プロセスコマンドです。

一時的なS3認証情報を取得するために実行するコマンド(および任意の引数)です。リストの最初の要素がコマンドで、残りの要素はパラメーターとして渡します。

プロセスは、AccessKeyId、SecretAccessKey、SessionToken、Expirationフィールドを含むJSONを出力する必要があります。認証情報は有効期限の前に自動更新されます。形式の詳細は、プロセス認証情報プロバイダー を参照してください。

example: --repo1-s3-process-cmd=/usr/local/bin/get-credentials --repo1-s3-process-cmd=--role --repo1-s3-process-cmd=my-role

S3リポジトリリージョンオプション(--repo-s3-region)

S3リポジトリのリージョンです。

バケットを作成したAWSリージョンです。

example: --repo1-s3-region=us-east-1

S3リポジトリのリクエスタ支払いオプション(--repo-s3-requester-pays)

S3リポジトリのリクエスタ支払いです。

S3のリクエスタ支払いを有効にします。

default: n
example: --no-repo1-s3-requester-pays

S3リポジトリロールオプション(--repo-s3-role)

S3リポジトリのロールです。

repo-s3-key-type=autoの場合に、一時認証情報の取得に使用するAWSロール名(完全なARNではありません)です。

example: --repo1-s3-role=authrole

S3リポジトリサービスオプション(--repo-s3-service)

S3の署名サービスです。

SigV4認証で使用するS3署名サービスです。標準のS3エンドポイントでは、デフォルトはs3です。S3 Outpostsエンドポイントを使用する場合は、s3-outpostsに設定します。

default: s3
example: --repo1-s3-service=s3-outposts

S3リポジトリSTSエンドポイントオプション(--repo-s3-sts-host)

S3リポジトリのSTSエンドポイントです。

repo-s3-key-type=web-idを設定した場合に、一時認証情報の取得に使用するSTSエンドポイントです。リージョン別STSを使用するには、リージョン別エンドポイント(例:sts.us-east-1.amazonaws.com)を設定します。GovCloudや中国リージョンで必要になる場合や、レイテンシーを低減するために使用する場合があります。

default: sts.amazonaws.com
example: --repo1-s3-sts-host=sts.us-east-1.amazonaws.com

S3リポジトリURI形式オプション(--repo-s3-uri-style)

S3のURI形式です。

次のURI形式をサポートします。

  • host - bucket.endpointホストに接続します。
  • path - endpointホストに接続し、URIの先頭にバケットを付加します。
default: host
example: --repo1-s3-uri-style=path

SFTPリポジトリホストオプション(--repo-sftp-host)

SFTPリポジトリのホストです。

リポジトリが存在するSFTPホストです。

example: --repo1-sftp-host=sftprepo.domain

SFTPリポジトリホストフィンガープリントオプション(--repo-sftp-host-fingerprint)

SFTPリポジトリホストのフィンガープリントです。

SFTPリポジトリホストのフィンガープリントの生成方法は、repo-sftp-host-key-hash-typeと一致させてください。awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -bでフィンガープリントを生成します。sshホストキーは通常、/etc/sshディレクトリにあります。

example: --repo1-sftp-host-fingerprint=f84e172dfead7aeeeae6c1fdfb5aa8cf

SFTPホストキー確認方式オプション(--repo-sftp-host-key-check-type)

SFTPのホストキー確認方式です。

次のSFTPホストキー確認方式をサポートします。

  • strict - pgBackRestは~/.ssh/known_hostsファイルにホストキーを自動追加せず、ホストキーが変更されたホスト、または既知のホストファイルで見つからないホストへの接続を拒否します。このオプションでは、新しいホストをすべて手動で追加する必要があります。
  • accept-new - pgBackRestは新しいホストキーをユーザーの既知のホストファイルに自動追加しますが、ホストキーが変更されたホストへの接続は許可しません。
  • fingerprint - pgBackRestは、repo-sftp-host-fingerprintオプションで指定したフィンガープリントとホストキーを照合します。
  • none - ホストキーを確認しません。
default: strict
example: --repo1-sftp-host-key-check-type=accept-new

SFTPリポジトリホストキーハッシュ種別オプション(--repo-sftp-host-key-hash-type)

SFTPリポジトリのホストキーハッシュ種別です。

SFTPリポジトリのホストキーハッシュ種別です。SSHの開始時に、リモートシステムのホストキーのダイジェスト計算に使用するハッシュ種別を指定します。新しいバージョンのlibssh2は、md5とsha1に加えてsha256もサポートします。

example: --repo1-sftp-host-key-hash-type=sha256

SFTPリポジトリホストポートオプション(--repo-sftp-host-port)

SFTPリポジトリホストのポートです。

SFTPリポジトリホストのポートです。

default: 22
allowed: [1, 65535]
example: --repo1-sftp-host-port=22

SFTPリポジトリホストユーザーオプション(--repo-sftp-host-user)

SFTPリポジトリホストのユーザーです。

リポジトリの保存に使用するホスト上のユーザーです。

example: --repo1-sftp-host-user=pg-backup

SFTP既知ホストファイルオプション(--repo-sftp-known-host)

SFTPの既知のホストファイルです。

認証時に一致するSFTPホストを探す既知のホストファイルです。未指定の場合、pgBackRestはデフォルトで~/.ssh/known_hosts、~/.ssh/known_hosts2、/etc/ssh/ssh_known_hosts、/etc/ssh/ssh_known_hosts2を検索します。1つ以上のファイルパスを設定した場合は、それらを検索して一致を確認します。ファイルパスは絶対パス、または先頭がチルダのパスである必要があります。repo-sftp-known-hostオプションを複数回指定することで、検索する既知のホストファイルを複数指定できます。既知のホストファイルによる確認を使用するには、repo-sftp-host-fingerprintを指定してはいけません。repo-sftp-host-check-typeオプションも参照してください。

example: --repo1-sftp-known-host=/home/postgres/.ssh/known_hosts

SFTPリポジトリ秘密鍵ファイルオプション(--repo-sftp-private-key-file)

SFTPの秘密鍵ファイルです。

認証に使用するSFTP秘密鍵ファイルです。

example: --repo1-sftp-private-key-file=~/.ssh/id_ed25519

SFTPリポジトリ公開鍵ファイルオプション(--repo-sftp-public-key-file)

SFTPの公開鍵ファイルです。

認証に使用するSFTP公開鍵ファイルです。OpenSSLに対してコンパイルした場合は任意ですが、別のライブラリに対してコンパイルした場合は必須です。

example: --repo1-sftp-public-key-file=~/.ssh/id_ed25519.pub

リポジトリストレージCAファイルオプション(--repo-storage-ca-file)

リポジトリストレージのCAファイルです。

ストレージ(例:S3、Azure)の証明書に、システムのデフォルト以外のCAファイルを使用します。

example: --repo1-storage-ca-file=/etc/pki/tls/certs/ca-bundle.crt

非推奨の名前:repo-azure-ca-file, repo-s3-ca-file

リポジトリストレージTLS CAパスオプション(--repo-storage-ca-path)

リポジトリストレージのCAパスです。

ストレージ(例:S3、Azure)の証明書に、システムのデフォルト以外のCAパスを使用します。

example: --repo1-storage-ca-path=/etc/pki/tls/certs

非推奨の名前:repo-azure-ca-path, repo-s3-ca-path

リポジトリストレージホストオプション(--repo-storage-host)

リポジトリストレージのホストです。

ストレージ(例:S3、Azure)のエンドポイントとは異なるホストに接続します。通常はテストに使用します。

example: --repo1-storage-host=127.0.0.1

非推奨の名前:repo-azure-host, repo-s3-host

リポジトリストレージポートオプション(--repo-storage-port)

リポジトリストレージのポートです。

ストレージ(例:S3、Azure)のエンドポイント(ホストを指定した場合はそのホスト)への接続に使用するポートです。

default: 443
allowed: [1, 65535]
example: --repo1-storage-port=9000

非推奨の名前:repo-azure-port, repo-s3-port

リポジトリストレージタグオプション(--repo-storage-tag)

リポジトリストレージのタグです。

リポジトリがオブジェクトストア(例:S3)の場合に、オブジェクトに付加するタグを指定します。このオプションを繰り返して、複数のタグを追加できます。

pgBackRestにはこれらのタグを変更する機能がないため、リポジトリ全体でタグを統一するには、stanza-createを実行する前に正しく設定してください。

example: --repo1-storage-tag=key1=value1

リポジトリストレージアップロードチャンクサイズオプション(--repo-storage-upload-chunk-size)

リポジトリストレージのアップロードチャンクサイズです。

S3などのオブジェクトストアでは、ファイルが大きすぎてメモリに格納できない場合に、チャンクに分けてアップロードできます。ファイルをメモリに格納できる場合でも、アップロードに使用するメモリ量を制限する方がメモリ効率は高くなります。

チャンクサイズを大きくすると、アップロードリクエストを最小限に抑え、チャンク分割せずに1回のリクエストでアップロードできるファイルが増えるため、一般にパフォーマンスが向上します。一方、メモリ使用量は増加します。チャンクバッファーはプロセスごとに割り当てる必要があるため、process-maxの値が大きいほど、全体のメモリ消費量も増えます。

有効なチャンクサイズは、ストレージの種類やプラットフォームによって異なります。たとえば、AWS S3の最小チャンクサイズは5MiBです。チャンクサイズの呼び方もストレージの種類によって異なるため、最小値/最大値を調べる際は、AWS S3では「part size」、GCSでは「chunk size」、Azureでは「block size」を使用してください。

ファイルが1GiB(PostgreSQLがデフォルトで作成する最大サイズ)より大きい場合、ファイルのアップロードを完了するために、許容される最大値までチャンクサイズを段階的に増やします。

default (depending on repo-type):
    azure - 4MiB
    gcs - 4MiB
    s3 - 5MiB

allow range (depending on repo-type):
    azure - [4MiB, 1GiB]
    gcs - [4MiB, 1GiB]
    s3 - [5MiB, 1GiB]

example: --repo1-storage-upload-chunk-size=16MiB

リポジトリストレージ証明書検証オプション(--repo-storage-verify-tls)

リポジトリストレージの証明書を検証します。

このオプションでは、ストレージ(例:S3、Azure)サーバーのTLS証明書の検証を有効/無効にできます。無効化は、テストや自己署名証明書を使用する場合に限ってください。

default: y
example: --no-repo1-storage-verify-tls

非推奨の名前:repo-azure-verify-tls, repo-s3-verify-ssl, repo-s3-verify-tls

リポジトリ種別オプション(--repo-type)

リポジトリに使用するストレージの種類です。

次のリポジトリ種類をサポートします。

  • azure - Azure Blob Storage Service
  • cifs - posixと同様ですが、リンクとディレクトリのfsyncを無効にします
  • gcs - Google Cloud Storage
  • posix - Posix準拠のファイルシステム
  • s3 - AWS Simple Storage Service
  • sftp - Secure File Transfer Protocol

NFSマウントをposixリポジトリとして使用する場合、PostgreSQLのドキュメントに記載されたものと同じ規則がpgBackRestにも適用されます。データベースクラスターの作成 - ファイルシステム を参照してください。

default: posix
example: --repo1-type=cifs

stanzaオプション

PostgreSQLデータベースオプション(--pg-database)

PostgreSQLのデータベースです。

PostgreSQLへの接続に使用するデータベース名です。通常はデフォルトが最適ですが、このデータベースが存在しない環境もあります。

従来の動作を維持するため、環境変数PGDATABASEの設定は無視されます。

default: postgres
example: --pg1-database=backupdb

PostgreSQLホストオプション(--pg-host)

リモート操作時のPostgreSQLホストです。

PostgreSQLホストとリポジトリホストが異なる場合のバックアップに使用します。

example: --pg1-host=db.domain.com

非推奨の名前:db-host

PostgreSQLホスト認証局ファイルオプション(--pg-host-ca-file)

PostgreSQLホストの認証局ファイルです。

PostgreSQLホストへの接続に、システムのデフォルト以外のCAファイルを使用します。

example: --pg1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt

PostgreSQLホスト認証局パスオプション(--pg-host-ca-path)

PostgreSQLホストの認証局パスです。

PostgreSQLホストへの接続に、システムのデフォルト以外のCAパスを使用します。

example: --pg1-host-ca-path=/etc/pki/tls/certs

PostgreSQLホスト証明書ファイルオプション(--pg-host-cert-file)

PostgreSQLホストの証明書ファイルです。

クライアントの身元を証明するためにPostgreSQLホストに送信します。

example: --pg1-host-cert-file=/path/to/client.crt

PostgreSQLホストコマンドオプション(--pg-host-cmd)

PostgreSQLホストのpgBackRestコマンドです。

pgBackRestコマンドのパスがローカルホストとPostgreSQLホストで異なる場合にのみ必要です。未定義の場合、PostgreSQLホストのコマンドにはローカルと同じコマンドを設定します。

default: [path of executed pgbackrest binary]
example: --pg1-host-cmd=/usr/lib/backrest/bin/pgbackrest

非推奨の名前:db-cmd

PostgreSQLホスト設定オプション(--pg-host-config)

pgBackRestデータベースホストの設定ファイルです。

PostgreSQLホスト上の設定ファイルの場所を設定します。PostgreSQLホストの設定ファイルがローカルの設定ファイルと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --pg1-host-config=/conf/pgbackrest/pgbackrest.conf

非推奨の名前:db-config

PostgreSQLホスト追加設定パスオプション(--pg-host-config-include-path)

pgBackRestデータベースホストの追加設定パスです。

PostgreSQLホスト上の追加設定パスの場所を設定します。PostgreSQLホストの追加設定パスがローカルの追加設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --pg1-host-config-include-path=/conf/pgbackrest/conf.d

PostgreSQLホスト設定パスオプション(--pg-host-config-path)

pgBackRestデータベースホストの設定パスです。

PostgreSQLホスト上の設定パスの場所を設定します。PostgreSQLホストの設定パスがローカルの設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH
example: --pg1-host-config-path=/conf/pgbackrest

PostgreSQLホストキーファイルオプション(--pg-host-key-file)

PostgreSQLホストのキーファイルです。

クライアント証明書が所有者によって送信されたことを証明します。

example: --pg1-host-key-file=/path/to/client.key

PostgreSQLホストポートオプション(--pg-host-port)

pg-hostが設定されている場合のPostgreSQLホストのポートです。

PostgreSQLホストのプロトコルにデフォルト以外のポートを指定するには、このオプションを使用します。

注記: pg-host-type=sshの場合、pg-host-portにデフォルト値はありません。この場合、ポートはcmd-sshで指定したコマンドの設定に従います。

default (depending on pg-host-type):
    tls - 8432

allowed: [0, 65535]
example: --pg1-host-port=25

非推奨の名前:db-ssh-port

PostgreSQLホストプロトコル種別オプション(--pg-host-type)

PostgreSQLホストのプロトコル種別です。

次のプロトコル種別をサポートします。

  • ssh - Secure Shell。
  • tls - pgBackRest TLSサーバー。
default: ssh
example: --pg1-host-type=tls

PostgreSQLホストユーザーオプション(--pg-host-user)

pg-hostが設定されている場合のPostgreSQLホストへのログインユーザーです。

このユーザーはリモートのpgBackRestプロセスも所有し、PostgreSQLへの接続を開始します。正しく動作させるには、PostgreSQLデータベースクラスターの所有者を使用してください。通常はデフォルトのpostgresです。

default: postgres
example: --pg1-host-user=db_owner

非推奨の名前:db-user

PostgreSQLパスオプション(--pg-path)

PostgreSQLのデータディレクトリです。

PostgreSQLが報告するdata_directoryと同じ値を設定してください。この値はさまざまな場所から読み取れますが、リストアやオフラインバックアップ時にそれらを利用できない場合に備えて、設定しておくことが賢明です。

pg-pathオプションは、オンラインバックアップのたびにPostgreSQLが報告する値と照合されるため、常に最新の値であるはずです。

example: --pg1-path=/data/db

非推奨の名前:db-path

PostgreSQLポートオプション(--pg-port)

PostgreSQLのポートです。

PostgreSQLが使用しているポートです。ほとんどのPostgreSQLクラスターはデフォルトのポートを使用するため、通常は指定する必要がありません。

default: 5432
allowed: [0, 65535]
example: --pg1-port=6543

非推奨の名前:db-port

PostgreSQLソケットパスオプション(--pg-socket-path)

PostgreSQLのunixソケットパスです。

PostgreSQLの起動時に指定したunixソケットディレクトリです。pgBackRestはOSの標準の場所を自動検索するため、postgresql.confのunix_socket_directories設定でソケットディレクトリを明示的に変更した場合を除き、通常はこの設定を指定する必要がありません。

example: --pg1-socket-path=/var/run/postgresql

非推奨の名前:db-socket-path

PostgreSQLデータベースユーザーオプション(--pg-user)

PostgreSQLのデータベースユーザーです。

PostgreSQLへの接続に使用するデータベースユーザー名です。未指定の場合、pgBackRestはローカルのOSユーザーまたはPGUSERで接続します。

example: --pg1-user=backupuser

4.15 - stanza削除コマンド(stanza-delete)

pgBackRestのstanza-deleteコマンドのオプションと動作のリファレンス。

stanza-deleteコマンドは、stanzaに関連するリポジトリ内のデータを削除します。

警告:

このコマンドは慎重に使用してください。指定したstanzaのすべてのバックアップとアーカイブを、pgBackRestリポジトリから恒久的に削除します。

stanzaを削除する手順は次のとおりです。

  • stanzaに関連するPostgreSQLクラスターを停止します(または–forceでこの条件を無視します)。
  • stanza-deleteコマンドを実行するホストでstopコマンドを実行します。
  • stanza-deleteコマンドを実行します。

コマンドが正常に完了したら、ユーザーの責任で、すべてのpgBackRest設定ファイルや環境変数からstanzaを削除してください。

stanzaは、一度に1つのリポジトリからしか削除できません。複数のリポジトリからstanzaを削除するには、--repoオプションを指定し、各リポジトリに対してstanza-deleteコマンドを繰り返し実行します。

コマンドオプション

強制オプション(--force)

stanzaの削除を強制します。

stanzaのPostgreSQLがまだ稼働している場合、このオプションでリポジトリからのstanzaの削除を強制できます。

default: n
example: --no-force

一般オプション

rootでの実行許可オプション(--allow-root)

rootユーザーによるコマンドの実行を許可します。

デフォルトでは、ファイルの所有権を慎重に管理するように設計されたrestoreコマンドのみをrootユーザーで実行できます。ほかのコマンドをrootで実行すると、たとえばリポジトリ内にroot所有のファイルが作成され、PostgreSQLユーザーがアクセスできなくなって、後続のコマンドが失敗するおそれがあります。

それでもコマンドをrootで実行する場合は、このオプションを有効にします。ただし、リポジトリとPostgreSQLクラスターを所有するユーザーとしてpgBackRestを実行する方がはるかに適切です。

default: n
example: --allow-root

バッファーサイズオプション(--buffer-size)

I/O処理のバッファーサイズです。

コピー、圧縮、暗号化などの処理に使用するバッファーサイズです。使用するバッファーの数はオプションによって異なり、各処理で追加のメモリを使用する場合があります。たとえば、gz圧縮では256KiBのメモリを追加で使用する場合があります。

指定できる値は、16KiB、32KiB、64KiB、128KiB、256KiB、512KiB、1MiB、2MiB、4MiB、8MiB、16MiBです。

default: 1MiB
example: --buffer-size=2MiB

SSHクライアントコマンドオプション(--cmd-ssh)

SSHクライアントのコマンドです。

別のSSHクライアントを使用したい場合や、sshコマンドが$PATHに含まれていない場合に、使用するSSHクライアントコマンドを指定します。

default: ssh
example: --cmd-ssh=/usr/bin/ssh

ネットワーク圧縮レベルオプション(--compress-level-network)

ネットワークの圧縮レベルです。

compress-type=noneで、コマンドがリポジトリと同じホストで実行されない場合のネットワーク圧縮レベルを設定します。圧縮によってネットワークトラフィックを削減します。compress-typeがnoneでない場合は、ファイルを1回だけ圧縮するように、compress-level-network設定を無視して代わりにcompress-levelを使用します。

default: 1
allowed: [-5, 12]
example: --compress-level-network=1

設定ファイルオプション(--config)

pgBackRestの設定ファイルです。

デフォルトとは異なる設定ファイルを指定するには、このオプションを使用します。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --config=/conf/pgbackrest/pgbackrest.conf

追加設定パスオプション(--config-include-path)

追加のpgBackRest設定ファイルへのパスです。

指定した場所にある拡張子.confの設定ファイルをpgBackRest設定ファイルと連結し、1つの設定ファイルとして扱います。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --config-include-path=/conf/pgbackrest/conf.d

設定パスオプション(--config-path)

pgBackRest設定ファイルの基準パスです。

この設定は、--configと--config-include-pathの各オプションがコマンドラインで明示的に設定されていない場合に、それらのデフォルトの基準パスを上書きします。

たとえば、--config-path=/conf/pgbackrestだけを渡すと、--configのデフォルトは/conf/pgbackrest/pgbackrest.confに、--config-include-pathのデフォルトは/conf/pgbackrest/conf.dに設定されます。

default: CFGOPTDEF_CONFIG_PATH
example: --config-path=/conf/pgbackrest

データベースタイムアウトオプション(--db-timeout)

データベースクエリーのタイムアウトです。

データベースに対するクエリーのタイムアウトを秒単位で設定します。これには、それぞれかなりの時間がかかる可能性があるバックアップの開始/停止関数も含まれます。そのため、これらの関数が速やかに戻ることがわかっている場合(つまり、start-fast=yを設定し、バックアップ中にデータベースクラスターが多数のWALセグメントを生成しないことがわかっている場合)を除き、タイムアウトは長めにしておくことを推奨します。

注記: db-timeoutオプションは、protocol-timeoutオプションより小さくする必要があります。

default: 30m
allowed: [100ms, 7d]
example: --db-timeout=600

I/Oタイムアウトオプション(--io-timeout)

I/Oのタイムアウトです。

接続および読み取り/書き込み処理に使用する、秒単位のタイムアウトです。

読み取り/書き込み処理全体がこのタイムアウト内に完了する必要はありませんが、わずか1バイトでも、何らかの進展が必要です。

default: 1m
allowed: [100ms, 1h]
example: --io-timeout=120

ロックパスオプション(--lock-path)

ロックファイルを保存するパスです。

ロックパスは、pgBackRestが競合する処理の同時実行を防ぐためのロックファイルを作成する場所です。

default: /tmp/pgbackrest
example: --lock-path=/backup/db/lock

固定umaskオプション(--neutral-umask)

固定のumaskを使用します。

umaskを0000に設定し、リポジトリ内のファイルやディレクトリが適切な権限で作成されるようにします。デフォルトのディレクトリ権限は0750、ファイル権限は0640です。

代わりに実行ユーザーのumaskを使用するには、設定ファイルにneutral-umask=n、またはコマンドラインに--no-neutral-umaskを指定します。

default: y
example: --no-neutral-umask

プロセス優先度設定オプション(--priority)

プロセスの優先度を設定します。

カーネルのスケジューラーがプロセスに与える優先度(niceness)を定義します。正の値は優先度を下げ、負の値は優先度を上げます。通常、プロセスには自身の優先度を上げる権限がありません。

allowed: [-20, 19]
example: --priority=19

プロトコルタイムアウトオプション(--protocol-timeout)

プロトコルのタイムアウトです。

ローカルまたはリモートのプロセスが、プロトコル層で新しいメッセージの受信を待つタイムアウトを秒単位で設定します。これにより、プロセスがメッセージを無期限に待ち続けることを防ぎます。

注記: protocol-timeoutオプションは、db-timeoutオプションより大きくする必要があります。

default: 31m
allowed: [100ms, 7d]
example: --protocol-timeout=630

キープアライブオプション(--sck-keep-alive)

キープアライブを有効にします。

ソケット接続でキープアライブメッセージを有効にします。

default: y
example: --no-sck-keep-alive

stanzaオプション(--stanza)

stanzaを定義します。

stanzaは、PostgreSQLデータベースクラスターの場所、バックアップ方法、アーカイブオプションなどを定義する設定です。ほとんどのデータベースサーバーにはPostgreSQLデータベースクラスターが1つだけ存在し、stanzaも1つになります。一方、バックアップサーバーには、バックアップが必要なデータベースクラスターごとにstanzaがあります。

stanzaにはプライマリークラスターにちなんだ名前を付けたくなりますが、クラスターに含まれるデータベースを表す名前の方が適しています。stanza名はプライマリーとすべてのレプリカで使用するため、mainやprodなどのローカルクラスター名よりも、appやdwなど、クラスターの実際の役割を表す名前を選ぶ方が適切です。

example: --stanza=main

キープアライブ回数オプション(--tcp-keep-alive-count)

キープアライブの回数です。

接続が切れたと判断するまでに、応答がなくても許容するTCPキープアライブメッセージの数を指定します。

このオプションは、TCP_KEEPCNTソケットオプションをサポートするシステムで利用できます。

allowed: [1, 32]
example: --tcp-keep-alive-count=3

キープアライブ待機時間オプション(--tcp-keep-alive-idle)

キープアライブの待機時間です。

ネットワーク通信がない状態で、オペレーティングシステムがTCPキープアライブメッセージを送信するまでの時間を秒単位で指定します。

このオプションは、TCP_KEEPIDLEソケットオプションをサポートするシステムで利用できます。

allowed: [1, 3600]
example: --tcp-keep-alive-idle=60

キープアライブ間隔オプション(--tcp-keep-alive-interval)

キープアライブの送信間隔です。

応答のないTCPキープアライブメッセージを再送信するまでの時間を秒単位で指定します。

このオプションは、TCP_KEEPINTVLソケットオプションをサポートするシステムで利用できます。

allowed: [1, 900]
example: --tcp-keep-alive-interval=30

TLSv1.2暗号スイートオプション(--tls-cipher-12)

許可するTLSv1.2暗号スイートです。

pgBackRestクライアントとサーバー間のすべてのTLS接続は暗号化されます。デフォルトでは、オブジェクトストア(例:S3)への接続も暗号化されます。

注記: どのトランスポート接続でも、セキュリティーの最低要件はTLSv1.2です。

必要に応じて、受け入れる暗号スイートを調整できます。特別なセキュリティー要件がなければ、例に示す値が妥当な選択です。未設定(デフォルト)の場合は、使用するOpenSSLライブラリのデフォルトが適用されます。

example: --tls-cipher-12=HIGH:MEDIUM:+3DES:!aNULL

TLSv1.3暗号スイートオプション(--tls-cipher-13)

許可するTLSv1.3暗号スイートです。

pgBackRestクライアントとサーバー間のすべてのTLS接続は暗号化されます。デフォルトでは、オブジェクトストア(例:S3)への接続も暗号化されます。

注記: どのトランスポート接続でも、セキュリティーの最低要件はTLSv1.2です。

必要に応じて、受け入れる暗号スイートを調整できます。未設定(デフォルト)の場合は、使用するOpenSSLライブラリのデフォルトが適用されます。

example: --tls-cipher-13=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256

ログオプション

コンソールログレベルオプション(--log-level-console)

コンソールに出力するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: warn
example: --log-level-console=error

ファイルログレベルオプション(--log-level-file)

ファイルに記録するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: info
example: --log-level-file=debug

標準エラーログレベルオプション(--log-level-stderr)

stderrに出力するログのレベルです。

stdout(log-level-consoleで指定)の代わりにstderrへ出力するログレベルを指定します。stderrにはタイムスタンプとプロセスを出力しません。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: off
example: --log-level-stderr=error

ログパスオプション(--log-path)

ログファイルを保存するパスです。

ログパスは、pgBackRestがログファイルを保存する場所です。log-level-file=offの場合、ログパスは不要です。

default: /var/log/pgbackrest
example: --log-path=/backup/db/log

サブプロセスログオプション(--log-subprocess)

サブプロセスでのログ記録を有効にします。

このプロセスが作成するすべてのサブプロセスで、log-level-fileで指定したログレベルによるファイルへのログ記録を有効にします。

default: n
example: --log-subprocess

ログタイムスタンプオプション(--log-timestamp)

ログのタイムスタンプを有効にします。

コンソールとファイルのログでタイムスタンプを有効にします。このオプションは、ドキュメント生成などの特殊な状況では無効にします。

default: y
example: --no-log-timestamp

メンテナー向けオプション

PostgreSQLバージョン強制指定オプション(--pg-version-force)

PostgreSQLのバージョンを強制指定します。

pg_controlまたはWALヘッダーを読み取って自動検出したバージョンの代わりに、指定したPostgreSQLバージョンを使用します。これは主に、これらの値がリリース版とは異なるPostgreSQLのフォークや開発版で役立ちます。PostgreSQLがserver_version_numで報告するバージョンは、強制指定したバージョンと一致する必要があります。

警告:

このオプションは慎重に使用してください。pg_controlとWALヘッダーは引き続き、指定バージョンで想定される形式、つまり公式のオープンソース版PostgreSQLの形式で読み取られます。フォークや開発版が、pgBackRestの依存するフィールドの形式を変更していると、予期しない動作が生じます。一般に、このオプションが想定どおりに動作するのは、フォークが独自の構造体メンバーをすべて標準のPostgreSQLメンバーの後ろに追加している場合に限られます。

example: --pg-version-force=15

リポジトリオプション

リポジトリ指定オプション(--repo)

リポジトリを指定します。

コマンドの操作対象となるリポジトリを指定します。

たとえば、このオプションを使用すると、pgBackRestに選択させずに、特定のリポジトリからリストアできます。

allowed: [1, 256]
example: --repo=1

Azureリポジトリコンテナーオプション(--repo-azure-container)

Azureリポジトリのコンテナーです。

リポジトリの保存に使用するAzureコンテナーです。

repo-path=/を設定するとpgBackRestリポジトリをコンテナーのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのAzureが生成するコンテンツもコンテナーに保存できるようにすることを推奨します。

example: --repo1-azure-container=pg-backup

Azureリポジトリキー種別オプション(--repo-azure-key-type)

Azureリポジトリのキー種別です。

認可には次の種別をサポートします。

  • shared - 共有キー
  • sas - 共有アクセス署名
  • auto - AzureマネージドIDを使用して自動的に認可
default: shared
example: --repo1-azure-key-type=sas

AzureリポジトリURI形式オプション(--repo-azure-uri-style)

AzureのURI形式です。

次のURI形式をサポートします。

  • host - account.endpointホストに接続します。
  • path - endpointホストに接続し、URIの先頭にアカウントを付加します。
default: host
example: --repo1-azure-uri-style=path

リポジトリ暗号方式オプション(--repo-cipher-type)

リポジトリの暗号化に使用する暗号方式です。

次の暗号方式をサポートします。

  • none - リポジトリを暗号化しません
  • aes-256-cbc - 鍵長256ビットのAdvanced Encryption Standard

リポジトリの種類(例:S3)が暗号化をサポートしていても、暗号化は常にクライアント側で実行されます。

default: none
example: --repo1-cipher-type=aes-256-cbc

GCSリポジトリバケットオプション(--repo-gcs-bucket)

GCSリポジトリのバケットです。

リポジトリの保存に使用するGCSバケットです。

repo-path=/を設定するとpgBackRestリポジトリをバケットのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのGCSが生成するコンテンツもバケットに保存できるようにすることを推奨します。

example: --repo1-gcs-bucket=/pg-backup

GCSリポジトリエンドポイントオプション(--repo-gcs-endpoint)

GCSリポジトリのエンドポイントです。

ストレージサービスへの接続に使用するエンドポイントです。ローカルのGCSサーバーや別のエンドポイントを使用するように変更できます。

default: storage.googleapis.com
example: --repo1-gcs-endpoint=localhost

GCSリポジトリキー種別オプション(--repo-gcs-key-type)

GCSリポジトリのキー種別です。

認可には次の種別をサポートします。

  • auto - インスタンスのサービスアカウントを使用して認可します。
  • service - ローカルに保存したキーでサービスアカウントを使用します。
  • token - fakegcsなどを使用するローカルテスト用です。

repo-gcs-key-type=serviceの場合、認証トークンの更新時に認証情報を再読み込みします。

default: service
example: --repo1-gcs-key-type=auto

GCSリポジトリプロジェクトIDオプション(--repo-gcs-user-project)

GCSのプロジェクトIDです。

リクエストの課金先を決定するために使用するGCSプロジェクトIDです。

example: --repo1-gcs-user-project=my-project

リポジトリホストオプション(--repo-host)

リモート操作時のリポジトリホストです。

ローカルにマウントされたファイルシステムにバックアップおよびアーカイブする場合、この設定は不要です。

example: --repo1-host=repo1.domain.com

非推奨の名前:backup-host

リポジトリホスト認証局ファイルオプション(--repo-host-ca-file)

リポジトリホストの認証局ファイルです。

リポジトリホストへの接続に、システムのデフォルト以外のCAファイルを使用します。

example: --repo1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt

リポジトリホスト認証局パスオプション(--repo-host-ca-path)

リポジトリホストの認証局パスです。

リポジトリホストへの接続に、システムのデフォルト以外のCAパスを使用します。

example: --repo1-host-ca-path=/etc/pki/tls/certs

リポジトリホスト証明書ファイルオプション(--repo-host-cert-file)

リポジトリホストの証明書ファイルです。

クライアントの身元を証明するためにリポジトリホストに送信します。

example: --repo1-host-cert-file=/path/to/client.crt

リポジトリホストコマンドオプション(--repo-host-cmd)

リポジトリホストのpgBackRestコマンドです。

pgBackRestコマンドのパスがローカルホストとリポジトリホストで異なる場合にのみ必要です。未定義の場合、リポジトリホストのコマンドにはローカルと同じコマンドを設定します。

default: [path of executed pgbackrest binary]
example: --repo1-host-cmd=/usr/lib/backrest/bin/pgbackrest

非推奨の名前:backup-cmd

リポジトリホスト設定オプション(--repo-host-config)

pgBackRestリポジトリホストの設定ファイルです。

リポジトリホスト上の設定ファイルの場所を設定します。リポジトリホストの設定ファイルがローカルの設定ファイルと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --repo1-host-config=/conf/pgbackrest/pgbackrest.conf

非推奨の名前:backup-config

リポジトリホスト追加設定パスオプション(--repo-host-config-include-path)

pgBackRestリポジトリホストの追加設定パスです。

リポジトリホスト上の追加設定パスの場所を設定します。リポジトリホストの追加設定パスがローカルの追加設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --repo1-host-config-include-path=/conf/pgbackrest/conf.d

リポジトリホスト設定パスオプション(--repo-host-config-path)

pgBackRestリポジトリホストの設定パスです。

リポジトリホスト上の設定パスの場所を設定します。リポジトリホストの設定パスがローカルの設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH
example: --repo1-host-config-path=/conf/pgbackrest

リポジトリホストキーファイルオプション(--repo-host-key-file)

リポジトリホストのキーファイルです。

クライアント証明書が所有者によって送信されたことを証明します。

example: --repo1-host-key-file=/path/to/client.key

リポジトリホストポートオプション(--repo-host-port)

repo-hostが設定されている場合のリポジトリホストのポートです。

リポジトリホストのプロトコルにデフォルト以外のポートを指定するには、このオプションを使用します。

注記: repo-host-type=sshの場合、repo-host-portにデフォルト値はありません。この場合、ポートはcmd-sshで指定したコマンドの設定に従います。

default (depending on repo-host-type):
    tls - 8432

allowed: [0, 65535]
example: --repo1-host-port=25

非推奨の名前:backup-ssh-port

リポジトリホストプロトコル種別オプション(--repo-host-type)

リポジトリホストのプロトコル種別です。

次のプロトコル種別をサポートします。

  • ssh - Secure Shell。
  • tls - pgBackRest TLSサーバー。
default: ssh
example: --repo1-host-type=tls

リポジトリホストユーザーオプション(--repo-host-user)

repo-hostが設定されている場合のリポジトリホストのユーザーです。

リポジトリホスト上の操作に使用するユーザーを定義します。postgresユーザーではなく、pgbackrestなどの別のユーザーを使用することを推奨します。リポジトリホストでPostgreSQLを実行する場合は、postgresユーザーをpgbackrestグループに追加することで、リポジトリの内容を誤って破損させずに読み取り権限を与えられます。

default: pgbackrest
example: --repo1-host-user=repo-user

非推奨の名前:backup-user

リポジトリパスオプション(--repo-path)

バックアップとアーカイブを保存するパスです。

リポジトリは、pgBackRestがバックアップを保存し、WALセグメントをアーカイブする場所です。

必要な容量を事前に見積もるのは難しい場合があります。まずいくつかバックアップを取得し、各種類(full/incr/diff)のバックアップサイズを記録して、1日当たりに生成されるWALの量を測定するのが最善です。これにより、必要な容量のおおよその見当が付きます。ただし、データベースの変化に伴い、必要量も時間とともに変わる可能性があります。

default: /var/lib/pgbackrest
example: --repo1-path=/backup/db/backrest

S3リポジトリバケットオプション(--repo-s3-bucket)

S3リポジトリのバケットです。

リポジトリの保存に使用するS3バケットです。

repo-path=/を設定するとpgBackRestリポジトリをバケットのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのAWSが生成するコンテンツもバケットに保存できるようにすることを推奨します。

example: --repo1-s3-bucket=pg-backup

S3リポジトリエンドポイントオプション(--repo-s3-endpoint)

S3リポジトリのエンドポイントです。

選択したリージョンに対して有効なAWSエンドポイントを使用してください。

独自の構成やテスト構成では、repo-storage-ca-file、repo-storage-ca-path、repo-storage-host、repo-storage-port、repo-storage-verify-tlsの各オプションが役立つ場合があります。

example: --repo1-s3-endpoint=s3.amazonaws.com

S3リポジトリキー種別オプション(--repo-s3-key-type)

S3リポジトリのキー種別です。

次の種別をサポートします。

  • shared - 共有キー
  • auto - 一時認証情報を自動取得
  • web-id - ウェブID認証情報を自動取得
  • pod-id - EKS Pod Identityの認証情報を自動取得
  • process - プロセスを実行して認証情報を取得
default: shared
example: --repo1-s3-key-type=auto

S3リポジトリKMSキーIDオプション(--repo-s3-kms-key-id)

S3リポジトリのKMSキーです。

指定したAWS Key Management Serviceのキーを使用して、S3のサーバー側暗号化を有効にします。

example: --repo1-s3-kms-key-id=bceb4f13-6939-4be3-910d-df54dee817b7

S3認証プロセスコマンドオプション(--repo-s3-process-cmd)

S3の認証プロセスコマンドです。

一時的なS3認証情報を取得するために実行するコマンド(および任意の引数)です。リストの最初の要素がコマンドで、残りの要素はパラメーターとして渡します。

プロセスは、AccessKeyId、SecretAccessKey、SessionToken、Expirationフィールドを含むJSONを出力する必要があります。認証情報は有効期限の前に自動更新されます。形式の詳細は、プロセス認証情報プロバイダー を参照してください。

example: --repo1-s3-process-cmd=/usr/local/bin/get-credentials --repo1-s3-process-cmd=--role --repo1-s3-process-cmd=my-role

S3リポジトリリージョンオプション(--repo-s3-region)

S3リポジトリのリージョンです。

バケットを作成したAWSリージョンです。

example: --repo1-s3-region=us-east-1

S3リポジトリのリクエスタ支払いオプション(--repo-s3-requester-pays)

S3リポジトリのリクエスタ支払いです。

S3のリクエスタ支払いを有効にします。

default: n
example: --no-repo1-s3-requester-pays

S3リポジトリロールオプション(--repo-s3-role)

S3リポジトリのロールです。

repo-s3-key-type=autoの場合に、一時認証情報の取得に使用するAWSロール名(完全なARNではありません)です。

example: --repo1-s3-role=authrole

S3リポジトリサービスオプション(--repo-s3-service)

S3の署名サービスです。

SigV4認証で使用するS3署名サービスです。標準のS3エンドポイントでは、デフォルトはs3です。S3 Outpostsエンドポイントを使用する場合は、s3-outpostsに設定します。

default: s3
example: --repo1-s3-service=s3-outposts

S3リポジトリSTSエンドポイントオプション(--repo-s3-sts-host)

S3リポジトリのSTSエンドポイントです。

repo-s3-key-type=web-idを設定した場合に、一時認証情報の取得に使用するSTSエンドポイントです。リージョン別STSを使用するには、リージョン別エンドポイント(例:sts.us-east-1.amazonaws.com)を設定します。GovCloudや中国リージョンで必要になる場合や、レイテンシーを低減するために使用する場合があります。

default: sts.amazonaws.com
example: --repo1-s3-sts-host=sts.us-east-1.amazonaws.com

S3リポジトリURI形式オプション(--repo-s3-uri-style)

S3のURI形式です。

次のURI形式をサポートします。

  • host - bucket.endpointホストに接続します。
  • path - endpointホストに接続し、URIの先頭にバケットを付加します。
default: host
example: --repo1-s3-uri-style=path

SFTPリポジトリホストオプション(--repo-sftp-host)

SFTPリポジトリのホストです。

リポジトリが存在するSFTPホストです。

example: --repo1-sftp-host=sftprepo.domain

SFTPリポジトリホストフィンガープリントオプション(--repo-sftp-host-fingerprint)

SFTPリポジトリホストのフィンガープリントです。

SFTPリポジトリホストのフィンガープリントの生成方法は、repo-sftp-host-key-hash-typeと一致させてください。awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -bでフィンガープリントを生成します。sshホストキーは通常、/etc/sshディレクトリにあります。

example: --repo1-sftp-host-fingerprint=f84e172dfead7aeeeae6c1fdfb5aa8cf

SFTPホストキー確認方式オプション(--repo-sftp-host-key-check-type)

SFTPのホストキー確認方式です。

次のSFTPホストキー確認方式をサポートします。

  • strict - pgBackRestは~/.ssh/known_hostsファイルにホストキーを自動追加せず、ホストキーが変更されたホスト、または既知のホストファイルで見つからないホストへの接続を拒否します。このオプションでは、新しいホストをすべて手動で追加する必要があります。
  • accept-new - pgBackRestは新しいホストキーをユーザーの既知のホストファイルに自動追加しますが、ホストキーが変更されたホストへの接続は許可しません。
  • fingerprint - pgBackRestは、repo-sftp-host-fingerprintオプションで指定したフィンガープリントとホストキーを照合します。
  • none - ホストキーを確認しません。
default: strict
example: --repo1-sftp-host-key-check-type=accept-new

SFTPリポジトリホストキーハッシュ種別オプション(--repo-sftp-host-key-hash-type)

SFTPリポジトリのホストキーハッシュ種別です。

SFTPリポジトリのホストキーハッシュ種別です。SSHの開始時に、リモートシステムのホストキーのダイジェスト計算に使用するハッシュ種別を指定します。新しいバージョンのlibssh2は、md5とsha1に加えてsha256もサポートします。

example: --repo1-sftp-host-key-hash-type=sha256

SFTPリポジトリホストポートオプション(--repo-sftp-host-port)

SFTPリポジトリホストのポートです。

SFTPリポジトリホストのポートです。

default: 22
allowed: [1, 65535]
example: --repo1-sftp-host-port=22

SFTPリポジトリホストユーザーオプション(--repo-sftp-host-user)

SFTPリポジトリホストのユーザーです。

リポジトリの保存に使用するホスト上のユーザーです。

example: --repo1-sftp-host-user=pg-backup

SFTP既知ホストファイルオプション(--repo-sftp-known-host)

SFTPの既知のホストファイルです。

認証時に一致するSFTPホストを探す既知のホストファイルです。未指定の場合、pgBackRestはデフォルトで~/.ssh/known_hosts、~/.ssh/known_hosts2、/etc/ssh/ssh_known_hosts、/etc/ssh/ssh_known_hosts2を検索します。1つ以上のファイルパスを設定した場合は、それらを検索して一致を確認します。ファイルパスは絶対パス、または先頭がチルダのパスである必要があります。repo-sftp-known-hostオプションを複数回指定することで、検索する既知のホストファイルを複数指定できます。既知のホストファイルによる確認を使用するには、repo-sftp-host-fingerprintを指定してはいけません。repo-sftp-host-check-typeオプションも参照してください。

example: --repo1-sftp-known-host=/home/postgres/.ssh/known_hosts

SFTPリポジトリ秘密鍵ファイルオプション(--repo-sftp-private-key-file)

SFTPの秘密鍵ファイルです。

認証に使用するSFTP秘密鍵ファイルです。

example: --repo1-sftp-private-key-file=~/.ssh/id_ed25519

SFTPリポジトリ公開鍵ファイルオプション(--repo-sftp-public-key-file)

SFTPの公開鍵ファイルです。

認証に使用するSFTP公開鍵ファイルです。OpenSSLに対してコンパイルした場合は任意ですが、別のライブラリに対してコンパイルした場合は必須です。

example: --repo1-sftp-public-key-file=~/.ssh/id_ed25519.pub

リポジトリストレージCAファイルオプション(--repo-storage-ca-file)

リポジトリストレージのCAファイルです。

ストレージ(例:S3、Azure)の証明書に、システムのデフォルト以外のCAファイルを使用します。

example: --repo1-storage-ca-file=/etc/pki/tls/certs/ca-bundle.crt

非推奨の名前:repo-azure-ca-file, repo-s3-ca-file

リポジトリストレージTLS CAパスオプション(--repo-storage-ca-path)

リポジトリストレージのCAパスです。

ストレージ(例:S3、Azure)の証明書に、システムのデフォルト以外のCAパスを使用します。

example: --repo1-storage-ca-path=/etc/pki/tls/certs

非推奨の名前:repo-azure-ca-path, repo-s3-ca-path

リポジトリストレージホストオプション(--repo-storage-host)

リポジトリストレージのホストです。

ストレージ(例:S3、Azure)のエンドポイントとは異なるホストに接続します。通常はテストに使用します。

example: --repo1-storage-host=127.0.0.1

非推奨の名前:repo-azure-host, repo-s3-host

リポジトリストレージポートオプション(--repo-storage-port)

リポジトリストレージのポートです。

ストレージ(例:S3、Azure)のエンドポイント(ホストを指定した場合はそのホスト)への接続に使用するポートです。

default: 443
allowed: [1, 65535]
example: --repo1-storage-port=9000

非推奨の名前:repo-azure-port, repo-s3-port

リポジトリストレージタグオプション(--repo-storage-tag)

リポジトリストレージのタグです。

リポジトリがオブジェクトストア(例:S3)の場合に、オブジェクトに付加するタグを指定します。このオプションを繰り返して、複数のタグを追加できます。

pgBackRestにはこれらのタグを変更する機能がないため、リポジトリ全体でタグを統一するには、stanza-createを実行する前に正しく設定してください。

example: --repo1-storage-tag=key1=value1

リポジトリストレージアップロードチャンクサイズオプション(--repo-storage-upload-chunk-size)

リポジトリストレージのアップロードチャンクサイズです。

S3などのオブジェクトストアでは、ファイルが大きすぎてメモリに格納できない場合に、チャンクに分けてアップロードできます。ファイルをメモリに格納できる場合でも、アップロードに使用するメモリ量を制限する方がメモリ効率は高くなります。

チャンクサイズを大きくすると、アップロードリクエストを最小限に抑え、チャンク分割せずに1回のリクエストでアップロードできるファイルが増えるため、一般にパフォーマンスが向上します。一方、メモリ使用量は増加します。チャンクバッファーはプロセスごとに割り当てる必要があるため、process-maxの値が大きいほど、全体のメモリ消費量も増えます。

有効なチャンクサイズは、ストレージの種類やプラットフォームによって異なります。たとえば、AWS S3の最小チャンクサイズは5MiBです。チャンクサイズの呼び方もストレージの種類によって異なるため、最小値/最大値を調べる際は、AWS S3では「part size」、GCSでは「chunk size」、Azureでは「block size」を使用してください。

ファイルが1GiB(PostgreSQLがデフォルトで作成する最大サイズ)より大きい場合、ファイルのアップロードを完了するために、許容される最大値までチャンクサイズを段階的に増やします。

default (depending on repo-type):
    azure - 4MiB
    gcs - 4MiB
    s3 - 5MiB

allow range (depending on repo-type):
    azure - [4MiB, 1GiB]
    gcs - [4MiB, 1GiB]
    s3 - [5MiB, 1GiB]

example: --repo1-storage-upload-chunk-size=16MiB

リポジトリストレージ証明書検証オプション(--repo-storage-verify-tls)

リポジトリストレージの証明書を検証します。

このオプションでは、ストレージ(例:S3、Azure)サーバーのTLS証明書の検証を有効/無効にできます。無効化は、テストや自己署名証明書を使用する場合に限ってください。

default: y
example: --no-repo1-storage-verify-tls

非推奨の名前:repo-azure-verify-tls, repo-s3-verify-ssl, repo-s3-verify-tls

リポジトリ種別オプション(--repo-type)

リポジトリに使用するストレージの種類です。

次のリポジトリ種類をサポートします。

  • azure - Azure Blob Storage Service
  • cifs - posixと同様ですが、リンクとディレクトリのfsyncを無効にします
  • gcs - Google Cloud Storage
  • posix - Posix準拠のファイルシステム
  • s3 - AWS Simple Storage Service
  • sftp - Secure File Transfer Protocol

NFSマウントをposixリポジトリとして使用する場合、PostgreSQLのドキュメントに記載されたものと同じ規則がpgBackRestにも適用されます。データベースクラスターの作成 - ファイルシステム を参照してください。

default: posix
example: --repo1-type=cifs

stanzaオプション

PostgreSQLデータベースオプション(--pg-database)

PostgreSQLのデータベースです。

PostgreSQLへの接続に使用するデータベース名です。通常はデフォルトが最適ですが、このデータベースが存在しない環境もあります。

従来の動作を維持するため、環境変数PGDATABASEの設定は無視されます。

default: postgres
example: --pg1-database=backupdb

PostgreSQLホストオプション(--pg-host)

リモート操作時のPostgreSQLホストです。

PostgreSQLホストとリポジトリホストが異なる場合のバックアップに使用します。

example: --pg1-host=db.domain.com

非推奨の名前:db-host

PostgreSQLホスト認証局ファイルオプション(--pg-host-ca-file)

PostgreSQLホストの認証局ファイルです。

PostgreSQLホストへの接続に、システムのデフォルト以外のCAファイルを使用します。

example: --pg1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt

PostgreSQLホスト認証局パスオプション(--pg-host-ca-path)

PostgreSQLホストの認証局パスです。

PostgreSQLホストへの接続に、システムのデフォルト以外のCAパスを使用します。

example: --pg1-host-ca-path=/etc/pki/tls/certs

PostgreSQLホスト証明書ファイルオプション(--pg-host-cert-file)

PostgreSQLホストの証明書ファイルです。

クライアントの身元を証明するためにPostgreSQLホストに送信します。

example: --pg1-host-cert-file=/path/to/client.crt

PostgreSQLホストコマンドオプション(--pg-host-cmd)

PostgreSQLホストのpgBackRestコマンドです。

pgBackRestコマンドのパスがローカルホストとPostgreSQLホストで異なる場合にのみ必要です。未定義の場合、PostgreSQLホストのコマンドにはローカルと同じコマンドを設定します。

default: [path of executed pgbackrest binary]
example: --pg1-host-cmd=/usr/lib/backrest/bin/pgbackrest

非推奨の名前:db-cmd

PostgreSQLホスト設定オプション(--pg-host-config)

pgBackRestデータベースホストの設定ファイルです。

PostgreSQLホスト上の設定ファイルの場所を設定します。PostgreSQLホストの設定ファイルがローカルの設定ファイルと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --pg1-host-config=/conf/pgbackrest/pgbackrest.conf

非推奨の名前:db-config

PostgreSQLホスト追加設定パスオプション(--pg-host-config-include-path)

pgBackRestデータベースホストの追加設定パスです。

PostgreSQLホスト上の追加設定パスの場所を設定します。PostgreSQLホストの追加設定パスがローカルの追加設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --pg1-host-config-include-path=/conf/pgbackrest/conf.d

PostgreSQLホスト設定パスオプション(--pg-host-config-path)

pgBackRestデータベースホストの設定パスです。

PostgreSQLホスト上の設定パスの場所を設定します。PostgreSQLホストの設定パスがローカルの設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH
example: --pg1-host-config-path=/conf/pgbackrest

PostgreSQLホストキーファイルオプション(--pg-host-key-file)

PostgreSQLホストのキーファイルです。

クライアント証明書が所有者によって送信されたことを証明します。

example: --pg1-host-key-file=/path/to/client.key

PostgreSQLホストポートオプション(--pg-host-port)

pg-hostが設定されている場合のPostgreSQLホストのポートです。

PostgreSQLホストのプロトコルにデフォルト以外のポートを指定するには、このオプションを使用します。

注記: pg-host-type=sshの場合、pg-host-portにデフォルト値はありません。この場合、ポートはcmd-sshで指定したコマンドの設定に従います。

default (depending on pg-host-type):
    tls - 8432

allowed: [0, 65535]
example: --pg1-host-port=25

非推奨の名前:db-ssh-port

PostgreSQLホストプロトコル種別オプション(--pg-host-type)

PostgreSQLホストのプロトコル種別です。

次のプロトコル種別をサポートします。

  • ssh - Secure Shell。
  • tls - pgBackRest TLSサーバー。
default: ssh
example: --pg1-host-type=tls

PostgreSQLホストユーザーオプション(--pg-host-user)

pg-hostが設定されている場合のPostgreSQLホストへのログインユーザーです。

このユーザーはリモートのpgBackRestプロセスも所有し、PostgreSQLへの接続を開始します。正しく動作させるには、PostgreSQLデータベースクラスターの所有者を使用してください。通常はデフォルトのpostgresです。

default: postgres
example: --pg1-host-user=db_owner

非推奨の名前:db-user

PostgreSQLパスオプション(--pg-path)

PostgreSQLのデータディレクトリです。

PostgreSQLが報告するdata_directoryと同じ値を設定してください。この値はさまざまな場所から読み取れますが、リストアやオフラインバックアップ時にそれらを利用できない場合に備えて、設定しておくことが賢明です。

pg-pathオプションは、オンラインバックアップのたびにPostgreSQLが報告する値と照合されるため、常に最新の値であるはずです。

example: --pg1-path=/data/db

非推奨の名前:db-path

PostgreSQLポートオプション(--pg-port)

PostgreSQLのポートです。

PostgreSQLが使用しているポートです。ほとんどのPostgreSQLクラスターはデフォルトのポートを使用するため、通常は指定する必要がありません。

default: 5432
allowed: [0, 65535]
example: --pg1-port=6543

非推奨の名前:db-port

PostgreSQLソケットパスオプション(--pg-socket-path)

PostgreSQLのunixソケットパスです。

PostgreSQLの起動時に指定したunixソケットディレクトリです。pgBackRestはOSの標準の場所を自動検索するため、postgresql.confのunix_socket_directories設定でソケットディレクトリを明示的に変更した場合を除き、通常はこの設定を指定する必要がありません。

example: --pg1-socket-path=/var/run/postgresql

非推奨の名前:db-socket-path

PostgreSQLデータベースユーザーオプション(--pg-user)

PostgreSQLのデータベースユーザーです。

PostgreSQLへの接続に使用するデータベースユーザー名です。未指定の場合、pgBackRestはローカルのOSユーザーまたはPGUSERで接続します。

example: --pg1-user=backupuser

4.16 - stanzaアップグレードコマンド(stanza-upgrade)

pgBackRestのstanza-upgradeコマンドのオプションと動作のリファレンス。

PostgreSQLを新しいメジャーバージョンにアップグレードした直後に、すべてのpgBackRest設定のpg-pathを新しいデータベースの場所に設定し、stanza-upgradeコマンドを実行する必要があります。ホストに複数のリポジトリが設定されている場合は、それぞれのstanzaをアップグレードします。データベースがオフラインの場合は、--no-onlineオプションを使用してください。

コマンドオプション

オンラインオプション(--online)

オンラインのクラスターを更新します。

–no-onlineを指定すると、stanzaのアップグレード時にpgBackRestはPostgreSQLに接続しません。

default: y
example: --no-online

一般オプション

rootでの実行許可オプション(--allow-root)

rootユーザーによるコマンドの実行を許可します。

デフォルトでは、ファイルの所有権を慎重に管理するように設計されたrestoreコマンドのみをrootユーザーで実行できます。ほかのコマンドをrootで実行すると、たとえばリポジトリ内にroot所有のファイルが作成され、PostgreSQLユーザーがアクセスできなくなって、後続のコマンドが失敗するおそれがあります。

それでもコマンドをrootで実行する場合は、このオプションを有効にします。ただし、リポジトリとPostgreSQLクラスターを所有するユーザーとしてpgBackRestを実行する方がはるかに適切です。

default: n
example: --allow-root

バッファーサイズオプション(--buffer-size)

I/O処理のバッファーサイズです。

コピー、圧縮、暗号化などの処理に使用するバッファーサイズです。使用するバッファーの数はオプションによって異なり、各処理で追加のメモリを使用する場合があります。たとえば、gz圧縮では256KiBのメモリを追加で使用する場合があります。

指定できる値は、16KiB、32KiB、64KiB、128KiB、256KiB、512KiB、1MiB、2MiB、4MiB、8MiB、16MiBです。

default: 1MiB
example: --buffer-size=2MiB

SSHクライアントコマンドオプション(--cmd-ssh)

SSHクライアントのコマンドです。

別のSSHクライアントを使用したい場合や、sshコマンドが$PATHに含まれていない場合に、使用するSSHクライアントコマンドを指定します。

default: ssh
example: --cmd-ssh=/usr/bin/ssh

ネットワーク圧縮レベルオプション(--compress-level-network)

ネットワークの圧縮レベルです。

compress-type=noneで、コマンドがリポジトリと同じホストで実行されない場合のネットワーク圧縮レベルを設定します。圧縮によってネットワークトラフィックを削減します。compress-typeがnoneでない場合は、ファイルを1回だけ圧縮するように、compress-level-network設定を無視して代わりにcompress-levelを使用します。

default: 1
allowed: [-5, 12]
example: --compress-level-network=1

設定ファイルオプション(--config)

pgBackRestの設定ファイルです。

デフォルトとは異なる設定ファイルを指定するには、このオプションを使用します。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --config=/conf/pgbackrest/pgbackrest.conf

追加設定パスオプション(--config-include-path)

追加のpgBackRest設定ファイルへのパスです。

指定した場所にある拡張子.confの設定ファイルをpgBackRest設定ファイルと連結し、1つの設定ファイルとして扱います。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --config-include-path=/conf/pgbackrest/conf.d

設定パスオプション(--config-path)

pgBackRest設定ファイルの基準パスです。

この設定は、--configと--config-include-pathの各オプションがコマンドラインで明示的に設定されていない場合に、それらのデフォルトの基準パスを上書きします。

たとえば、--config-path=/conf/pgbackrestだけを渡すと、--configのデフォルトは/conf/pgbackrest/pgbackrest.confに、--config-include-pathのデフォルトは/conf/pgbackrest/conf.dに設定されます。

default: CFGOPTDEF_CONFIG_PATH
example: --config-path=/conf/pgbackrest

データベースタイムアウトオプション(--db-timeout)

データベースクエリーのタイムアウトです。

データベースに対するクエリーのタイムアウトを秒単位で設定します。これには、それぞれかなりの時間がかかる可能性があるバックアップの開始/停止関数も含まれます。そのため、これらの関数が速やかに戻ることがわかっている場合(つまり、start-fast=yを設定し、バックアップ中にデータベースクラスターが多数のWALセグメントを生成しないことがわかっている場合)を除き、タイムアウトは長めにしておくことを推奨します。

注記: db-timeoutオプションは、protocol-timeoutオプションより小さくする必要があります。

default: 30m
allowed: [100ms, 7d]
example: --db-timeout=600

I/Oタイムアウトオプション(--io-timeout)

I/Oのタイムアウトです。

接続および読み取り/書き込み処理に使用する、秒単位のタイムアウトです。

読み取り/書き込み処理全体がこのタイムアウト内に完了する必要はありませんが、わずか1バイトでも、何らかの進展が必要です。

default: 1m
allowed: [100ms, 1h]
example: --io-timeout=120

ロックパスオプション(--lock-path)

ロックファイルを保存するパスです。

ロックパスは、pgBackRestが競合する処理の同時実行を防ぐためのロックファイルを作成する場所です。

default: /tmp/pgbackrest
example: --lock-path=/backup/db/lock

固定umaskオプション(--neutral-umask)

固定のumaskを使用します。

umaskを0000に設定し、リポジトリ内のファイルやディレクトリが適切な権限で作成されるようにします。デフォルトのディレクトリ権限は0750、ファイル権限は0640です。

代わりに実行ユーザーのumaskを使用するには、設定ファイルにneutral-umask=n、またはコマンドラインに--no-neutral-umaskを指定します。

default: y
example: --no-neutral-umask

プロセス優先度設定オプション(--priority)

プロセスの優先度を設定します。

カーネルのスケジューラーがプロセスに与える優先度(niceness)を定義します。正の値は優先度を下げ、負の値は優先度を上げます。通常、プロセスには自身の優先度を上げる権限がありません。

allowed: [-20, 19]
example: --priority=19

プロトコルタイムアウトオプション(--protocol-timeout)

プロトコルのタイムアウトです。

ローカルまたはリモートのプロセスが、プロトコル層で新しいメッセージの受信を待つタイムアウトを秒単位で設定します。これにより、プロセスがメッセージを無期限に待ち続けることを防ぎます。

注記: protocol-timeoutオプションは、db-timeoutオプションより大きくする必要があります。

default: 31m
allowed: [100ms, 7d]
example: --protocol-timeout=630

キープアライブオプション(--sck-keep-alive)

キープアライブを有効にします。

ソケット接続でキープアライブメッセージを有効にします。

default: y
example: --no-sck-keep-alive

stanzaオプション(--stanza)

stanzaを定義します。

stanzaは、PostgreSQLデータベースクラスターの場所、バックアップ方法、アーカイブオプションなどを定義する設定です。ほとんどのデータベースサーバーにはPostgreSQLデータベースクラスターが1つだけ存在し、stanzaも1つになります。一方、バックアップサーバーには、バックアップが必要なデータベースクラスターごとにstanzaがあります。

stanzaにはプライマリークラスターにちなんだ名前を付けたくなりますが、クラスターに含まれるデータベースを表す名前の方が適しています。stanza名はプライマリーとすべてのレプリカで使用するため、mainやprodなどのローカルクラスター名よりも、appやdwなど、クラスターの実際の役割を表す名前を選ぶ方が適切です。

example: --stanza=main

キープアライブ回数オプション(--tcp-keep-alive-count)

キープアライブの回数です。

接続が切れたと判断するまでに、応答がなくても許容するTCPキープアライブメッセージの数を指定します。

このオプションは、TCP_KEEPCNTソケットオプションをサポートするシステムで利用できます。

allowed: [1, 32]
example: --tcp-keep-alive-count=3

キープアライブ待機時間オプション(--tcp-keep-alive-idle)

キープアライブの待機時間です。

ネットワーク通信がない状態で、オペレーティングシステムがTCPキープアライブメッセージを送信するまでの時間を秒単位で指定します。

このオプションは、TCP_KEEPIDLEソケットオプションをサポートするシステムで利用できます。

allowed: [1, 3600]
example: --tcp-keep-alive-idle=60

キープアライブ間隔オプション(--tcp-keep-alive-interval)

キープアライブの送信間隔です。

応答のないTCPキープアライブメッセージを再送信するまでの時間を秒単位で指定します。

このオプションは、TCP_KEEPINTVLソケットオプションをサポートするシステムで利用できます。

allowed: [1, 900]
example: --tcp-keep-alive-interval=30

TLSv1.2暗号スイートオプション(--tls-cipher-12)

許可するTLSv1.2暗号スイートです。

pgBackRestクライアントとサーバー間のすべてのTLS接続は暗号化されます。デフォルトでは、オブジェクトストア(例:S3)への接続も暗号化されます。

注記: どのトランスポート接続でも、セキュリティーの最低要件はTLSv1.2です。

必要に応じて、受け入れる暗号スイートを調整できます。特別なセキュリティー要件がなければ、例に示す値が妥当な選択です。未設定(デフォルト)の場合は、使用するOpenSSLライブラリのデフォルトが適用されます。

example: --tls-cipher-12=HIGH:MEDIUM:+3DES:!aNULL

TLSv1.3暗号スイートオプション(--tls-cipher-13)

許可するTLSv1.3暗号スイートです。

pgBackRestクライアントとサーバー間のすべてのTLS接続は暗号化されます。デフォルトでは、オブジェクトストア(例:S3)への接続も暗号化されます。

注記: どのトランスポート接続でも、セキュリティーの最低要件はTLSv1.2です。

必要に応じて、受け入れる暗号スイートを調整できます。未設定(デフォルト)の場合は、使用するOpenSSLライブラリのデフォルトが適用されます。

example: --tls-cipher-13=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256

ログオプション

コンソールログレベルオプション(--log-level-console)

コンソールに出力するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: warn
example: --log-level-console=error

ファイルログレベルオプション(--log-level-file)

ファイルに記録するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: info
example: --log-level-file=debug

標準エラーログレベルオプション(--log-level-stderr)

stderrに出力するログのレベルです。

stdout(log-level-consoleで指定)の代わりにstderrへ出力するログレベルを指定します。stderrにはタイムスタンプとプロセスを出力しません。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: off
example: --log-level-stderr=error

ログパスオプション(--log-path)

ログファイルを保存するパスです。

ログパスは、pgBackRestがログファイルを保存する場所です。log-level-file=offの場合、ログパスは不要です。

default: /var/log/pgbackrest
example: --log-path=/backup/db/log

サブプロセスログオプション(--log-subprocess)

サブプロセスでのログ記録を有効にします。

このプロセスが作成するすべてのサブプロセスで、log-level-fileで指定したログレベルによるファイルへのログ記録を有効にします。

default: n
example: --log-subprocess

ログタイムスタンプオプション(--log-timestamp)

ログのタイムスタンプを有効にします。

コンソールとファイルのログでタイムスタンプを有効にします。このオプションは、ドキュメント生成などの特殊な状況では無効にします。

default: y
example: --no-log-timestamp

メンテナー向けオプション

PostgreSQLバージョン強制指定オプション(--pg-version-force)

PostgreSQLのバージョンを強制指定します。

pg_controlまたはWALヘッダーを読み取って自動検出したバージョンの代わりに、指定したPostgreSQLバージョンを使用します。これは主に、これらの値がリリース版とは異なるPostgreSQLのフォークや開発版で役立ちます。PostgreSQLがserver_version_numで報告するバージョンは、強制指定したバージョンと一致する必要があります。

警告:

このオプションは慎重に使用してください。pg_controlとWALヘッダーは引き続き、指定バージョンで想定される形式、つまり公式のオープンソース版PostgreSQLの形式で読み取られます。フォークや開発版が、pgBackRestの依存するフィールドの形式を変更していると、予期しない動作が生じます。一般に、このオプションが想定どおりに動作するのは、フォークが独自の構造体メンバーをすべて標準のPostgreSQLメンバーの後ろに追加している場合に限られます。

example: --pg-version-force=15

リポジトリオプション

Azureリポジトリコンテナーオプション(--repo-azure-container)

Azureリポジトリのコンテナーです。

リポジトリの保存に使用するAzureコンテナーです。

repo-path=/を設定するとpgBackRestリポジトリをコンテナーのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのAzureが生成するコンテンツもコンテナーに保存できるようにすることを推奨します。

example: --repo1-azure-container=pg-backup

Azureリポジトリキー種別オプション(--repo-azure-key-type)

Azureリポジトリのキー種別です。

認可には次の種別をサポートします。

  • shared - 共有キー
  • sas - 共有アクセス署名
  • auto - AzureマネージドIDを使用して自動的に認可
default: shared
example: --repo1-azure-key-type=sas

AzureリポジトリURI形式オプション(--repo-azure-uri-style)

AzureのURI形式です。

次のURI形式をサポートします。

  • host - account.endpointホストに接続します。
  • path - endpointホストに接続し、URIの先頭にアカウントを付加します。
default: host
example: --repo1-azure-uri-style=path

リポジトリ暗号方式オプション(--repo-cipher-type)

リポジトリの暗号化に使用する暗号方式です。

次の暗号方式をサポートします。

  • none - リポジトリを暗号化しません
  • aes-256-cbc - 鍵長256ビットのAdvanced Encryption Standard

リポジトリの種類(例:S3)が暗号化をサポートしていても、暗号化は常にクライアント側で実行されます。

default: none
example: --repo1-cipher-type=aes-256-cbc

GCSリポジトリバケットオプション(--repo-gcs-bucket)

GCSリポジトリのバケットです。

リポジトリの保存に使用するGCSバケットです。

repo-path=/を設定するとpgBackRestリポジトリをバケットのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのGCSが生成するコンテンツもバケットに保存できるようにすることを推奨します。

example: --repo1-gcs-bucket=/pg-backup

GCSリポジトリエンドポイントオプション(--repo-gcs-endpoint)

GCSリポジトリのエンドポイントです。

ストレージサービスへの接続に使用するエンドポイントです。ローカルのGCSサーバーや別のエンドポイントを使用するように変更できます。

default: storage.googleapis.com
example: --repo1-gcs-endpoint=localhost

GCSリポジトリキー種別オプション(--repo-gcs-key-type)

GCSリポジトリのキー種別です。

認可には次の種別をサポートします。

  • auto - インスタンスのサービスアカウントを使用して認可します。
  • service - ローカルに保存したキーでサービスアカウントを使用します。
  • token - fakegcsなどを使用するローカルテスト用です。

repo-gcs-key-type=serviceの場合、認証トークンの更新時に認証情報を再読み込みします。

default: service
example: --repo1-gcs-key-type=auto

GCSリポジトリプロジェクトIDオプション(--repo-gcs-user-project)

GCSのプロジェクトIDです。

リクエストの課金先を決定するために使用するGCSプロジェクトIDです。

example: --repo1-gcs-user-project=my-project

リポジトリホストオプション(--repo-host)

リモート操作時のリポジトリホストです。

ローカルにマウントされたファイルシステムにバックアップおよびアーカイブする場合、この設定は不要です。

example: --repo1-host=repo1.domain.com

非推奨の名前:backup-host

リポジトリホスト認証局ファイルオプション(--repo-host-ca-file)

リポジトリホストの認証局ファイルです。

リポジトリホストへの接続に、システムのデフォルト以外のCAファイルを使用します。

example: --repo1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt

リポジトリホスト認証局パスオプション(--repo-host-ca-path)

リポジトリホストの認証局パスです。

リポジトリホストへの接続に、システムのデフォルト以外のCAパスを使用します。

example: --repo1-host-ca-path=/etc/pki/tls/certs

リポジトリホスト証明書ファイルオプション(--repo-host-cert-file)

リポジトリホストの証明書ファイルです。

クライアントの身元を証明するためにリポジトリホストに送信します。

example: --repo1-host-cert-file=/path/to/client.crt

リポジトリホストコマンドオプション(--repo-host-cmd)

リポジトリホストのpgBackRestコマンドです。

pgBackRestコマンドのパスがローカルホストとリポジトリホストで異なる場合にのみ必要です。未定義の場合、リポジトリホストのコマンドにはローカルと同じコマンドを設定します。

default: [path of executed pgbackrest binary]
example: --repo1-host-cmd=/usr/lib/backrest/bin/pgbackrest

非推奨の名前:backup-cmd

リポジトリホスト設定オプション(--repo-host-config)

pgBackRestリポジトリホストの設定ファイルです。

リポジトリホスト上の設定ファイルの場所を設定します。リポジトリホストの設定ファイルがローカルの設定ファイルと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --repo1-host-config=/conf/pgbackrest/pgbackrest.conf

非推奨の名前:backup-config

リポジトリホスト追加設定パスオプション(--repo-host-config-include-path)

pgBackRestリポジトリホストの追加設定パスです。

リポジトリホスト上の追加設定パスの場所を設定します。リポジトリホストの追加設定パスがローカルの追加設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --repo1-host-config-include-path=/conf/pgbackrest/conf.d

リポジトリホスト設定パスオプション(--repo-host-config-path)

pgBackRestリポジトリホストの設定パスです。

リポジトリホスト上の設定パスの場所を設定します。リポジトリホストの設定パスがローカルの設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH
example: --repo1-host-config-path=/conf/pgbackrest

リポジトリホストキーファイルオプション(--repo-host-key-file)

リポジトリホストのキーファイルです。

クライアント証明書が所有者によって送信されたことを証明します。

example: --repo1-host-key-file=/path/to/client.key

リポジトリホストポートオプション(--repo-host-port)

repo-hostが設定されている場合のリポジトリホストのポートです。

リポジトリホストのプロトコルにデフォルト以外のポートを指定するには、このオプションを使用します。

注記: repo-host-type=sshの場合、repo-host-portにデフォルト値はありません。この場合、ポートはcmd-sshで指定したコマンドの設定に従います。

default (depending on repo-host-type):
    tls - 8432

allowed: [0, 65535]
example: --repo1-host-port=25

非推奨の名前:backup-ssh-port

リポジトリホストプロトコル種別オプション(--repo-host-type)

リポジトリホストのプロトコル種別です。

次のプロトコル種別をサポートします。

  • ssh - Secure Shell。
  • tls - pgBackRest TLSサーバー。
default: ssh
example: --repo1-host-type=tls

リポジトリホストユーザーオプション(--repo-host-user)

repo-hostが設定されている場合のリポジトリホストのユーザーです。

リポジトリホスト上の操作に使用するユーザーを定義します。postgresユーザーではなく、pgbackrestなどの別のユーザーを使用することを推奨します。リポジトリホストでPostgreSQLを実行する場合は、postgresユーザーをpgbackrestグループに追加することで、リポジトリの内容を誤って破損させずに読み取り権限を与えられます。

default: pgbackrest
example: --repo1-host-user=repo-user

非推奨の名前:backup-user

リポジトリパスオプション(--repo-path)

バックアップとアーカイブを保存するパスです。

リポジトリは、pgBackRestがバックアップを保存し、WALセグメントをアーカイブする場所です。

必要な容量を事前に見積もるのは難しい場合があります。まずいくつかバックアップを取得し、各種類(full/incr/diff)のバックアップサイズを記録して、1日当たりに生成されるWALの量を測定するのが最善です。これにより、必要な容量のおおよその見当が付きます。ただし、データベースの変化に伴い、必要量も時間とともに変わる可能性があります。

default: /var/lib/pgbackrest
example: --repo1-path=/backup/db/backrest

S3リポジトリバケットオプション(--repo-s3-bucket)

S3リポジトリのバケットです。

リポジトリの保存に使用するS3バケットです。

repo-path=/を設定するとpgBackRestリポジトリをバケットのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのAWSが生成するコンテンツもバケットに保存できるようにすることを推奨します。

example: --repo1-s3-bucket=pg-backup

S3リポジトリエンドポイントオプション(--repo-s3-endpoint)

S3リポジトリのエンドポイントです。

選択したリージョンに対して有効なAWSエンドポイントを使用してください。

独自の構成やテスト構成では、repo-storage-ca-file、repo-storage-ca-path、repo-storage-host、repo-storage-port、repo-storage-verify-tlsの各オプションが役立つ場合があります。

example: --repo1-s3-endpoint=s3.amazonaws.com

S3リポジトリキー種別オプション(--repo-s3-key-type)

S3リポジトリのキー種別です。

次の種別をサポートします。

  • shared - 共有キー
  • auto - 一時認証情報を自動取得
  • web-id - ウェブID認証情報を自動取得
  • pod-id - EKS Pod Identityの認証情報を自動取得
  • process - プロセスを実行して認証情報を取得
default: shared
example: --repo1-s3-key-type=auto

S3リポジトリKMSキーIDオプション(--repo-s3-kms-key-id)

S3リポジトリのKMSキーです。

指定したAWS Key Management Serviceのキーを使用して、S3のサーバー側暗号化を有効にします。

example: --repo1-s3-kms-key-id=bceb4f13-6939-4be3-910d-df54dee817b7

S3認証プロセスコマンドオプション(--repo-s3-process-cmd)

S3の認証プロセスコマンドです。

一時的なS3認証情報を取得するために実行するコマンド(および任意の引数)です。リストの最初の要素がコマンドで、残りの要素はパラメーターとして渡します。

プロセスは、AccessKeyId、SecretAccessKey、SessionToken、Expirationフィールドを含むJSONを出力する必要があります。認証情報は有効期限の前に自動更新されます。形式の詳細は、プロセス認証情報プロバイダー を参照してください。

example: --repo1-s3-process-cmd=/usr/local/bin/get-credentials --repo1-s3-process-cmd=--role --repo1-s3-process-cmd=my-role

S3リポジトリリージョンオプション(--repo-s3-region)

S3リポジトリのリージョンです。

バケットを作成したAWSリージョンです。

example: --repo1-s3-region=us-east-1

S3リポジトリのリクエスタ支払いオプション(--repo-s3-requester-pays)

S3リポジトリのリクエスタ支払いです。

S3のリクエスタ支払いを有効にします。

default: n
example: --no-repo1-s3-requester-pays

S3リポジトリロールオプション(--repo-s3-role)

S3リポジトリのロールです。

repo-s3-key-type=autoの場合に、一時認証情報の取得に使用するAWSロール名(完全なARNではありません)です。

example: --repo1-s3-role=authrole

S3リポジトリサービスオプション(--repo-s3-service)

S3の署名サービスです。

SigV4認証で使用するS3署名サービスです。標準のS3エンドポイントでは、デフォルトはs3です。S3 Outpostsエンドポイントを使用する場合は、s3-outpostsに設定します。

default: s3
example: --repo1-s3-service=s3-outposts

S3リポジトリSTSエンドポイントオプション(--repo-s3-sts-host)

S3リポジトリのSTSエンドポイントです。

repo-s3-key-type=web-idを設定した場合に、一時認証情報の取得に使用するSTSエンドポイントです。リージョン別STSを使用するには、リージョン別エンドポイント(例:sts.us-east-1.amazonaws.com)を設定します。GovCloudや中国リージョンで必要になる場合や、レイテンシーを低減するために使用する場合があります。

default: sts.amazonaws.com
example: --repo1-s3-sts-host=sts.us-east-1.amazonaws.com

S3リポジトリURI形式オプション(--repo-s3-uri-style)

S3のURI形式です。

次のURI形式をサポートします。

  • host - bucket.endpointホストに接続します。
  • path - endpointホストに接続し、URIの先頭にバケットを付加します。
default: host
example: --repo1-s3-uri-style=path

SFTPリポジトリホストオプション(--repo-sftp-host)

SFTPリポジトリのホストです。

リポジトリが存在するSFTPホストです。

example: --repo1-sftp-host=sftprepo.domain

SFTPリポジトリホストフィンガープリントオプション(--repo-sftp-host-fingerprint)

SFTPリポジトリホストのフィンガープリントです。

SFTPリポジトリホストのフィンガープリントの生成方法は、repo-sftp-host-key-hash-typeと一致させてください。awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -bでフィンガープリントを生成します。sshホストキーは通常、/etc/sshディレクトリにあります。

example: --repo1-sftp-host-fingerprint=f84e172dfead7aeeeae6c1fdfb5aa8cf

SFTPホストキー確認方式オプション(--repo-sftp-host-key-check-type)

SFTPのホストキー確認方式です。

次のSFTPホストキー確認方式をサポートします。

  • strict - pgBackRestは~/.ssh/known_hostsファイルにホストキーを自動追加せず、ホストキーが変更されたホスト、または既知のホストファイルで見つからないホストへの接続を拒否します。このオプションでは、新しいホストをすべて手動で追加する必要があります。
  • accept-new - pgBackRestは新しいホストキーをユーザーの既知のホストファイルに自動追加しますが、ホストキーが変更されたホストへの接続は許可しません。
  • fingerprint - pgBackRestは、repo-sftp-host-fingerprintオプションで指定したフィンガープリントとホストキーを照合します。
  • none - ホストキーを確認しません。
default: strict
example: --repo1-sftp-host-key-check-type=accept-new

SFTPリポジトリホストキーハッシュ種別オプション(--repo-sftp-host-key-hash-type)

SFTPリポジトリのホストキーハッシュ種別です。

SFTPリポジトリのホストキーハッシュ種別です。SSHの開始時に、リモートシステムのホストキーのダイジェスト計算に使用するハッシュ種別を指定します。新しいバージョンのlibssh2は、md5とsha1に加えてsha256もサポートします。

example: --repo1-sftp-host-key-hash-type=sha256

SFTPリポジトリホストポートオプション(--repo-sftp-host-port)

SFTPリポジトリホストのポートです。

SFTPリポジトリホストのポートです。

default: 22
allowed: [1, 65535]
example: --repo1-sftp-host-port=22

SFTPリポジトリホストユーザーオプション(--repo-sftp-host-user)

SFTPリポジトリホストのユーザーです。

リポジトリの保存に使用するホスト上のユーザーです。

example: --repo1-sftp-host-user=pg-backup

SFTP既知ホストファイルオプション(--repo-sftp-known-host)

SFTPの既知のホストファイルです。

認証時に一致するSFTPホストを探す既知のホストファイルです。未指定の場合、pgBackRestはデフォルトで~/.ssh/known_hosts、~/.ssh/known_hosts2、/etc/ssh/ssh_known_hosts、/etc/ssh/ssh_known_hosts2を検索します。1つ以上のファイルパスを設定した場合は、それらを検索して一致を確認します。ファイルパスは絶対パス、または先頭がチルダのパスである必要があります。repo-sftp-known-hostオプションを複数回指定することで、検索する既知のホストファイルを複数指定できます。既知のホストファイルによる確認を使用するには、repo-sftp-host-fingerprintを指定してはいけません。repo-sftp-host-check-typeオプションも参照してください。

example: --repo1-sftp-known-host=/home/postgres/.ssh/known_hosts

SFTPリポジトリ秘密鍵ファイルオプション(--repo-sftp-private-key-file)

SFTPの秘密鍵ファイルです。

認証に使用するSFTP秘密鍵ファイルです。

example: --repo1-sftp-private-key-file=~/.ssh/id_ed25519

SFTPリポジトリ公開鍵ファイルオプション(--repo-sftp-public-key-file)

SFTPの公開鍵ファイルです。

認証に使用するSFTP公開鍵ファイルです。OpenSSLに対してコンパイルした場合は任意ですが、別のライブラリに対してコンパイルした場合は必須です。

example: --repo1-sftp-public-key-file=~/.ssh/id_ed25519.pub

リポジトリストレージCAファイルオプション(--repo-storage-ca-file)

リポジトリストレージのCAファイルです。

ストレージ(例:S3、Azure)の証明書に、システムのデフォルト以外のCAファイルを使用します。

example: --repo1-storage-ca-file=/etc/pki/tls/certs/ca-bundle.crt

非推奨の名前:repo-azure-ca-file, repo-s3-ca-file

リポジトリストレージTLS CAパスオプション(--repo-storage-ca-path)

リポジトリストレージのCAパスです。

ストレージ(例:S3、Azure)の証明書に、システムのデフォルト以外のCAパスを使用します。

example: --repo1-storage-ca-path=/etc/pki/tls/certs

非推奨の名前:repo-azure-ca-path, repo-s3-ca-path

リポジトリストレージホストオプション(--repo-storage-host)

リポジトリストレージのホストです。

ストレージ(例:S3、Azure)のエンドポイントとは異なるホストに接続します。通常はテストに使用します。

example: --repo1-storage-host=127.0.0.1

非推奨の名前:repo-azure-host, repo-s3-host

リポジトリストレージポートオプション(--repo-storage-port)

リポジトリストレージのポートです。

ストレージ(例:S3、Azure)のエンドポイント(ホストを指定した場合はそのホスト)への接続に使用するポートです。

default: 443
allowed: [1, 65535]
example: --repo1-storage-port=9000

非推奨の名前:repo-azure-port, repo-s3-port

リポジトリストレージタグオプション(--repo-storage-tag)

リポジトリストレージのタグです。

リポジトリがオブジェクトストア(例:S3)の場合に、オブジェクトに付加するタグを指定します。このオプションを繰り返して、複数のタグを追加できます。

pgBackRestにはこれらのタグを変更する機能がないため、リポジトリ全体でタグを統一するには、stanza-createを実行する前に正しく設定してください。

example: --repo1-storage-tag=key1=value1

リポジトリストレージアップロードチャンクサイズオプション(--repo-storage-upload-chunk-size)

リポジトリストレージのアップロードチャンクサイズです。

S3などのオブジェクトストアでは、ファイルが大きすぎてメモリに格納できない場合に、チャンクに分けてアップロードできます。ファイルをメモリに格納できる場合でも、アップロードに使用するメモリ量を制限する方がメモリ効率は高くなります。

チャンクサイズを大きくすると、アップロードリクエストを最小限に抑え、チャンク分割せずに1回のリクエストでアップロードできるファイルが増えるため、一般にパフォーマンスが向上します。一方、メモリ使用量は増加します。チャンクバッファーはプロセスごとに割り当てる必要があるため、process-maxの値が大きいほど、全体のメモリ消費量も増えます。

有効なチャンクサイズは、ストレージの種類やプラットフォームによって異なります。たとえば、AWS S3の最小チャンクサイズは5MiBです。チャンクサイズの呼び方もストレージの種類によって異なるため、最小値/最大値を調べる際は、AWS S3では「part size」、GCSでは「chunk size」、Azureでは「block size」を使用してください。

ファイルが1GiB(PostgreSQLがデフォルトで作成する最大サイズ)より大きい場合、ファイルのアップロードを完了するために、許容される最大値までチャンクサイズを段階的に増やします。

default (depending on repo-type):
    azure - 4MiB
    gcs - 4MiB
    s3 - 5MiB

allow range (depending on repo-type):
    azure - [4MiB, 1GiB]
    gcs - [4MiB, 1GiB]
    s3 - [5MiB, 1GiB]

example: --repo1-storage-upload-chunk-size=16MiB

リポジトリストレージ証明書検証オプション(--repo-storage-verify-tls)

リポジトリストレージの証明書を検証します。

このオプションでは、ストレージ(例:S3、Azure)サーバーのTLS証明書の検証を有効/無効にできます。無効化は、テストや自己署名証明書を使用する場合に限ってください。

default: y
example: --no-repo1-storage-verify-tls

非推奨の名前:repo-azure-verify-tls, repo-s3-verify-ssl, repo-s3-verify-tls

リポジトリ種別オプション(--repo-type)

リポジトリに使用するストレージの種類です。

次のリポジトリ種類をサポートします。

  • azure - Azure Blob Storage Service
  • cifs - posixと同様ですが、リンクとディレクトリのfsyncを無効にします
  • gcs - Google Cloud Storage
  • posix - Posix準拠のファイルシステム
  • s3 - AWS Simple Storage Service
  • sftp - Secure File Transfer Protocol

NFSマウントをposixリポジトリとして使用する場合、PostgreSQLのドキュメントに記載されたものと同じ規則がpgBackRestにも適用されます。データベースクラスターの作成 - ファイルシステム を参照してください。

default: posix
example: --repo1-type=cifs

stanzaオプション

PostgreSQLデータベースオプション(--pg-database)

PostgreSQLのデータベースです。

PostgreSQLへの接続に使用するデータベース名です。通常はデフォルトが最適ですが、このデータベースが存在しない環境もあります。

従来の動作を維持するため、環境変数PGDATABASEの設定は無視されます。

default: postgres
example: --pg1-database=backupdb

PostgreSQLホストオプション(--pg-host)

リモート操作時のPostgreSQLホストです。

PostgreSQLホストとリポジトリホストが異なる場合のバックアップに使用します。

example: --pg1-host=db.domain.com

非推奨の名前:db-host

PostgreSQLホスト認証局ファイルオプション(--pg-host-ca-file)

PostgreSQLホストの認証局ファイルです。

PostgreSQLホストへの接続に、システムのデフォルト以外のCAファイルを使用します。

example: --pg1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt

PostgreSQLホスト認証局パスオプション(--pg-host-ca-path)

PostgreSQLホストの認証局パスです。

PostgreSQLホストへの接続に、システムのデフォルト以外のCAパスを使用します。

example: --pg1-host-ca-path=/etc/pki/tls/certs

PostgreSQLホスト証明書ファイルオプション(--pg-host-cert-file)

PostgreSQLホストの証明書ファイルです。

クライアントの身元を証明するためにPostgreSQLホストに送信します。

example: --pg1-host-cert-file=/path/to/client.crt

PostgreSQLホストコマンドオプション(--pg-host-cmd)

PostgreSQLホストのpgBackRestコマンドです。

pgBackRestコマンドのパスがローカルホストとPostgreSQLホストで異なる場合にのみ必要です。未定義の場合、PostgreSQLホストのコマンドにはローカルと同じコマンドを設定します。

default: [path of executed pgbackrest binary]
example: --pg1-host-cmd=/usr/lib/backrest/bin/pgbackrest

非推奨の名前:db-cmd

PostgreSQLホスト設定オプション(--pg-host-config)

pgBackRestデータベースホストの設定ファイルです。

PostgreSQLホスト上の設定ファイルの場所を設定します。PostgreSQLホストの設定ファイルがローカルの設定ファイルと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --pg1-host-config=/conf/pgbackrest/pgbackrest.conf

非推奨の名前:db-config

PostgreSQLホスト追加設定パスオプション(--pg-host-config-include-path)

pgBackRestデータベースホストの追加設定パスです。

PostgreSQLホスト上の追加設定パスの場所を設定します。PostgreSQLホストの追加設定パスがローカルの追加設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --pg1-host-config-include-path=/conf/pgbackrest/conf.d

PostgreSQLホスト設定パスオプション(--pg-host-config-path)

pgBackRestデータベースホストの設定パスです。

PostgreSQLホスト上の設定パスの場所を設定します。PostgreSQLホストの設定パスがローカルの設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH
example: --pg1-host-config-path=/conf/pgbackrest

PostgreSQLホストキーファイルオプション(--pg-host-key-file)

PostgreSQLホストのキーファイルです。

クライアント証明書が所有者によって送信されたことを証明します。

example: --pg1-host-key-file=/path/to/client.key

PostgreSQLホストポートオプション(--pg-host-port)

pg-hostが設定されている場合のPostgreSQLホストのポートです。

PostgreSQLホストのプロトコルにデフォルト以外のポートを指定するには、このオプションを使用します。

注記: pg-host-type=sshの場合、pg-host-portにデフォルト値はありません。この場合、ポートはcmd-sshで指定したコマンドの設定に従います。

default (depending on pg-host-type):
    tls - 8432

allowed: [0, 65535]
example: --pg1-host-port=25

非推奨の名前:db-ssh-port

PostgreSQLホストプロトコル種別オプション(--pg-host-type)

PostgreSQLホストのプロトコル種別です。

次のプロトコル種別をサポートします。

  • ssh - Secure Shell。
  • tls - pgBackRest TLSサーバー。
default: ssh
example: --pg1-host-type=tls

PostgreSQLホストユーザーオプション(--pg-host-user)

pg-hostが設定されている場合のPostgreSQLホストへのログインユーザーです。

このユーザーはリモートのpgBackRestプロセスも所有し、PostgreSQLへの接続を開始します。正しく動作させるには、PostgreSQLデータベースクラスターの所有者を使用してください。通常はデフォルトのpostgresです。

default: postgres
example: --pg1-host-user=db_owner

非推奨の名前:db-user

PostgreSQLパスオプション(--pg-path)

PostgreSQLのデータディレクトリです。

PostgreSQLが報告するdata_directoryと同じ値を設定してください。この値はさまざまな場所から読み取れますが、リストアやオフラインバックアップ時にそれらを利用できない場合に備えて、設定しておくことが賢明です。

pg-pathオプションは、オンラインバックアップのたびにPostgreSQLが報告する値と照合されるため、常に最新の値であるはずです。

example: --pg1-path=/data/db

非推奨の名前:db-path

PostgreSQLポートオプション(--pg-port)

PostgreSQLのポートです。

PostgreSQLが使用しているポートです。ほとんどのPostgreSQLクラスターはデフォルトのポートを使用するため、通常は指定する必要がありません。

default: 5432
allowed: [0, 65535]
example: --pg1-port=6543

非推奨の名前:db-port

PostgreSQLソケットパスオプション(--pg-socket-path)

PostgreSQLのunixソケットパスです。

PostgreSQLの起動時に指定したunixソケットディレクトリです。pgBackRestはOSの標準の場所を自動検索するため、postgresql.confのunix_socket_directories設定でソケットディレクトリを明示的に変更した場合を除き、通常はこの設定を指定する必要がありません。

example: --pg1-socket-path=/var/run/postgresql

非推奨の名前:db-socket-path

PostgreSQLデータベースユーザーオプション(--pg-user)

PostgreSQLのデータベースユーザーです。

PostgreSQLへの接続に使用するデータベースユーザー名です。未指定の場合、pgBackRestはローカルのOSユーザーまたはPGUSERで接続します。

example: --pg1-user=backupuser

4.17 - 開始コマンド(start)

pgBackRestのstartコマンドのオプションと動作のリファレンス。

以前にstopコマンドでpgBackRestプロセスを停止した場合、startコマンドで再び開始可能にできます。このコマンドはpgBackRestプロセスを直ちに起動するのではなく、実行を許可します。詳細と例は、開始と停止 を参照してください。

一般オプション

rootでの実行許可オプション(--allow-root)

rootユーザーによるコマンドの実行を許可します。

デフォルトでは、ファイルの所有権を慎重に管理するように設計されたrestoreコマンドのみをrootユーザーで実行できます。ほかのコマンドをrootで実行すると、たとえばリポジトリ内にroot所有のファイルが作成され、PostgreSQLユーザーがアクセスできなくなって、後続のコマンドが失敗するおそれがあります。

それでもコマンドをrootで実行する場合は、このオプションを有効にします。ただし、リポジトリとPostgreSQLクラスターを所有するユーザーとしてpgBackRestを実行する方がはるかに適切です。

default: n
example: --allow-root

設定ファイルオプション(--config)

pgBackRestの設定ファイルです。

デフォルトとは異なる設定ファイルを指定するには、このオプションを使用します。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --config=/conf/pgbackrest/pgbackrest.conf

追加設定パスオプション(--config-include-path)

追加のpgBackRest設定ファイルへのパスです。

指定した場所にある拡張子.confの設定ファイルをpgBackRest設定ファイルと連結し、1つの設定ファイルとして扱います。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --config-include-path=/conf/pgbackrest/conf.d

設定パスオプション(--config-path)

pgBackRest設定ファイルの基準パスです。

この設定は、--configと--config-include-pathの各オプションがコマンドラインで明示的に設定されていない場合に、それらのデフォルトの基準パスを上書きします。

たとえば、--config-path=/conf/pgbackrestだけを渡すと、--configのデフォルトは/conf/pgbackrest/pgbackrest.confに、--config-include-pathのデフォルトは/conf/pgbackrest/conf.dに設定されます。

default: CFGOPTDEF_CONFIG_PATH
example: --config-path=/conf/pgbackrest

ロックパスオプション(--lock-path)

ロックファイルを保存するパスです。

ロックパスは、pgBackRestが競合する処理の同時実行を防ぐためのロックファイルを作成する場所です。

default: /tmp/pgbackrest
example: --lock-path=/backup/db/lock

固定umaskオプション(--neutral-umask)

固定のumaskを使用します。

umaskを0000に設定し、リポジトリ内のファイルやディレクトリが適切な権限で作成されるようにします。デフォルトのディレクトリ権限は0750、ファイル権限は0640です。

代わりに実行ユーザーのumaskを使用するには、設定ファイルにneutral-umask=n、またはコマンドラインに--no-neutral-umaskを指定します。

default: y
example: --no-neutral-umask

プロセス優先度設定オプション(--priority)

プロセスの優先度を設定します。

カーネルのスケジューラーがプロセスに与える優先度(niceness)を定義します。正の値は優先度を下げ、負の値は優先度を上げます。通常、プロセスには自身の優先度を上げる権限がありません。

allowed: [-20, 19]
example: --priority=19

stanzaオプション(--stanza)

stanzaを定義します。

stanzaは、PostgreSQLデータベースクラスターの場所、バックアップ方法、アーカイブオプションなどを定義する設定です。ほとんどのデータベースサーバーにはPostgreSQLデータベースクラスターが1つだけ存在し、stanzaも1つになります。一方、バックアップサーバーには、バックアップが必要なデータベースクラスターごとにstanzaがあります。

stanzaにはプライマリークラスターにちなんだ名前を付けたくなりますが、クラスターに含まれるデータベースを表す名前の方が適しています。stanza名はプライマリーとすべてのレプリカで使用するため、mainやprodなどのローカルクラスター名よりも、appやdwなど、クラスターの実際の役割を表す名前を選ぶ方が適切です。

example: --stanza=main

ログオプション

コンソールログレベルオプション(--log-level-console)

コンソールに出力するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: warn
example: --log-level-console=error

ファイルログレベルオプション(--log-level-file)

ファイルに記録するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: info
example: --log-level-file=debug

標準エラーログレベルオプション(--log-level-stderr)

stderrに出力するログのレベルです。

stdout(log-level-consoleで指定)の代わりにstderrへ出力するログレベルを指定します。stderrにはタイムスタンプとプロセスを出力しません。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: off
example: --log-level-stderr=error

ログパスオプション(--log-path)

ログファイルを保存するパスです。

ログパスは、pgBackRestがログファイルを保存する場所です。log-level-file=offの場合、ログパスは不要です。

default: /var/log/pgbackrest
example: --log-path=/backup/db/log

ログタイムスタンプオプション(--log-timestamp)

ログのタイムスタンプを有効にします。

コンソールとファイルのログでタイムスタンプを有効にします。このオプションは、ドキュメント生成などの特殊な状況では無効にします。

default: y
example: --no-log-timestamp

4.18 - 停止コマンド(stop)

pgBackRestのstopコマンドのオプションと動作のリファレンス。

新しいpgBackRestプロセスの実行を許可しません。デフォルトでは、実行中のプロセスは正常に完了するまで継続できます。実行中のプロセスを終了するには、--forceオプションを使用します。

stopコマンドの完了後にpgBackRestプロセスを実行すると、エラーが返されます。詳細と例は、開始と停止 を参照してください。

コマンドオプション

強制オプション(--force)

すべてのpgBackRestプロセスを強制的に停止します。

このオプションは、実行中のすべてのpgBackRestプロセスにTERMシグナルを送信し、終了処理を行って直ちに停止させます。別のシステムで開始され、現在のシステム上でリモートプロセスが動作しているプロセスも停止します。たとえば、バックアップサーバーでバックアップを開始した後、データベースサーバーでstop --forceを実行すると、バックアップサーバー上のバックアッププロセスも停止します。

default: n
example: --force

一般オプション

rootでの実行許可オプション(--allow-root)

rootユーザーによるコマンドの実行を許可します。

デフォルトでは、ファイルの所有権を慎重に管理するように設計されたrestoreコマンドのみをrootユーザーで実行できます。ほかのコマンドをrootで実行すると、たとえばリポジトリ内にroot所有のファイルが作成され、PostgreSQLユーザーがアクセスできなくなって、後続のコマンドが失敗するおそれがあります。

それでもコマンドをrootで実行する場合は、このオプションを有効にします。ただし、リポジトリとPostgreSQLクラスターを所有するユーザーとしてpgBackRestを実行する方がはるかに適切です。

default: n
example: --allow-root

設定ファイルオプション(--config)

pgBackRestの設定ファイルです。

デフォルトとは異なる設定ファイルを指定するには、このオプションを使用します。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --config=/conf/pgbackrest/pgbackrest.conf

追加設定パスオプション(--config-include-path)

追加のpgBackRest設定ファイルへのパスです。

指定した場所にある拡張子.confの設定ファイルをpgBackRest設定ファイルと連結し、1つの設定ファイルとして扱います。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --config-include-path=/conf/pgbackrest/conf.d

設定パスオプション(--config-path)

pgBackRest設定ファイルの基準パスです。

この設定は、--configと--config-include-pathの各オプションがコマンドラインで明示的に設定されていない場合に、それらのデフォルトの基準パスを上書きします。

たとえば、--config-path=/conf/pgbackrestだけを渡すと、--configのデフォルトは/conf/pgbackrest/pgbackrest.confに、--config-include-pathのデフォルトは/conf/pgbackrest/conf.dに設定されます。

default: CFGOPTDEF_CONFIG_PATH
example: --config-path=/conf/pgbackrest

ロックパスオプション(--lock-path)

ロックファイルを保存するパスです。

ロックパスは、pgBackRestが競合する処理の同時実行を防ぐためのロックファイルを作成する場所です。

default: /tmp/pgbackrest
example: --lock-path=/backup/db/lock

固定umaskオプション(--neutral-umask)

固定のumaskを使用します。

umaskを0000に設定し、リポジトリ内のファイルやディレクトリが適切な権限で作成されるようにします。デフォルトのディレクトリ権限は0750、ファイル権限は0640です。

代わりに実行ユーザーのumaskを使用するには、設定ファイルにneutral-umask=n、またはコマンドラインに--no-neutral-umaskを指定します。

default: y
example: --no-neutral-umask

プロセス優先度設定オプション(--priority)

プロセスの優先度を設定します。

カーネルのスケジューラーがプロセスに与える優先度(niceness)を定義します。正の値は優先度を下げ、負の値は優先度を上げます。通常、プロセスには自身の優先度を上げる権限がありません。

allowed: [-20, 19]
example: --priority=19

stanzaオプション(--stanza)

stanzaを定義します。

stanzaは、PostgreSQLデータベースクラスターの場所、バックアップ方法、アーカイブオプションなどを定義する設定です。ほとんどのデータベースサーバーにはPostgreSQLデータベースクラスターが1つだけ存在し、stanzaも1つになります。一方、バックアップサーバーには、バックアップが必要なデータベースクラスターごとにstanzaがあります。

stanzaにはプライマリークラスターにちなんだ名前を付けたくなりますが、クラスターに含まれるデータベースを表す名前の方が適しています。stanza名はプライマリーとすべてのレプリカで使用するため、mainやprodなどのローカルクラスター名よりも、appやdwなど、クラスターの実際の役割を表す名前を選ぶ方が適切です。

example: --stanza=main

ログオプション

コンソールログレベルオプション(--log-level-console)

コンソールに出力するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: warn
example: --log-level-console=error

ファイルログレベルオプション(--log-level-file)

ファイルに記録するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: info
example: --log-level-file=debug

標準エラーログレベルオプション(--log-level-stderr)

stderrに出力するログのレベルです。

stdout(log-level-consoleで指定)の代わりにstderrへ出力するログレベルを指定します。stderrにはタイムスタンプとプロセスを出力しません。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: off
example: --log-level-stderr=error

ログパスオプション(--log-path)

ログファイルを保存するパスです。

ログパスは、pgBackRestがログファイルを保存する場所です。log-level-file=offの場合、ログパスは不要です。

default: /var/log/pgbackrest
example: --log-path=/backup/db/log

ログタイムスタンプオプション(--log-timestamp)

ログのタイムスタンプを有効にします。

コンソールとファイルのログでタイムスタンプを有効にします。このオプションは、ドキュメント生成などの特殊な状況では無効にします。

default: y
example: --no-log-timestamp

4.19 - 検証コマンド(verify)

pgBackRestのverifyコマンドのオプションと動作のリファレンス。

verifyは、リポジトリ内のバックアップとアーカイブが有効かどうかを判定します。

コマンドオプション

出力オプション(--output)

出力の種類です。

次の出力形式をサポートします。

  • none - 検証結果を出力しません。
  • text - 検証情報をstdoutに出力します。
default: none
example: --output=text

バックアップセットオプション(--set)

検証するバックアップセットです。

指定したバックアップセットに関連するすべてのデータベースファイルとアーカイブファイルを検証します。

example: --set=20150131-153358F_20150131-153401I

詳細出力オプション(--verbose)

詳細な出力です。

verboseのデフォルトはfalseで、リポジトリ内のエラーに関する重要な情報を含む最小限の応答を返します。trueを指定すると、正常に検証された内容について、より多くの情報を表示します。

default: n
example: --verbose

一般オプション

rootでの実行許可オプション(--allow-root)

rootユーザーによるコマンドの実行を許可します。

デフォルトでは、ファイルの所有権を慎重に管理するように設計されたrestoreコマンドのみをrootユーザーで実行できます。ほかのコマンドをrootで実行すると、たとえばリポジトリ内にroot所有のファイルが作成され、PostgreSQLユーザーがアクセスできなくなって、後続のコマンドが失敗するおそれがあります。

それでもコマンドをrootで実行する場合は、このオプションを有効にします。ただし、リポジトリとPostgreSQLクラスターを所有するユーザーとしてpgBackRestを実行する方がはるかに適切です。

default: n
example: --allow-root

バッファーサイズオプション(--buffer-size)

I/O処理のバッファーサイズです。

コピー、圧縮、暗号化などの処理に使用するバッファーサイズです。使用するバッファーの数はオプションによって異なり、各処理で追加のメモリを使用する場合があります。たとえば、gz圧縮では256KiBのメモリを追加で使用する場合があります。

指定できる値は、16KiB、32KiB、64KiB、128KiB、256KiB、512KiB、1MiB、2MiB、4MiB、8MiB、16MiBです。

default: 1MiB
example: --buffer-size=2MiB

pgBackRestコマンドオプション(--cmd)

pgBackRestコマンドです。

pgBackRestは、たとえばrestoreコマンドがrestore_command設定を生成する際に、コマンド文字列を生成することがあります。この場合、cmdオプションを指定しない限り、pgBackRestプロセスの実行に使用したコマンドが使われます。

注意:

pgBackRestコマンドをラッパー経由で実行すると、予測できない動作を引き起こす可能性があるため、推奨しません。

default: [path of executed pgbackrest binary]
example: --cmd=/var/lib/pgsql/bin/pgbackrest_wrapper.sh

SSHクライアントコマンドオプション(--cmd-ssh)

SSHクライアントのコマンドです。

別のSSHクライアントを使用したい場合や、sshコマンドが$PATHに含まれていない場合に、使用するSSHクライアントコマンドを指定します。

default: ssh
example: --cmd-ssh=/usr/bin/ssh

ネットワーク圧縮レベルオプション(--compress-level-network)

ネットワークの圧縮レベルです。

compress-type=noneで、コマンドがリポジトリと同じホストで実行されない場合のネットワーク圧縮レベルを設定します。圧縮によってネットワークトラフィックを削減します。compress-typeがnoneでない場合は、ファイルを1回だけ圧縮するように、compress-level-network設定を無視して代わりにcompress-levelを使用します。

default: 1
allowed: [-5, 12]
example: --compress-level-network=1

設定ファイルオプション(--config)

pgBackRestの設定ファイルです。

デフォルトとは異なる設定ファイルを指定するには、このオプションを使用します。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --config=/conf/pgbackrest/pgbackrest.conf

追加設定パスオプション(--config-include-path)

追加のpgBackRest設定ファイルへのパスです。

指定した場所にある拡張子.confの設定ファイルをpgBackRest設定ファイルと連結し、1つの設定ファイルとして扱います。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --config-include-path=/conf/pgbackrest/conf.d

設定パスオプション(--config-path)

pgBackRest設定ファイルの基準パスです。

この設定は、--configと--config-include-pathの各オプションがコマンドラインで明示的に設定されていない場合に、それらのデフォルトの基準パスを上書きします。

たとえば、--config-path=/conf/pgbackrestだけを渡すと、--configのデフォルトは/conf/pgbackrest/pgbackrest.confに、--config-include-pathのデフォルトは/conf/pgbackrest/conf.dに設定されます。

default: CFGOPTDEF_CONFIG_PATH
example: --config-path=/conf/pgbackrest

I/Oタイムアウトオプション(--io-timeout)

I/Oのタイムアウトです。

接続および読み取り/書き込み処理に使用する、秒単位のタイムアウトです。

読み取り/書き込み処理全体がこのタイムアウト内に完了する必要はありませんが、わずか1バイトでも、何らかの進展が必要です。

default: 1m
allowed: [100ms, 1h]
example: --io-timeout=120

固定umaskオプション(--neutral-umask)

固定のumaskを使用します。

umaskを0000に設定し、リポジトリ内のファイルやディレクトリが適切な権限で作成されるようにします。デフォルトのディレクトリ権限は0750、ファイル権限は0640です。

代わりに実行ユーザーのumaskを使用するには、設定ファイルにneutral-umask=n、またはコマンドラインに--no-neutral-umaskを指定します。

default: y
example: --no-neutral-umask

プロセス優先度設定オプション(--priority)

プロセスの優先度を設定します。

カーネルのスケジューラーがプロセスに与える優先度(niceness)を定義します。正の値は優先度を下げ、負の値は優先度を上げます。通常、プロセスには自身の優先度を上げる権限がありません。

allowed: [-20, 19]
example: --priority=19

最大プロセス数オプション(--process-max)

圧縮/転送に使用する最大プロセス数です。

各プロセスが圧縮と転送を実行することでコマンドを高速化しますが、データベースのパフォーマンスに影響するほどprocess-maxを高く設定しないでください。

default: 1
allowed: [1, 999]
example: --process-max=4

プロトコルタイムアウトオプション(--protocol-timeout)

プロトコルのタイムアウトです。

ローカルまたはリモートのプロセスが、プロトコル層で新しいメッセージの受信を待つタイムアウトを秒単位で設定します。これにより、プロセスがメッセージを無期限に待ち続けることを防ぎます。

注記: protocol-timeoutオプションは、db-timeoutオプションより大きくする必要があります。

default: 31m
allowed: [100ms, 7d]
example: --protocol-timeout=630

キープアライブオプション(--sck-keep-alive)

キープアライブを有効にします。

ソケット接続でキープアライブメッセージを有効にします。

default: y
example: --no-sck-keep-alive

stanzaオプション(--stanza)

stanzaを定義します。

stanzaは、PostgreSQLデータベースクラスターの場所、バックアップ方法、アーカイブオプションなどを定義する設定です。ほとんどのデータベースサーバーにはPostgreSQLデータベースクラスターが1つだけ存在し、stanzaも1つになります。一方、バックアップサーバーには、バックアップが必要なデータベースクラスターごとにstanzaがあります。

stanzaにはプライマリークラスターにちなんだ名前を付けたくなりますが、クラスターに含まれるデータベースを表す名前の方が適しています。stanza名はプライマリーとすべてのレプリカで使用するため、mainやprodなどのローカルクラスター名よりも、appやdwなど、クラスターの実際の役割を表す名前を選ぶ方が適切です。

example: --stanza=main

キープアライブ回数オプション(--tcp-keep-alive-count)

キープアライブの回数です。

接続が切れたと判断するまでに、応答がなくても許容するTCPキープアライブメッセージの数を指定します。

このオプションは、TCP_KEEPCNTソケットオプションをサポートするシステムで利用できます。

allowed: [1, 32]
example: --tcp-keep-alive-count=3

キープアライブ待機時間オプション(--tcp-keep-alive-idle)

キープアライブの待機時間です。

ネットワーク通信がない状態で、オペレーティングシステムがTCPキープアライブメッセージを送信するまでの時間を秒単位で指定します。

このオプションは、TCP_KEEPIDLEソケットオプションをサポートするシステムで利用できます。

allowed: [1, 3600]
example: --tcp-keep-alive-idle=60

キープアライブ間隔オプション(--tcp-keep-alive-interval)

キープアライブの送信間隔です。

応答のないTCPキープアライブメッセージを再送信するまでの時間を秒単位で指定します。

このオプションは、TCP_KEEPINTVLソケットオプションをサポートするシステムで利用できます。

allowed: [1, 900]
example: --tcp-keep-alive-interval=30

TLSv1.2暗号スイートオプション(--tls-cipher-12)

許可するTLSv1.2暗号スイートです。

pgBackRestクライアントとサーバー間のすべてのTLS接続は暗号化されます。デフォルトでは、オブジェクトストア(例:S3)への接続も暗号化されます。

注記: どのトランスポート接続でも、セキュリティーの最低要件はTLSv1.2です。

必要に応じて、受け入れる暗号スイートを調整できます。特別なセキュリティー要件がなければ、例に示す値が妥当な選択です。未設定(デフォルト)の場合は、使用するOpenSSLライブラリのデフォルトが適用されます。

example: --tls-cipher-12=HIGH:MEDIUM:+3DES:!aNULL

TLSv1.3暗号スイートオプション(--tls-cipher-13)

許可するTLSv1.3暗号スイートです。

pgBackRestクライアントとサーバー間のすべてのTLS接続は暗号化されます。デフォルトでは、オブジェクトストア(例:S3)への接続も暗号化されます。

注記: どのトランスポート接続でも、セキュリティーの最低要件はTLSv1.2です。

必要に応じて、受け入れる暗号スイートを調整できます。未設定(デフォルト)の場合は、使用するOpenSSLライブラリのデフォルトが適用されます。

example: --tls-cipher-13=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256

ログオプション

コンソールログレベルオプション(--log-level-console)

コンソールに出力するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: warn
example: --log-level-console=error

ファイルログレベルオプション(--log-level-file)

ファイルに記録するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: info
example: --log-level-file=debug

標準エラーログレベルオプション(--log-level-stderr)

stderrに出力するログのレベルです。

stdout(log-level-consoleで指定)の代わりにstderrへ出力するログレベルを指定します。stderrにはタイムスタンプとプロセスを出力しません。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: off
example: --log-level-stderr=error

ログパスオプション(--log-path)

ログファイルを保存するパスです。

ログパスは、pgBackRestがログファイルを保存する場所です。log-level-file=offの場合、ログパスは不要です。

default: /var/log/pgbackrest
example: --log-path=/backup/db/log

サブプロセスログオプション(--log-subprocess)

サブプロセスでのログ記録を有効にします。

このプロセスが作成するすべてのサブプロセスで、log-level-fileで指定したログレベルによるファイルへのログ記録を有効にします。

default: n
example: --log-subprocess

ログタイムスタンプオプション(--log-timestamp)

ログのタイムスタンプを有効にします。

コンソールとファイルのログでタイムスタンプを有効にします。このオプションは、ドキュメント生成などの特殊な状況では無効にします。

default: y
example: --no-log-timestamp

メンテナー向けオプション

PostgreSQLバージョン強制指定オプション(--pg-version-force)

PostgreSQLのバージョンを強制指定します。

pg_controlまたはWALヘッダーを読み取って自動検出したバージョンの代わりに、指定したPostgreSQLバージョンを使用します。これは主に、これらの値がリリース版とは異なるPostgreSQLのフォークや開発版で役立ちます。PostgreSQLがserver_version_numで報告するバージョンは、強制指定したバージョンと一致する必要があります。

警告:

このオプションは慎重に使用してください。pg_controlとWALヘッダーは引き続き、指定バージョンで想定される形式、つまり公式のオープンソース版PostgreSQLの形式で読み取られます。フォークや開発版が、pgBackRestの依存するフィールドの形式を変更していると、予期しない動作が生じます。一般に、このオプションが想定どおりに動作するのは、フォークが独自の構造体メンバーをすべて標準のPostgreSQLメンバーの後ろに追加している場合に限られます。

example: --pg-version-force=15

リポジトリオプション

リポジトリ指定オプション(--repo)

リポジトリを指定します。

コマンドの操作対象となるリポジトリを指定します。

たとえば、このオプションを使用すると、pgBackRestに選択させずに、特定のリポジトリからリストアできます。

allowed: [1, 256]
example: --repo=1

Azureリポジトリコンテナーオプション(--repo-azure-container)

Azureリポジトリのコンテナーです。

リポジトリの保存に使用するAzureコンテナーです。

repo-path=/を設定するとpgBackRestリポジトリをコンテナーのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのAzureが生成するコンテンツもコンテナーに保存できるようにすることを推奨します。

example: --repo1-azure-container=pg-backup

Azureリポジトリキー種別オプション(--repo-azure-key-type)

Azureリポジトリのキー種別です。

認可には次の種別をサポートします。

  • shared - 共有キー
  • sas - 共有アクセス署名
  • auto - AzureマネージドIDを使用して自動的に認可
default: shared
example: --repo1-azure-key-type=sas

AzureリポジトリURI形式オプション(--repo-azure-uri-style)

AzureのURI形式です。

次のURI形式をサポートします。

  • host - account.endpointホストに接続します。
  • path - endpointホストに接続し、URIの先頭にアカウントを付加します。
default: host
example: --repo1-azure-uri-style=path

リポジトリ暗号方式オプション(--repo-cipher-type)

リポジトリの暗号化に使用する暗号方式です。

次の暗号方式をサポートします。

  • none - リポジトリを暗号化しません
  • aes-256-cbc - 鍵長256ビットのAdvanced Encryption Standard

リポジトリの種類(例:S3)が暗号化をサポートしていても、暗号化は常にクライアント側で実行されます。

default: none
example: --repo1-cipher-type=aes-256-cbc

GCSリポジトリバケットオプション(--repo-gcs-bucket)

GCSリポジトリのバケットです。

リポジトリの保存に使用するGCSバケットです。

repo-path=/を設定するとpgBackRestリポジトリをバケットのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのGCSが生成するコンテンツもバケットに保存できるようにすることを推奨します。

example: --repo1-gcs-bucket=/pg-backup

GCSリポジトリエンドポイントオプション(--repo-gcs-endpoint)

GCSリポジトリのエンドポイントです。

ストレージサービスへの接続に使用するエンドポイントです。ローカルのGCSサーバーや別のエンドポイントを使用するように変更できます。

default: storage.googleapis.com
example: --repo1-gcs-endpoint=localhost

GCSリポジトリキー種別オプション(--repo-gcs-key-type)

GCSリポジトリのキー種別です。

認可には次の種別をサポートします。

  • auto - インスタンスのサービスアカウントを使用して認可します。
  • service - ローカルに保存したキーでサービスアカウントを使用します。
  • token - fakegcsなどを使用するローカルテスト用です。

repo-gcs-key-type=serviceの場合、認証トークンの更新時に認証情報を再読み込みします。

default: service
example: --repo1-gcs-key-type=auto

GCSリポジトリプロジェクトIDオプション(--repo-gcs-user-project)

GCSのプロジェクトIDです。

リクエストの課金先を決定するために使用するGCSプロジェクトIDです。

example: --repo1-gcs-user-project=my-project

リポジトリホストオプション(--repo-host)

リモート操作時のリポジトリホストです。

ローカルにマウントされたファイルシステムにバックアップおよびアーカイブする場合、この設定は不要です。

example: --repo1-host=repo1.domain.com

非推奨の名前:backup-host

リポジトリホスト認証局ファイルオプション(--repo-host-ca-file)

リポジトリホストの認証局ファイルです。

リポジトリホストへの接続に、システムのデフォルト以外のCAファイルを使用します。

example: --repo1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt

リポジトリホスト認証局パスオプション(--repo-host-ca-path)

リポジトリホストの認証局パスです。

リポジトリホストへの接続に、システムのデフォルト以外のCAパスを使用します。

example: --repo1-host-ca-path=/etc/pki/tls/certs

リポジトリホスト証明書ファイルオプション(--repo-host-cert-file)

リポジトリホストの証明書ファイルです。

クライアントの身元を証明するためにリポジトリホストに送信します。

example: --repo1-host-cert-file=/path/to/client.crt

リポジトリホストコマンドオプション(--repo-host-cmd)

リポジトリホストのpgBackRestコマンドです。

pgBackRestコマンドのパスがローカルホストとリポジトリホストで異なる場合にのみ必要です。未定義の場合、リポジトリホストのコマンドにはローカルと同じコマンドを設定します。

default: [path of executed pgbackrest binary]
example: --repo1-host-cmd=/usr/lib/backrest/bin/pgbackrest

非推奨の名前:backup-cmd

リポジトリホスト設定オプション(--repo-host-config)

pgBackRestリポジトリホストの設定ファイルです。

リポジトリホスト上の設定ファイルの場所を設定します。リポジトリホストの設定ファイルがローカルの設定ファイルと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --repo1-host-config=/conf/pgbackrest/pgbackrest.conf

非推奨の名前:backup-config

リポジトリホスト追加設定パスオプション(--repo-host-config-include-path)

pgBackRestリポジトリホストの追加設定パスです。

リポジトリホスト上の追加設定パスの場所を設定します。リポジトリホストの追加設定パスがローカルの追加設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --repo1-host-config-include-path=/conf/pgbackrest/conf.d

リポジトリホスト設定パスオプション(--repo-host-config-path)

pgBackRestリポジトリホストの設定パスです。

リポジトリホスト上の設定パスの場所を設定します。リポジトリホストの設定パスがローカルの設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH
example: --repo1-host-config-path=/conf/pgbackrest

リポジトリホストキーファイルオプション(--repo-host-key-file)

リポジトリホストのキーファイルです。

クライアント証明書が所有者によって送信されたことを証明します。

example: --repo1-host-key-file=/path/to/client.key

リポジトリホストポートオプション(--repo-host-port)

repo-hostが設定されている場合のリポジトリホストのポートです。

リポジトリホストのプロトコルにデフォルト以外のポートを指定するには、このオプションを使用します。

注記: repo-host-type=sshの場合、repo-host-portにデフォルト値はありません。この場合、ポートはcmd-sshで指定したコマンドの設定に従います。

default (depending on repo-host-type):
    tls - 8432

allowed: [0, 65535]
example: --repo1-host-port=25

非推奨の名前:backup-ssh-port

リポジトリホストプロトコル種別オプション(--repo-host-type)

リポジトリホストのプロトコル種別です。

次のプロトコル種別をサポートします。

  • ssh - Secure Shell。
  • tls - pgBackRest TLSサーバー。
default: ssh
example: --repo1-host-type=tls

リポジトリホストユーザーオプション(--repo-host-user)

repo-hostが設定されている場合のリポジトリホストのユーザーです。

リポジトリホスト上の操作に使用するユーザーを定義します。postgresユーザーではなく、pgbackrestなどの別のユーザーを使用することを推奨します。リポジトリホストでPostgreSQLを実行する場合は、postgresユーザーをpgbackrestグループに追加することで、リポジトリの内容を誤って破損させずに読み取り権限を与えられます。

default: pgbackrest
example: --repo1-host-user=repo-user

非推奨の名前:backup-user

リポジトリパスオプション(--repo-path)

バックアップとアーカイブを保存するパスです。

リポジトリは、pgBackRestがバックアップを保存し、WALセグメントをアーカイブする場所です。

必要な容量を事前に見積もるのは難しい場合があります。まずいくつかバックアップを取得し、各種類(full/incr/diff)のバックアップサイズを記録して、1日当たりに生成されるWALの量を測定するのが最善です。これにより、必要な容量のおおよその見当が付きます。ただし、データベースの変化に伴い、必要量も時間とともに変わる可能性があります。

default: /var/lib/pgbackrest
example: --repo1-path=/backup/db/backrest

S3リポジトリバケットオプション(--repo-s3-bucket)

S3リポジトリのバケットです。

リポジトリの保存に使用するS3バケットです。

repo-path=/を設定するとpgBackRestリポジトリをバケットのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのAWSが生成するコンテンツもバケットに保存できるようにすることを推奨します。

example: --repo1-s3-bucket=pg-backup

S3リポジトリエンドポイントオプション(--repo-s3-endpoint)

S3リポジトリのエンドポイントです。

選択したリージョンに対して有効なAWSエンドポイントを使用してください。

独自の構成やテスト構成では、repo-storage-ca-file、repo-storage-ca-path、repo-storage-host、repo-storage-port、repo-storage-verify-tlsの各オプションが役立つ場合があります。

example: --repo1-s3-endpoint=s3.amazonaws.com

S3リポジトリキー種別オプション(--repo-s3-key-type)

S3リポジトリのキー種別です。

次の種別をサポートします。

  • shared - 共有キー
  • auto - 一時認証情報を自動取得
  • web-id - ウェブID認証情報を自動取得
  • pod-id - EKS Pod Identityの認証情報を自動取得
  • process - プロセスを実行して認証情報を取得
default: shared
example: --repo1-s3-key-type=auto

S3リポジトリKMSキーIDオプション(--repo-s3-kms-key-id)

S3リポジトリのKMSキーです。

指定したAWS Key Management Serviceのキーを使用して、S3のサーバー側暗号化を有効にします。

example: --repo1-s3-kms-key-id=bceb4f13-6939-4be3-910d-df54dee817b7

S3認証プロセスコマンドオプション(--repo-s3-process-cmd)

S3の認証プロセスコマンドです。

一時的なS3認証情報を取得するために実行するコマンド(および任意の引数)です。リストの最初の要素がコマンドで、残りの要素はパラメーターとして渡します。

プロセスは、AccessKeyId、SecretAccessKey、SessionToken、Expirationフィールドを含むJSONを出力する必要があります。認証情報は有効期限の前に自動更新されます。形式の詳細は、プロセス認証情報プロバイダー を参照してください。

example: --repo1-s3-process-cmd=/usr/local/bin/get-credentials --repo1-s3-process-cmd=--role --repo1-s3-process-cmd=my-role

S3リポジトリリージョンオプション(--repo-s3-region)

S3リポジトリのリージョンです。

バケットを作成したAWSリージョンです。

example: --repo1-s3-region=us-east-1

S3リポジトリのリクエスタ支払いオプション(--repo-s3-requester-pays)

S3リポジトリのリクエスタ支払いです。

S3のリクエスタ支払いを有効にします。

default: n
example: --no-repo1-s3-requester-pays

S3リポジトリロールオプション(--repo-s3-role)

S3リポジトリのロールです。

repo-s3-key-type=autoの場合に、一時認証情報の取得に使用するAWSロール名(完全なARNではありません)です。

example: --repo1-s3-role=authrole

S3リポジトリサービスオプション(--repo-s3-service)

S3の署名サービスです。

SigV4認証で使用するS3署名サービスです。標準のS3エンドポイントでは、デフォルトはs3です。S3 Outpostsエンドポイントを使用する場合は、s3-outpostsに設定します。

default: s3
example: --repo1-s3-service=s3-outposts

S3リポジトリSTSエンドポイントオプション(--repo-s3-sts-host)

S3リポジトリのSTSエンドポイントです。

repo-s3-key-type=web-idを設定した場合に、一時認証情報の取得に使用するSTSエンドポイントです。リージョン別STSを使用するには、リージョン別エンドポイント(例:sts.us-east-1.amazonaws.com)を設定します。GovCloudや中国リージョンで必要になる場合や、レイテンシーを低減するために使用する場合があります。

default: sts.amazonaws.com
example: --repo1-s3-sts-host=sts.us-east-1.amazonaws.com

S3リポジトリURI形式オプション(--repo-s3-uri-style)

S3のURI形式です。

次のURI形式をサポートします。

  • host - bucket.endpointホストに接続します。
  • path - endpointホストに接続し、URIの先頭にバケットを付加します。
default: host
example: --repo1-s3-uri-style=path

SFTPリポジトリホストオプション(--repo-sftp-host)

SFTPリポジトリのホストです。

リポジトリが存在するSFTPホストです。

example: --repo1-sftp-host=sftprepo.domain

SFTPリポジトリホストフィンガープリントオプション(--repo-sftp-host-fingerprint)

SFTPリポジトリホストのフィンガープリントです。

SFTPリポジトリホストのフィンガープリントの生成方法は、repo-sftp-host-key-hash-typeと一致させてください。awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -bでフィンガープリントを生成します。sshホストキーは通常、/etc/sshディレクトリにあります。

example: --repo1-sftp-host-fingerprint=f84e172dfead7aeeeae6c1fdfb5aa8cf

SFTPホストキー確認方式オプション(--repo-sftp-host-key-check-type)

SFTPのホストキー確認方式です。

次のSFTPホストキー確認方式をサポートします。

  • strict - pgBackRestは~/.ssh/known_hostsファイルにホストキーを自動追加せず、ホストキーが変更されたホスト、または既知のホストファイルで見つからないホストへの接続を拒否します。このオプションでは、新しいホストをすべて手動で追加する必要があります。
  • accept-new - pgBackRestは新しいホストキーをユーザーの既知のホストファイルに自動追加しますが、ホストキーが変更されたホストへの接続は許可しません。
  • fingerprint - pgBackRestは、repo-sftp-host-fingerprintオプションで指定したフィンガープリントとホストキーを照合します。
  • none - ホストキーを確認しません。
default: strict
example: --repo1-sftp-host-key-check-type=accept-new

SFTPリポジトリホストキーハッシュ種別オプション(--repo-sftp-host-key-hash-type)

SFTPリポジトリのホストキーハッシュ種別です。

SFTPリポジトリのホストキーハッシュ種別です。SSHの開始時に、リモートシステムのホストキーのダイジェスト計算に使用するハッシュ種別を指定します。新しいバージョンのlibssh2は、md5とsha1に加えてsha256もサポートします。

example: --repo1-sftp-host-key-hash-type=sha256

SFTPリポジトリホストポートオプション(--repo-sftp-host-port)

SFTPリポジトリホストのポートです。

SFTPリポジトリホストのポートです。

default: 22
allowed: [1, 65535]
example: --repo1-sftp-host-port=22

SFTPリポジトリホストユーザーオプション(--repo-sftp-host-user)

SFTPリポジトリホストのユーザーです。

リポジトリの保存に使用するホスト上のユーザーです。

example: --repo1-sftp-host-user=pg-backup

SFTP既知ホストファイルオプション(--repo-sftp-known-host)

SFTPの既知のホストファイルです。

認証時に一致するSFTPホストを探す既知のホストファイルです。未指定の場合、pgBackRestはデフォルトで~/.ssh/known_hosts、~/.ssh/known_hosts2、/etc/ssh/ssh_known_hosts、/etc/ssh/ssh_known_hosts2を検索します。1つ以上のファイルパスを設定した場合は、それらを検索して一致を確認します。ファイルパスは絶対パス、または先頭がチルダのパスである必要があります。repo-sftp-known-hostオプションを複数回指定することで、検索する既知のホストファイルを複数指定できます。既知のホストファイルによる確認を使用するには、repo-sftp-host-fingerprintを指定してはいけません。repo-sftp-host-check-typeオプションも参照してください。

example: --repo1-sftp-known-host=/home/postgres/.ssh/known_hosts

SFTPリポジトリ秘密鍵ファイルオプション(--repo-sftp-private-key-file)

SFTPの秘密鍵ファイルです。

認証に使用するSFTP秘密鍵ファイルです。

example: --repo1-sftp-private-key-file=~/.ssh/id_ed25519

SFTPリポジトリ公開鍵ファイルオプション(--repo-sftp-public-key-file)

SFTPの公開鍵ファイルです。

認証に使用するSFTP公開鍵ファイルです。OpenSSLに対してコンパイルした場合は任意ですが、別のライブラリに対してコンパイルした場合は必須です。

example: --repo1-sftp-public-key-file=~/.ssh/id_ed25519.pub

リポジトリストレージCAファイルオプション(--repo-storage-ca-file)

リポジトリストレージのCAファイルです。

ストレージ(例:S3、Azure)の証明書に、システムのデフォルト以外のCAファイルを使用します。

example: --repo1-storage-ca-file=/etc/pki/tls/certs/ca-bundle.crt

非推奨の名前:repo-azure-ca-file, repo-s3-ca-file

リポジトリストレージTLS CAパスオプション(--repo-storage-ca-path)

リポジトリストレージのCAパスです。

ストレージ(例:S3、Azure)の証明書に、システムのデフォルト以外のCAパスを使用します。

example: --repo1-storage-ca-path=/etc/pki/tls/certs

非推奨の名前:repo-azure-ca-path, repo-s3-ca-path

リポジトリストレージホストオプション(--repo-storage-host)

リポジトリストレージのホストです。

ストレージ(例:S3、Azure)のエンドポイントとは異なるホストに接続します。通常はテストに使用します。

example: --repo1-storage-host=127.0.0.1

非推奨の名前:repo-azure-host, repo-s3-host

リポジトリストレージポートオプション(--repo-storage-port)

リポジトリストレージのポートです。

ストレージ(例:S3、Azure)のエンドポイント(ホストを指定した場合はそのホスト)への接続に使用するポートです。

default: 443
allowed: [1, 65535]
example: --repo1-storage-port=9000

非推奨の名前:repo-azure-port, repo-s3-port

リポジトリストレージタグオプション(--repo-storage-tag)

リポジトリストレージのタグです。

リポジトリがオブジェクトストア(例:S3)の場合に、オブジェクトに付加するタグを指定します。このオプションを繰り返して、複数のタグを追加できます。

pgBackRestにはこれらのタグを変更する機能がないため、リポジトリ全体でタグを統一するには、stanza-createを実行する前に正しく設定してください。

example: --repo1-storage-tag=key1=value1

リポジトリストレージアップロードチャンクサイズオプション(--repo-storage-upload-chunk-size)

リポジトリストレージのアップロードチャンクサイズです。

S3などのオブジェクトストアでは、ファイルが大きすぎてメモリに格納できない場合に、チャンクに分けてアップロードできます。ファイルをメモリに格納できる場合でも、アップロードに使用するメモリ量を制限する方がメモリ効率は高くなります。

チャンクサイズを大きくすると、アップロードリクエストを最小限に抑え、チャンク分割せずに1回のリクエストでアップロードできるファイルが増えるため、一般にパフォーマンスが向上します。一方、メモリ使用量は増加します。チャンクバッファーはプロセスごとに割り当てる必要があるため、process-maxの値が大きいほど、全体のメモリ消費量も増えます。

有効なチャンクサイズは、ストレージの種類やプラットフォームによって異なります。たとえば、AWS S3の最小チャンクサイズは5MiBです。チャンクサイズの呼び方もストレージの種類によって異なるため、最小値/最大値を調べる際は、AWS S3では「part size」、GCSでは「chunk size」、Azureでは「block size」を使用してください。

ファイルが1GiB(PostgreSQLがデフォルトで作成する最大サイズ)より大きい場合、ファイルのアップロードを完了するために、許容される最大値までチャンクサイズを段階的に増やします。

default (depending on repo-type):
    azure - 4MiB
    gcs - 4MiB
    s3 - 5MiB

allow range (depending on repo-type):
    azure - [4MiB, 1GiB]
    gcs - [4MiB, 1GiB]
    s3 - [5MiB, 1GiB]

example: --repo1-storage-upload-chunk-size=16MiB

リポジトリストレージ証明書検証オプション(--repo-storage-verify-tls)

リポジトリストレージの証明書を検証します。

このオプションでは、ストレージ(例:S3、Azure)サーバーのTLS証明書の検証を有効/無効にできます。無効化は、テストや自己署名証明書を使用する場合に限ってください。

default: y
example: --no-repo1-storage-verify-tls

非推奨の名前:repo-azure-verify-tls, repo-s3-verify-ssl, repo-s3-verify-tls

リポジトリ対象時刻オプション(--repo-target-time)

リポジトリの対象時刻です。

対象時刻は、コマンドがバージョン管理されたストレージ上のリポジトリを読み取る際の時点を定義します。これにより、ある時点の状態のリポジトリを読み取り、ユーザーの誤操作やマルウェアによって削除または破損したデータをリカバリーできます。

S3、GCS、Azureはストレージのバージョン管理をサポートしますが、通常はデフォルトで有効になっていません。バージョン管理の有効化に加え、S3ではオブジェクトロック、GCSやAzureでは論理削除を有効にすると役立つ場合があります。

repo-target-timeオプションを指定する場合は、repoオプションも指定する必要があります。すべてのリポジトリ種類がバージョン管理をサポートするとは限らず、一般にリカバリーでは単一のリポジトリを対象とするのが妥当です。

ストレージのタイムスタンプとの比較は、指定したタイムスタンプ以下(<=)で行い、タイムスタンプにミリ秒を指定しても切り捨てられます。

example: --repo-target-time=2024-08-08 12:12:12+00

リポジトリ種別オプション(--repo-type)

リポジトリに使用するストレージの種類です。

次のリポジトリ種類をサポートします。

  • azure - Azure Blob Storage Service
  • cifs - posixと同様ですが、リンクとディレクトリのfsyncを無効にします
  • gcs - Google Cloud Storage
  • posix - Posix準拠のファイルシステム
  • s3 - AWS Simple Storage Service
  • sftp - Secure File Transfer Protocol

NFSマウントをposixリポジトリとして使用する場合、PostgreSQLのドキュメントに記載されたものと同じ規則がpgBackRestにも適用されます。データベースクラスターの作成 - ファイルシステム を参照してください。

default: posix
example: --repo1-type=cifs

4.20 - バージョンコマンド (version)

pgBackRestのversionコマンドのオプションおよび動作に関するリファレンス。

pgBackRestのインストール済みバージョンを表示します。

コマンドオプション

出力オプション (--output)

出力形式です。

次の出力形式をサポートします。

  • text - インストールされたpgBackRestのバージョンをテキスト形式で表示します。
  • num - pgBackRestのインストール済みバージョンを整数で表示します。
default: text
example: --output=num

5 - 設定リファレンス

アーカイブ、バックアップ、リポジトリ、クラウドストレージのオプションを含む、pgBackRestの全設定を網羅したリファレンス。

はじめに

pgBackRestはコマンドラインパラメーターだけでも使用できますが、構成が複雑な場合や多数のオプションを設定する場合は、設定ファイルの方が実用的です。設定ファイルのデフォルトの場所は/etc/pgbackrest/pgbackrest.confです。この場所にファイルがない場合は、旧デフォルトの/etc/pgbackrest.confを確認します。

次のオプション型を使用します。

文字列:通常は識別子やパスワードなどを表すテキスト文字列です。

コマンドラインの例:--stanza=demo
設定ファイルの例:repo1-cipher-pass=zWaf6XtpjIVZC5444yXB...

パス:ディレクトリ構造内の場所を一意に識別します。パスは/で始める必要があり、連続する//は使用できません。末尾には/を付けません。

コマンドラインの例:--repo1-path=/var/lib/pgbackrest
設定ファイルの例:repo1-path=/var/lib/pgbackrest

真偽値:オプションを有効または無効にします。有効な引数値はy/nのみです。

コマンドラインの例:--start-fast、--no-start-fast、--start-fast=y、--start-fast=n
設定ファイルの例:start-fast=y、start-fast=n

整数:ポート、保持数や再試行回数、許可する並列プロセス数などに使用します。

コマンドラインの例:--compress-level=3
設定ファイルの例:pg1-port=5432

サイズ:バッファーサイズやディスク使用量などに使用します。サイズはバイト(デフォルト)、または1024の累乗を倍率とするKiB、MiB、GiB、TiB、PiBで指定できます。たとえば、5368709120の代わりに、大文字と小文字を区別しない5GiB(または5GB、5g)を使用できます。2.5GiBのような小数値は指定できないため、代わりに2560MiBを使用してください。

コマンドラインの例:--archive-get-queue-max=1GiB
設定ファイルの例:buffer-size=2MiB

時間:秒単位の時間です。

コマンドラインの例:--io-timeout=90
設定ファイルの例:db-timeout=600

リスト:オプションを複数回指定できます。

コマンドラインの例:--db-exclude=db1 --db-exclude=db2 --db-exclude=db5

設定ファイルの例(それぞれ別の行に記述):

db-exclude=db1
db-exclude=db2
db-exclude=db5

キー/値:key=value形式でオプションを複数回指定できます。

コマンドラインの例:--tablespace-map=ts_01=/db/ts_01 --tablespace-map=ts_02=/db/ts_02

設定ファイルの例(それぞれ別の行に記述):

tablespace-map=ts_01=/db/ts_01
tablespace-map=ts_02=/db/ts_02

アーカイブオプション

archiveセクションでは、archive-pushコマンドとarchive-getコマンドのオプションを定義します。

非同期アーカイブオプション(--archive-async)

WALセグメントを非同期に送信/取得します。

archive-pushコマンドとarchive-getコマンドの非同期処理を有効にします。

非同期処理では接続の再利用と並列処理が可能なため、効率が向上します。詳細はspool-path、archive-get-queue-max、archive-push-queue-maxの各オプションを参照してください。

default: n
example: archive-async=y

アーカイブ取得キューの最大サイズオプション(--archive-get-queue-max)

pgBackRestのarchive-getキューの最大サイズです。

archive-asyncが有効な場合のarchive-getキューの最大サイズを指定します。キューはspool-pathに格納され、PostgreSQLへのWALの提供を高速化するために使用されます。

default: 128MiB
allowed: [0B, 4PiB]
example: archive-get-queue-max=1GiB

欠落WALセグメントの再試行オプション(--archive-missing-retry)

欠落したWALセグメントの取得を再試行します。

非同期モードのarchive-getコマンドが以前に欠落を報告したWALセグメントの取得を再試行します。これにより、以前のリストアでスプールパスに残された通知が使用され、一貫性が確保される前にリカバリーが失敗する事態を防ぎます。

このオプションを無効にすると、PostgreSQLはアーカイブ内のWALの末尾に到達したことをより確実に認識し、プライマリーからのストリーミングに切り替えられます。再試行が有効な場合は、WALが継続的にアーカイブされると、PostgreSQLはストリーミングに切り替えずにアーカイブからのWAL取得を続けます。

このオプションを無効にする場合は、stanzaのスプールパスが空であることを必ず確認してください。リストア時にスプールパスが設定されていれば、restoreコマンドが自動的に空にします。それ以外の場合は、ユーザーがスプールパスを空にする必要があります。

default: y
example: archive-missing-retry=n

アーカイブ送信バッチサイズオプション(--archive-push-batch-size)

非同期処理の1回の実行で送信するWALの最大量です。

非同期モードでは、archive-pushプロセスは準備ができているすべてのWALセグメントを1回の実行で送信します。archive-push-queue-maxは各実行の開始時にのみ確認されるため、非常に多くのセグメントを処理する実行では、再確認までの間にキューが上限を大幅に超えて増大することがあります。

このオプションは1回の実行で処理するWALの量を制限します。プロセスは終了後、次のarchive-pushによって再び起動され、その際にキューが再確認されます。値を小さくするとキューの確認頻度が高くなりますが、非同期プロセスの起動頻度も高くなります。値はWALセグメント単位で切り捨てられますが、常に少なくとも1つのセグメントは処理されます。

default: 16GiB
allowed: [1MiB, 4PiB]
example: archive-push-batch-size=1GiB

アーカイブ送信キューの最大サイズオプション(--archive-push-queue-max)

PostgreSQLのアーカイブキューの最大サイズです。

上限に達すると、次の処理が行われます。

  • pgBackRestはWALのアーカイブが成功したことをPostgreSQLに通知した後、そのWALを破棄します。
  • PostgreSQLのログに警告が出力されます。

この場合、アーカイブログの連続性が失われ、その時点より後へのPITRはできなくなります。完全なリストア機能を取り戻すには、新しいバックアップが必要です。

非同期モードでは、キューの上限を再び超えるまでの間にWALが断続的に送信されることを防ぐため、キュー全体を破棄します。

非同期モードでは、この上限は各archive-push実行の開始時にのみ確認されるため、1回の実行中にキューが上限を超えて増大することがあります。キューをより頻繁に確認するには、archive-push-batch-sizeを小さくしてください。

この機能は、ログボリュームが満杯になってPostgreSQLが完全に停止することを防ぐためのものです。PostgreSQLを停止させるよりは、バックアップを失う方を選びます。

allowed: [0B, 4PiB]
example: archive-push-queue-max=1TiB

非推奨の名前:archive-queue-max

アーカイブタイムアウトオプション(--archive-timeout)

アーカイブのタイムアウトです。

各WALセグメントがpgBackRestのアーカイブリポジトリに到達するまで待機する最大時間を秒単位で設定します。このタイムアウトは、バックアップの一貫性に必要なWALセグメントのアーカイブを待つ際に、checkコマンドとbackupコマンドに適用されます。

default: 1m
allowed: [100ms, 1d]
example: archive-timeout=30

バックアップオプション

backupセクションでは、バックアップに関する設定を定義します。

バックアップ注釈オプション(--annotation)

ユーザー定義のキー/値ペアでバックアップに注釈を付けます。

バックアップに情報を示すキー/値ペアを付加できます。このオプションを複数回指定して、複数の注釈を付けられます。

注釈は、--setでバックアップを指定した場合にinfoコマンドのテキスト出力に表示されます。JSON出力には常に表示されます。

example: annotation=source="Sunday backup for website database"

アーカイブ確認オプション(--archive-check)

バックアップの完了前に、WALセグメントがアーカイブに存在することを確認します。

バックアップの一貫性を確保するために必要なすべてのWALセグメントが、WALアーカイブに存在することを確認します。別のアーカイブ方法を使用していない限り、デフォルトのままにしておくことを推奨します。

archive-copyが有効な場合は、このオプションを有効にする必要があります。

default: y
example: archive-check=n

アーカイブコピーオプション(--archive-copy)

一貫性の確保に必要なWALセグメントをバックアップにコピーします。

この念には念を入れたオプションは、一貫性に必要なWALセグメントをバックアップに直接格納することで、WALセグメントのアーカイブの破損に備えます。WALセグメントは引き続きアーカイブにも格納されるため、このオプションは追加の容量を使用します。

このオプションを使用する場合は、archive-pushコマンドとbackupコマンドで同じcompress-type(例:lz4)を使用することを推奨します。異なる場合、WALセグメントはバックアップで使用するcompress-typeで再圧縮する必要があり、バックアップ中に生成されたWALの量によっては、かなりの負荷がかかります。

リストア時にはWALセグメントがpg_xlog/pg_wal内に存在し、PostgreSQLはrestore_commandの呼び出しよりも優先してこれらを使用します。

archive-copyが有効な場合は、archive-checkオプションを有効にする必要があります。

default: n
example: archive-copy=y

アーカイブモード確認オプション(--archive-mode-check)

PostgreSQLのarchive_mode設定を確認します。

このオプションはデフォルトで有効で、PostgreSQLのarchive_mode=alwaysを禁止します。

スタンバイサーバーから送信されたWALセグメントは、プライマリーから送信されたWALセグメントと論理的には同じでも、チェックサムが異なる場合があります。競合を避けるため、複数のソースからのアーカイブを無効にすることを推奨します。

注意:

このオプションを無効にする場合は、archive-pushコマンドを通じてリポジトリに書き込むアーカイバーが1つだけであることを必ず確認してください。

default: y
example: archive-mode-check=n

スタンバイからのバックアップオプション(--backup-standby)

スタンバイクラスターからバックアップします。

プライマリークラスターの負荷を軽減するには、スタンバイからのバックアップを有効にします。このオプションでは、プライマリーとスタンバイの両方のホストを設定する必要があります。

次のモードをサポートします。

  • y - バックアップにスタンバイを必須とします。
  • prefer - スタンバイが利用可能ならスタンバイから、そうでなければプライマリーからバックアップします。
  • n - プライマリーからのみバックアップします。
default: n
example: backup-standby=y

ページチェックサムオプション(--checksum-page)

データページのチェックサムを検証します。

クラスターのバックアップ中に、pgBackRestがすべてのデータページのチェックサムを検証するようにします。クラスターでデータページのチェックサムが有効になっている場合、このオプションは自動的に有効になります。

チェックサムの検証に失敗しても、バックアップは中止されません。代わりに、ログ(デフォルト設定ではコンソールにも)に警告を出力し、無効なページの一覧をバックアップマニフェストに保存します。

example: checksum-page=n

パス/ファイルの除外オプション(--exclude)

パス/ファイルをバックアップから除外します。

すべての除外指定は$PGDATAを基準とします。除外指定が/で終わる場合は、指定ディレクトリ内のファイルのみを除外します。たとえば、--exclude=junk/は$PGDATA/junkディレクトリ内のすべてのファイルを除外しますが、ディレクトリ自体は含めます。除外指定が/で終わらない場合は、ファイルが除外指定に完全一致するか、除外指定の末尾に/を付けたものに一致すれば除外します。たとえば、--exclude=junkは$PGDATA/junkディレクトリとその中のすべてのファイルを除外します。

この機能は慎重に使用してください。重要なものを容易に除外できてしまい、バックアップの一貫性を損なう危険があります。必ずリストアをテストしてください!

除外されたすべてのファイルは、除外ルールとともにinfoレベルでログに記録されます。除外されたファイルの一覧を必ず確認し、意図しないものが除外されていないことを確かめてください。

注記:

差分リストアでは除外指定は考慮されません。バックアップで除外されたファイル/ディレクトリは、差分リストア時に削除されます。

このオプションを、バックアップからPostgreSQLのログを除外するために使用しないでください。PostgreSQLのlog_directory設定でログをPGDATAディレクトリの外に移動すれば、リストア後もログを保持できるという利点があります。

コマンドラインまたは設定ファイルで複数の除外指定が可能です。

example: exclude=junk/

自動期限切れ処理オプション(--expire-auto)

バックアップの成功後にexpireコマンドを自動実行します。

この設定はデフォルトで有効です。無効にすると、すべてのバックアップとアーカイブが無期限に保持され、リポジトリの空き容量がなくなる可能性があるため、注意してください。これを防ぐには、expireコマンドを定期的に実行する必要があります。

バックアップの成功後にexpireを自動実行する場合は、backupコマンドの設定を使用するため、expireコマンドのセクション(例:[global:expire])だけに設定したオプションは適用されません。expire専用の設定を適用するには、このオプションを無効にし、expireコマンドを個別に実行してください。

default: y
example: expire-auto=y

マニフェスト保存しきい値オプション(--manifest-save-threshold)

バックアップ中のマニフェスト保存しきい値です。

バックアップ中にマニフェストを保存する頻度を定義します。マニフェストにはチェックサムが保存され、再開機能を効率的に動作させられるため、その保存は重要です。実際に使用するしきい値は、バックアップサイズの1%とmanifest-save-thresholdのうち大きい方です。

default: 1GiB
allowed: [1B, 1TiB]
example: manifest-save-threshold=8GiB

再開オプション(--resume)

失敗したバックアップの再開を許可します。

再開機能を有効にするかどうかを定義します。同じ種類のバックアップが以前に失敗した場合、再開によってバックアップの実行に必要な時間を大幅に短縮できます。ただし、処理が複雑になるため、この機能を必要としない環境では無効にする方が望ましい場合があります。

default: y
example: resume=n

高速開始オプション(--start-fast)

チェックポイントを強制し、バックアップを速やかに開始します。

バックアップ開始関数のfastパラメーターにyを渡してチェックポイントを強制し、バックアップを直ちに開始します。そうしない場合、バックアップは次の通常のチェックポイントの後に開始します。

default: n
example: start-fast=y

一般オプション

generalセクションでは、多くのコマンドに共通するオプションを定義します。

rootでの実行許可オプション(--allow-root)

rootユーザーによるコマンドの実行を許可します。

デフォルトでは、ファイルの所有権を慎重に管理するように設計されたrestoreコマンドのみをrootユーザーで実行できます。ほかのコマンドをrootで実行すると、たとえばリポジトリ内にroot所有のファイルが作成され、PostgreSQLユーザーがアクセスできなくなって、後続のコマンドが失敗するおそれがあります。

それでもコマンドをrootで実行する場合は、このオプションを有効にします。ただし、リポジトリとPostgreSQLクラスターを所有するユーザーとしてpgBackRestを実行する方がはるかに適切です。

default: n
example: allow-root=y

バッファーサイズオプション(--buffer-size)

I/O処理のバッファーサイズです。

コピー、圧縮、暗号化などの処理に使用するバッファーサイズです。使用するバッファーの数はオプションによって異なり、各処理で追加のメモリを使用する場合があります。たとえば、gz圧縮では256KiBのメモリを追加で使用する場合があります。

指定できる値は、16KiB、32KiB、64KiB、128KiB、256KiB、512KiB、1MiB、2MiB、4MiB、8MiB、16MiBです。

default: 1MiB
example: buffer-size=2MiB

pgBackRestコマンドオプション(--cmd)

pgBackRestコマンドです。

pgBackRestは、たとえばrestoreコマンドがrestore_command設定を生成する際に、コマンド文字列を生成することがあります。この場合、cmdオプションを指定しない限り、pgBackRestプロセスの実行に使用したコマンドが使われます。

注意:

pgBackRestコマンドをラッパー経由で実行すると、予測できない動作を引き起こす可能性があるため、推奨しません。

default: [path of executed pgbackrest binary]
example: cmd=/var/lib/pgsql/bin/pgbackrest_wrapper.sh

SSHクライアントコマンドオプション(--cmd-ssh)

SSHクライアントのコマンドです。

別のSSHクライアントを使用したい場合や、sshコマンドが$PATHに含まれていない場合に、使用するSSHクライアントコマンドを指定します。

default: ssh
example: cmd-ssh=/usr/bin/ssh

圧縮オプション(--compress)

ファイル圧縮を使用します。

バックアップファイルは、コマンドラインの圧縮ツールと互換性があります。

このオプションは現在非推奨です。代わりにcompress-typeオプションを使用してください。

default: y
example: compress=n

圧縮レベルオプション(--compress-level)

ファイルの圧縮レベルです。

compress-typeがnoneでない場合、またはcompress=y(非推奨)の場合に、ファイル圧縮に使用するレベルを設定します。

default (depending on compress-type):
    bz2 - 9
    gz - 6
    lz4 - 1
    zst - 3

allow range (depending on compress-type):
    bz2 - [1, 9]
    gz - [-1, 9]
    lz4 - [-5, 12]
    zst - [-7, 22]

example: compress-level=9

ネットワーク圧縮レベルオプション(--compress-level-network)

ネットワークの圧縮レベルです。

compress-type=noneで、コマンドがリポジトリと同じホストで実行されない場合のネットワーク圧縮レベルを設定します。圧縮によってネットワークトラフィックを削減します。compress-typeがnoneでない場合は、ファイルを1回だけ圧縮するように、compress-level-network設定を無視して代わりにcompress-levelを使用します。

default: 1
allowed: [-5, 12]
example: compress-level-network=1

圧縮形式オプション(--compress-type)

ファイルの圧縮形式です。

次の圧縮形式をサポートします。

  • none - 圧縮なし
  • bz2 - bzip2圧縮形式
  • gz - gzip圧縮形式
  • lz4 - lz4圧縮形式(一部のプラットフォームでは利用不可)
  • zst - Zstandard圧縮形式(一部のプラットフォームでは利用不可)
default: gz
example: compress-type=none

データベースタイムアウトオプション(--db-timeout)

データベースクエリーのタイムアウトです。

データベースに対するクエリーのタイムアウトを秒単位で設定します。これには、それぞれかなりの時間がかかる可能性があるバックアップの開始/停止関数も含まれます。そのため、これらの関数が速やかに戻ることがわかっている場合(つまり、start-fast=yを設定し、バックアップ中にデータベースクラスターが多数のWALセグメントを生成しないことがわかっている場合)を除き、タイムアウトは長めにしておくことを推奨します。

注記:

db-timeoutオプションは、protocol-timeoutオプションより小さくする必要があります。

default: 30m
allowed: [100ms, 7d]
example: db-timeout=600

差分処理オプション(--delta)

チェックサムを使用してリストアまたはバックアップします。

リストア時には、デフォルトでPostgreSQLのデータディレクトリとテーブルスペースディレクトリが存在し、空であることを想定します。このオプションは、チェックサムを使用して差分リストアを実行します。

バックアップ時には、このオプションによってタイムスタンプの代わりにチェックサムを使用し、ファイルをコピーするかどうかを判定します。

default: n
example: delta=y

I/Oタイムアウトオプション(--io-timeout)

I/Oのタイムアウトです。

接続および読み取り/書き込み処理に使用する、秒単位のタイムアウトです。

読み取り/書き込み処理全体がこのタイムアウト内に完了する必要はありませんが、わずか1バイトでも、何らかの進展が必要です。

default: 1m
allowed: [100ms, 1h]
example: io-timeout=120

ロックパスオプション(--lock-path)

ロックファイルを保存するパスです。

ロックパスは、pgBackRestが競合する処理の同時実行を防ぐためのロックファイルを作成する場所です。

default: /tmp/pgbackrest
example: lock-path=/backup/db/lock

固定umaskオプション(--neutral-umask)

固定のumaskを使用します。

umaskを0000に設定し、リポジトリ内のファイルやディレクトリが適切な権限で作成されるようにします。デフォルトのディレクトリ権限は0750、ファイル権限は0640です。

代わりに実行ユーザーのumaskを使用するには、設定ファイルにneutral-umask=n、またはコマンドラインに--no-neutral-umaskを指定します。

default: y
example: neutral-umask=n

プロセス優先度設定オプション(--priority)

プロセスの優先度を設定します。

カーネルのスケジューラーがプロセスに与える優先度(niceness)を定義します。正の値は優先度を下げ、負の値は優先度を上げます。通常、プロセスには自身の優先度を上げる権限がありません。

allowed: [-20, 19]
example: priority=19

最大プロセス数オプション(--process-max)

圧縮/転送に使用する最大プロセス数です。

各プロセスが圧縮と転送を実行することでコマンドを高速化しますが、データベースのパフォーマンスに影響するほどprocess-maxを高く設定しないでください。

default: 1
allowed: [1, 999]
example: process-max=4

プロトコルタイムアウトオプション(--protocol-timeout)

プロトコルのタイムアウトです。

ローカルまたはリモートのプロセスが、プロトコル層で新しいメッセージの受信を待つタイムアウトを秒単位で設定します。これにより、プロセスがメッセージを無期限に待ち続けることを防ぎます。

注記:

protocol-timeoutオプションは、db-timeoutオプションより大きくする必要があります。

default: 31m
allowed: [100ms, 7d]
example: protocol-timeout=630

キープアライブオプション(--sck-keep-alive)

キープアライブを有効にします。

ソケット接続でキープアライブメッセージを有効にします。

default: y
example: sck-keep-alive=n

スプールパスオプション(--spool-path)

一時的なデータを保存するパスです。

このパスは、非同期のarchive-pushコマンドとarchive-getコマンドのデータを保存するために使用します。

非同期のarchive-pushコマンドは、アーカイブへのWALの保存が成功すると確認応答を(失敗時にはエラーを)スプールパスに書き込み、フォアグラウンドプロセスがPostgreSQLに速やかに通知できるようにします。確認応答ファイルは非常に小さく、成功時は0バイト、エラー時も数百バイトです。

非同期のarchive-getコマンドは、PostgreSQLの要求時にWALをすぐに提供できるよう、スプールパスにWALをキューイングします。スプールパスがpg_xlog/pg_walと同じファイルシステム上にあると、PostgreSQLへのファイル移動が最も効率的です。ただし、スプールパスをpg_xlog/pg_walディレクトリの内部に配置すると、pg_rewindなどのPostgreSQLユーティリティーに問題が生じる可能性があるため、推奨しません。

スプールパスに保存されたデータは再起動後も保持でき、保持することが望ましいため、厳密には一時データではありません。ただし、スプールパス内のデータが失われても問題はありません。pgBackRestは、archive-pushでは各WALセグメントが安全にアーカイブされていることを再確認し、archive-getではキューを再構築するだけです。

スプールパスは、NFSやCIFSなどのリモートファイルシステムではなく、ローカルのPosix互換ファイルシステム上に置くことを想定しています。

default: /var/spool/pgbackrest
example: spool-path=/backup/db/spool

キープアライブ回数オプション(--tcp-keep-alive-count)

キープアライブの回数です。

接続が切れたと判断するまでに、応答がなくても許容するTCPキープアライブメッセージの数を指定します。

このオプションは、TCP_KEEPCNTソケットオプションをサポートするシステムで利用できます。

allowed: [1, 32]
example: tcp-keep-alive-count=3

キープアライブ待機時間オプション(--tcp-keep-alive-idle)

キープアライブの待機時間です。

ネットワーク通信がない状態で、オペレーティングシステムがTCPキープアライブメッセージを送信するまでの時間を秒単位で指定します。

このオプションは、TCP_KEEPIDLEソケットオプションをサポートするシステムで利用できます。

allowed: [1, 3600]
example: tcp-keep-alive-idle=60

キープアライブ間隔オプション(--tcp-keep-alive-interval)

キープアライブの送信間隔です。

応答のないTCPキープアライブメッセージを再送信するまでの時間を秒単位で指定します。

このオプションは、TCP_KEEPINTVLソケットオプションをサポートするシステムで利用できます。

allowed: [1, 900]
example: tcp-keep-alive-interval=30

TLSv1.2暗号スイートオプション(--tls-cipher-12)

許可するTLSv1.2暗号スイートです。

pgBackRestクライアントとサーバー間のすべてのTLS接続は暗号化されます。デフォルトでは、オブジェクトストア(例:S3)への接続も暗号化されます。

注記:

どのトランスポート接続でも、セキュリティーの最低要件はTLSv1.2です。

必要に応じて、受け入れる暗号スイートを調整できます。特別なセキュリティー要件がなければ、例に示す値が妥当な選択です。未設定(デフォルト)の場合は、使用するOpenSSLライブラリのデフォルトが適用されます。

example: tls-cipher-12=HIGH:MEDIUM:+3DES:!aNULL

TLSv1.3暗号スイートオプション(--tls-cipher-13)

許可するTLSv1.3暗号スイートです。

pgBackRestクライアントとサーバー間のすべてのTLS接続は暗号化されます。デフォルトでは、オブジェクトストア(例:S3)への接続も暗号化されます。

注記:

どのトランスポート接続でも、セキュリティーの最低要件はTLSv1.2です。

必要に応じて、受け入れる暗号スイートを調整できます。未設定(デフォルト)の場合は、使用するOpenSSLライブラリのデフォルトが適用されます。

example: tls-cipher-13=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256

ログオプション

logセクションでは、ログに関する設定を定義します。

注意:

traceレベルのログには、キーやパスワードなどの機密情報が露出する可能性があります。慎重に使用してください!

コンソールログレベルオプション(--log-level-console)

コンソールに出力するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: warn
example: log-level-console=error

ファイルログレベルオプション(--log-level-file)

ファイルに記録するログのレベルです。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: info
example: log-level-file=debug

標準エラーログレベルオプション(--log-level-stderr)

stderrに出力するログのレベルです。

stdout(log-level-consoleで指定)の代わりにstderrへ出力するログレベルを指定します。stderrにはタイムスタンプとプロセスを出力しません。

次のログレベルをサポートします。

  • off - ログを一切記録しません(非推奨)
  • error - エラーのみを記録します
  • warn - 警告とエラーを記録します
  • info - 情報、警告、エラーを記録します
  • detail - 詳細、情報、警告、エラーを記録します
  • debug - デバッグ、詳細、情報、警告、エラーを記録します
  • trace - トレース(非常に詳細なデバッグ)、デバッグ、情報、警告、エラーを記録します
default: off
example: log-level-stderr=error

ログパスオプション(--log-path)

ログファイルを保存するパスです。

ログパスは、pgBackRestがログファイルを保存する場所です。log-level-file=offの場合、ログパスは不要です。

default: /var/log/pgbackrest
example: log-path=/backup/db/log

サブプロセスログオプション(--log-subprocess)

サブプロセスでのログ記録を有効にします。

このプロセスが作成するすべてのサブプロセスで、log-level-fileで指定したログレベルによるファイルへのログ記録を有効にします。

default: n
example: log-subprocess=y

ログタイムスタンプオプション(--log-timestamp)

ログのタイムスタンプを有効にします。

コンソールとファイルのログでタイムスタンプを有効にします。このオプションは、ドキュメント生成などの特殊な状況では無効にします。

default: y
example: log-timestamp=n

メンテナー向けオプション

メンテナー向けオプションは、PostgreSQLのフォークをサポートするためのものです。適切な設定はフォークのメンテナーが決定し、そのフォークのユーザーに伝えることを推奨します。

警告:

これらのオプションを不適切に使用すると、予期しない動作やデータ破損を引き起こす可能性があります。

必要なオプションを指定してpgBackRestをテストする責任は、フォークのメンテナーにあります。pgBackRestは、いかなるフォークとの互換性も保証しません。

WALヘッダー確認オプション(--archive-header-check)

WALヘッダー内のPostgreSQLバージョン/識別子を確認します。

このオプションはデフォルトで有効で、WALヘッダーをPostgreSQLのバージョンおよびシステム識別子と照合し、WALが正しいstanzaにコピーされることを確認します。これは、pg_controlとstanzaの照合、およびWALのコピー元がpg_controlの存在するPostgreSQLデータディレクトリと同じであることの確認に加えて実行されます。

したがって、この確認の無効化は比較的安全ですが、WALが暗号化されている場合など、必要な場合に限って行ってください。

default: y
example: archive-header-check=n

ページヘッダー確認オプション(--page-header-check)

PostgreSQLのページヘッダーを確認します。

このオプションはデフォルトで有効で、ページヘッダーの確認を追加します。

ページが暗号化されている場合など、必要な場合を除き、このオプションの無効化は避けてください。

default: y
example: page-header-check=n

PostgreSQLバージョン強制指定オプション(--pg-version-force)

PostgreSQLのバージョンを強制指定します。

pg_controlまたはWALヘッダーを読み取って自動検出したバージョンの代わりに、指定したPostgreSQLバージョンを使用します。これは主に、これらの値がリリース版とは異なるPostgreSQLのフォークや開発版で役立ちます。PostgreSQLがserver_version_numで報告するバージョンは、強制指定したバージョンと一致する必要があります。

警告:

このオプションは慎重に使用してください。pg_controlとWALヘッダーは引き続き、指定バージョンで想定される形式、つまり公式のオープンソース版PostgreSQLの形式で読み取られます。フォークや開発版が、pgBackRestの依存するフィールドの形式を変更していると、予期しない動作が生じます。一般に、このオプションが想定どおりに動作するのは、フォークが独自の構造体メンバーをすべて標準のPostgreSQLメンバーの後ろに追加している場合に限られます。

example: pg-version-force=15

リポジトリオプション

repositoryセクションでは、リポジトリを設定するためのオプションを定義します。

インデックス:複数のリポジトリを設定できるように、すべてのrepo-オプションにはインデックスが付きます。たとえば、1つのリポジトリはrepo1-path、repo1-hostなどのオプションで設定します。複数のリポジトリが設定されていて、コマンドに--repoオプションを指定しない場合、リポジトリは優先度の高い順(例:repo1、次にrepo2)に処理されます。

repo-retention-*オプションは、バックアップの保持期間を定義します。期限切れ処理は、完了したバックアップ数が保持上限を超えた場合にのみ行われます。つまり、repo1-retention-full-typeをcount(デフォルト)に、repo1-retention-fullを2に設定した場合、最も古いバックアップが期限切れになるには、完了したバックアップが3つ必要です。repo1-retention-full-typeをtimeに設定した場合、repo1-retention-fullは日数を表すため、期限切れ処理が行われるには、少なくともその日数分のフルバックアップが必要です。常に保持数+1個のバックアップに十分な容量を確保してください。

Azureリポジトリアカウントオプション(--repo-azure-account)

Azureリポジトリのアカウントです。

リポジトリの保存に使用するAzureアカウントです。

example: repo1-azure-account=pg-backup

Azureリポジトリコンテナーオプション(--repo-azure-container)

Azureリポジトリのコンテナーです。

リポジトリの保存に使用するAzureコンテナーです。

repo-path=/を設定するとpgBackRestリポジトリをコンテナーのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのAzureが生成するコンテンツもコンテナーに保存できるようにすることを推奨します。

example: repo1-azure-container=pg-backup

Azureリポジトリエンドポイントオプション(--repo-azure-endpoint)

Azureリポジトリのエンドポイントです。

Blobサービスへの接続に使用するエンドポイントです。Azure Governmentを使用しない限り、通常はデフォルトで適切です。

独自の構成やテスト構成では、repo-storage-ca-file、repo-storage-ca-path、repo-storage-host、repo-storage-port、repo-storage-verify-tlsの各オプションが役立つ場合があります。

default: blob.core.windows.net
example: repo1-azure-endpoint=blob.core.usgovcloudapi.net

Azureリポジトリキーオプション(--repo-azure-key)

Azureリポジトリのキーです。

repo-azure-key-typeオプションに応じた共有キーまたは共有アクセス署名です。

example: repo1-azure-key=T+9+aov82qNhrcXSNGZCzm9mjd4d75/oxxOr6r1JVpgTLA==

Azureリポジトリキー種別オプション(--repo-azure-key-type)

Azureリポジトリのキー種別です。

認可には次の種別をサポートします。

  • shared - 共有キー
  • sas - 共有アクセス署名
  • auto - AzureマネージドIDを使用して自動的に認可
default: shared
example: repo1-azure-key-type=sas

AzureリポジトリURI形式オプション(--repo-azure-uri-style)

AzureのURI形式です。

次のURI形式をサポートします。

  • host - account.endpointホストに接続します。
  • path - endpointホストに接続し、URIの先頭にアカウントを付加します。
default: host
example: repo1-azure-uri-style=path

ブロック増分バックアップオプション(--repo-block)

ブロック増分バックアップを有効にします。

ブロック増分バックアップは、ファイルを個別にバックアップ可能なブロックに分割することで、より細かな単位でのバックアップを可能にします。リポジトリの容量を節約し、リポジトリからファイル全体を読み取らずに個々のブロックを取得できるため、差分リストアのパフォーマンスが向上する可能性があります。

注記:

repo-blockを有効にする前に、repo-bundleオプションを有効にする必要があります。

ファイルのブロックサイズは、ファイルのサイズと古さに基づいて決まります。一般に、古いファイルや大きいファイルには、より大きなブロックサイズが使われます。ファイルが十分に古い場合は、ブロック増分バックアップの対象になりません。

ブロック増分バックアップは、フルバックアップを含むすべてのバックアップ種類で有効にすると最も効率的です。フルバックアップは少し大きくなりますが、後続の差分バックアップと増分バックアップは、フルバックアップが生成したブロックマップを使用して容量を節約できます。

default: n
example: repo1-block=y

リポジトリバンドルオプション(--repo-bundle)

リポジトリ内でファイルをまとめます。

小さいファイルをバンドル(結合)し、リポジトリに書き込むファイルの総数を減らします。ファイル数を減らすと、一般に書き込みが効率化され、S3などのオブジェクトストアで特に効果があります。また、長さ0のファイルはマニフェスト以外には保存しないため、時間と容量を節約できます。

default: n
example: repo1-bundle=y

リポジトリバンドル対象サイズ上限オプション(--repo-bundle-limit)

ファイルをバンドルする際のサイズ上限です。

バンドルに含めるファイルのサイズ上限です。このサイズより大きいファイルは個別に保存します。

バンドルされたファイルはバックアップの再開時に再利用できないため、このオプションは再開可能なファイルを制御します。つまり、値を大きくすると再開可能なファイルが少なくなります。

default: 2MiB
allowed: [8KiB, 1PiB]
example: repo1-bundle-limit=10MiB

リポジトリバンドルサイズオプション(--repo-bundle-size)

ファイルバンドルの目標サイズです。

1つのバンドルに追加するファイルの目標サイズを定義します。非圧縮のバンドルサイズは最大でrepo-bundle-size+repo-bundle-limitになるため、このオプションにファイルシステムの最大許容サイズを設定しないでください。

再試行時にはバンドル全体を処理し直す必要があるため、一般に、このオプションを大きくしすぎるのは適切ではありません。

default: 20MiB
allowed: [1MiB, 1PiB]
example: repo1-bundle-size=10MiB

リポジトリ暗号化パスフレーズオプション(--repo-cipher-pass)

リポジトリの暗号化パスフレーズです。

リポジトリ内のファイルの暗号化/復号に使用するパスフレーズです。

注記:

stanzaオプションなしで実行した場合、infoコマンドはglobalセクションからのみ暗号化設定を読み取ります。暗号化設定をstanzaごとに設定している場合は、暗号化されたstanzaを読み取るために、stanzaオプションを指定してinfoコマンドを実行してください。

example: repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO

リポジトリ暗号方式オプション(--repo-cipher-type)

リポジトリの暗号化に使用する暗号方式です。

次の暗号方式をサポートします。

  • none - リポジトリを暗号化しません
  • aes-256-cbc - 鍵長256ビットのAdvanced Encryption Standard

リポジトリの種類(例:S3)が暗号化をサポートしていても、暗号化は常にクライアント側で実行されます。

default: none
example: repo1-cipher-type=aes-256-cbc

GCSリポジトリバケットオプション(--repo-gcs-bucket)

GCSリポジトリのバケットです。

リポジトリの保存に使用するGCSバケットです。

repo-path=/を設定するとpgBackRestリポジトリをバケットのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのGCSが生成するコンテンツもバケットに保存できるようにすることを推奨します。

example: repo1-gcs-bucket=/pg-backup

GCSリポジトリエンドポイントオプション(--repo-gcs-endpoint)

GCSリポジトリのエンドポイントです。

ストレージサービスへの接続に使用するエンドポイントです。ローカルのGCSサーバーや別のエンドポイントを使用するように変更できます。

default: storage.googleapis.com
example: repo1-gcs-endpoint=localhost

GCSリポジトリキーオプション(--repo-gcs-key)

GCSリポジトリのキーです。

repo-gcs-key-typeオプションに応じたトークンまたはサービスキーファイルです。

example: repo1-gcs-key=/etc/pgbackrest/gcs-key.json

GCSリポジトリキー種別オプション(--repo-gcs-key-type)

GCSリポジトリのキー種別です。

認可には次の種別をサポートします。

  • auto - インスタンスのサービスアカウントを使用して認可します。
  • service - ローカルに保存したキーでサービスアカウントを使用します。
  • token - fakegcsなどを使用するローカルテスト用です。

repo-gcs-key-type=serviceの場合、認証トークンの更新時に認証情報を再読み込みします。

default: service
example: repo1-gcs-key-type=auto

GCSリポジトリプロジェクトIDオプション(--repo-gcs-user-project)

GCSのプロジェクトIDです。

リクエストの課金先を決定するために使用するGCSプロジェクトIDです。

example: repo1-gcs-user-project=my-project

リポジトリ内のバックアップ間でファイルをハードリンクします。

差分バックアップと増分バックアップのファイルを、それらのフルバックアップにハードリンクすることを有効にします。これにより、ファイルシステム上では各バックアップがフルバックアップであるように見えます。ただし、ハードリンクされたファイルを変更すると、セット内のすべてのバックアップに影響する可能性があるため、注意してください。

default: n
example: repo1-hardlink=y

非推奨の名前:hardlink

リポジトリホストオプション(--repo-host)

リモート操作時のリポジトリホストです。

ローカルにマウントされたファイルシステムにバックアップおよびアーカイブする場合、この設定は不要です。

example: repo1-host=repo1.domain.com

非推奨の名前:backup-host

リポジトリホスト認証局ファイルオプション(--repo-host-ca-file)

リポジトリホストの認証局ファイルです。

リポジトリホストへの接続に、システムのデフォルト以外のCAファイルを使用します。

example: repo1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt

リポジトリホスト認証局パスオプション(--repo-host-ca-path)

リポジトリホストの認証局パスです。

リポジトリホストへの接続に、システムのデフォルト以外のCAパスを使用します。

example: repo1-host-ca-path=/etc/pki/tls/certs

リポジトリホスト証明書ファイルオプション(--repo-host-cert-file)

リポジトリホストの証明書ファイルです。

クライアントの身元を証明するためにリポジトリホストに送信します。

example: repo1-host-cert-file=/path/to/client.crt

リポジトリホストコマンドオプション(--repo-host-cmd)

リポジトリホストのpgBackRestコマンドです。

pgBackRestコマンドのパスがローカルホストとリポジトリホストで異なる場合にのみ必要です。未定義の場合、リポジトリホストのコマンドにはローカルと同じコマンドを設定します。

default: [path of executed pgbackrest binary]
example: repo1-host-cmd=/usr/lib/backrest/bin/pgbackrest

非推奨の名前:backup-cmd

リポジトリホスト設定オプション(--repo-host-config)

pgBackRestリポジトリホストの設定ファイルです。

リポジトリホスト上の設定ファイルの場所を設定します。リポジトリホストの設定ファイルがローカルの設定ファイルと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: repo1-host-config=/conf/pgbackrest/pgbackrest.conf

非推奨の名前:backup-config

リポジトリホスト追加設定パスオプション(--repo-host-config-include-path)

pgBackRestリポジトリホストの追加設定パスです。

リポジトリホスト上の追加設定パスの場所を設定します。リポジトリホストの追加設定パスがローカルの追加設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: repo1-host-config-include-path=/conf/pgbackrest/conf.d

リポジトリホスト設定パスオプション(--repo-host-config-path)

pgBackRestリポジトリホストの設定パスです。

リポジトリホスト上の設定パスの場所を設定します。リポジトリホストの設定パスがローカルの設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH
example: repo1-host-config-path=/conf/pgbackrest

リポジトリホストキーファイルオプション(--repo-host-key-file)

リポジトリホストのキーファイルです。

クライアント証明書が所有者によって送信されたことを証明します。

example: repo1-host-key-file=/path/to/client.key

リポジトリホストポートオプション(--repo-host-port)

repo-hostが設定されている場合のリポジトリホストのポートです。

リポジトリホストのプロトコルにデフォルト以外のポートを指定するには、このオプションを使用します。

注記:

repo-host-type=sshの場合、repo-host-portにデフォルト値はありません。この場合、ポートはcmd-sshで指定したコマンドの設定に従います。

default (depending on repo-host-type):
    tls - 8432

allowed: [0, 65535]
example: repo1-host-port=25

非推奨の名前:backup-ssh-port

リポジトリホストプロトコル種別オプション(--repo-host-type)

リポジトリホストのプロトコル種別です。

次のプロトコル種別をサポートします。

  • ssh - Secure Shell。
  • tls - pgBackRest TLSサーバー。
default: ssh
example: repo1-host-type=tls

リポジトリホストユーザーオプション(--repo-host-user)

repo-hostが設定されている場合のリポジトリホストのユーザーです。

リポジトリホスト上の操作に使用するユーザーを定義します。postgresユーザーではなく、pgbackrestなどの別のユーザーを使用することを推奨します。リポジトリホストでPostgreSQLを実行する場合は、postgresユーザーをpgbackrestグループに追加することで、リポジトリの内容を誤って破損させずに読み取り権限を与えられます。

default: pgbackrest
example: repo1-host-user=repo-user

非推奨の名前:backup-user

リポジトリパスオプション(--repo-path)

バックアップとアーカイブを保存するパスです。

リポジトリは、pgBackRestがバックアップを保存し、WALセグメントをアーカイブする場所です。

必要な容量を事前に見積もるのは難しい場合があります。まずいくつかバックアップを取得し、各種類(full/incr/diff)のバックアップサイズを記録して、1日当たりに生成されるWALの量を測定するのが最善です。これにより、必要な容量のおおよその見当が付きます。ただし、データベースの変化に伴い、必要量も時間とともに変わる可能性があります。

default: /var/lib/pgbackrest
example: repo1-path=/backup/db/backrest

アーカイブ保持オプション(--repo-retention-archive)

連続したWALを何回分のバックアップに相当する期間保持するかを指定します。

注記:

バックアップの一貫性を確保するために必要なWALセグメントは、このオプションの設定にかかわらず、そのバックアップが期限切れになるまで常に保持されます。

この値が未設定で、repo-retention-full-typeがcount(デフォルト)の場合、期限切れ処理の対象アーカイブを決める値は、repo-retention-archive-typeがfull(またはdiff)なら、それに対応するrepo-retention-full(またはrepo-retention-diff)の値がデフォルトになります。これにより、すでに期限切れになったバックアップのWALだけが期限切れになります。repo-retention-full-typeがtimeの場合は、repo-retention-fullの設定を満たして保持された最も古いフルバックアップより前のアーカイブを削除することがデフォルトになります。

repo-retention-archive-typeをincrに設定した場合は、このオプションを設定する必要があります。ディスク容量に余裕がない場合は、この設定をrepo-retention-archive-typeと組み合わせ、WALセグメントを積極的に期限切れにできます。ただし、WALが期限切れになったバックアップからPITRを実行できなくなるため、推奨しません。

allowed: [1, 9999999]
example: repo1-retention-archive=2

非推奨の名前:retention-archive

アーカイブ保持種別オプション(--repo-retention-archive-type)

WALの保持に使用するバックアップの種類です。

fullに設定すると、pgBackRestはrepo-retention-archiveで定義した数のフルバックアップに対応するアーカイブログを保持します。diff(差分)に設定すると、repo-retention-archiveで定義した数のフルバックアップと差分バックアップに対応するアーカイブログを保持します。つまり、最後に取得したバックアップがフルバックアップであれば、repo-retentionの計算では差分バックアップとして数えます。incr(増分)に設定すると、repo-retention-archiveで定義した数のフルバックアップ、差分バックアップ、増分バックアップに対応するアーカイブログを保持します。この設定はデフォルトから変更しないことを推奨します。デフォルトでは、フルバックアップの期限切れに伴ってのみWALを期限切れにします。

default: full
example: repo1-retention-archive-type=diff

非推奨の名前:retention-archive-type

差分バックアップ保持オプション(--repo-retention-diff)

保持する差分バックアップの数です。

差分バックアップが期限切れになると、それに関連するすべての増分バックアップも期限切れになります。未定義の場合は、依存するフルバックアップが期限切れになるまで、すべての差分バックアップを保持します。

期限切れ処理では、フルバックアップも差分バックアップの数に含まれます。このため、ほとんどの場合、保持が必要な差分バックアップの数はわずかに少なくなります。

allowed: [1, 9999999]
example: repo1-retention-diff=3

非推奨の名前:retention-diff

フルバックアップ保持オプション(--repo-retention-full)

フルバックアップの保持数/保持期間です。

フルバックアップが期限切れになると、それに関連するすべての差分バックアップと増分バックアップも期限切れになります。このオプションが未定義の場合は警告を出力します。無期限の保持が必要な場合は、最大値を設定してください。

allowed: [1, 9999999]
example: repo1-retention-full=2

非推奨の名前:retention-full

フルバックアップ保持種別オプション(--repo-retention-full-type)

フルバックアップの保持種別です。

repo-retention-full設定が、保持する期間(日数)とフルバックアップの数のどちらを表すかを決定します。

timeに設定すると、repo-retention-full以上の日数が経過したバックアップが少なくともほかに1つ存在する場合に、repo-retention-fullより古いフルバックアップをリポジトリから削除します。たとえば、repo-retention-fullが30(日)で、25日前と35日前の2つのフルバックアップがある場合、どちらも期限切れにはなりません。35日前のバックアップを期限切れにすると25日前のバックアップだけが残り、古いバックアップを期限切れにする前に少なくとも30日前のバックアップを1つ確保するという30日間の保持ポリシーに違反するためです。repo-retention-archive-typeとrepo-retention-archiveを明示的に設定していない限り、残っている最も古いフルバックアップより前のアーカイブ済みWALは自動的に期限切れになります。

countに設定すると、repo-retention-fullを超えるフルバックアップを期限切れにします。たとえば、repo-retention-fullが4で、5つ目のフルバックアップが完了すると、数を4に保つために最も古いフルバックアップを期限切れにします。

保持の計算に含めるには、バックアップが正常に完了している必要があります。たとえば、repo-retention-full-typeがcountで、repo-retention-fullが2の場合、最も古いバックアップを期限切れにするには、完了したフルバックアップが3つ必要です。

default: count
example: repo1-retention-full-type=time

バックアップ履歴保持オプション(--repo-retention-history)

バックアップ履歴マニフェストを保持する日数です。

バックアップが完了すると、バックアップマニフェストのコピーをbackup.historyパスに保存します。これらのファイルは、バックアップやWALの増加量を経時的に測定するなどのデータ分析に役立つため、デフォルトでは期限切れになりません。

バックアップ履歴マニフェストを保持する日数を定義するには、repo-retention-historyを設定します。期限切れになっていないバックアップは、常にバックアップ履歴に保持されます。期限切れになっていないバックアップの履歴だけを保持するには、repo-retention-history=0を指定します。

フルバックアップの履歴マニフェストが期限切れになると、そのフルバックアップに関連するすべての差分バックアップと増分バックアップの履歴マニフェストも期限切れになります。

allowed: [0, 9999999]
example: repo1-retention-history=365

S3リポジトリバケットオプション(--repo-s3-bucket)

S3リポジトリのバケットです。

リポジトリの保存に使用するS3バケットです。

repo-path=/を設定するとpgBackRestリポジトリをバケットのルートに保存できますが、通常は/repoなどの接頭辞を指定し、ログなどのAWSが生成するコンテンツもバケットに保存できるようにすることを推奨します。

example: repo1-s3-bucket=pg-backup

S3リポジトリエンドポイントオプション(--repo-s3-endpoint)

S3リポジトリのエンドポイントです。

選択したリージョンに対して有効なAWSエンドポイントを使用してください。

独自の構成やテスト構成では、repo-storage-ca-file、repo-storage-ca-path、repo-storage-host、repo-storage-port、repo-storage-verify-tlsの各オプションが役立つ場合があります。

example: repo1-s3-endpoint=s3.amazonaws.com

S3リポジトリアクセスキーオプション(--repo-s3-key)

S3リポジトリのアクセスキーです。

このバケットへのアクセスに使用するAWSキーです。

example: repo1-s3-key=AKIAIOSFODNN7EXAMPLE

S3リポジトリシークレットアクセスキーオプション(--repo-s3-key-secret)

S3リポジトリのシークレットアクセスキーです。

このバケットへのアクセスに使用するAWSシークレットキーです。

example: repo1-s3-key-secret=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

S3リポジトリキー種別オプション(--repo-s3-key-type)

S3リポジトリのキー種別です。

次の種別をサポートします。

  • shared - 共有キー
  • auto - 一時認証情報を自動取得
  • web-id - ウェブID認証情報を自動取得
  • pod-id - EKS Pod Identityの認証情報を自動取得
  • process - プロセスを実行して認証情報を取得
default: shared
example: repo1-s3-key-type=auto

S3リポジトリKMSキーIDオプション(--repo-s3-kms-key-id)

S3リポジトリのKMSキーです。

指定したAWS Key Management Serviceのキーを使用して、S3のサーバー側暗号化を有効にします。

example: repo1-s3-kms-key-id=bceb4f13-6939-4be3-910d-df54dee817b7

S3認証プロセスコマンドオプション(--repo-s3-process-cmd)

S3の認証プロセスコマンドです。

一時的なS3認証情報を取得するために実行するコマンド(および任意の引数)です。リストの最初の要素がコマンドで、残りの要素はパラメーターとして渡します。

プロセスは、AccessKeyId、SecretAccessKey、SessionToken、Expirationフィールドを含むJSONを出力する必要があります。認証情報は有効期限の前に自動更新されます。形式の詳細は、プロセス認証情報プロバイダー を参照してください。

example: repo1-s3-process-cmd=/usr/local/bin/get-credentials
example: repo1-s3-process-cmd=--role
example: repo1-s3-process-cmd=my-role

S3リポジトリリージョンオプション(--repo-s3-region)

S3リポジトリのリージョンです。

バケットを作成したAWSリージョンです。

example: repo1-s3-region=us-east-1

S3リポジトリのリクエスタ支払いオプション(--repo-s3-requester-pays)

S3リポジトリのリクエスタ支払いです。

S3のリクエスタ支払いを有効にします。

default: n
example: repo1-s3-requester-pays=n

S3リポジトリロールオプション(--repo-s3-role)

S3リポジトリのロールです。

repo-s3-key-type=autoの場合に、一時認証情報の取得に使用するAWSロール名(完全なARNではありません)です。

example: repo1-s3-role=authrole

S3リポジトリサービスオプション(--repo-s3-service)

S3の署名サービスです。

SigV4認証で使用するS3署名サービスです。標準のS3エンドポイントでは、デフォルトはs3です。S3 Outpostsエンドポイントを使用する場合は、s3-outpostsに設定します。

default: s3
example: repo1-s3-service=s3-outposts

S3リポジトリSSEカスタマーキーオプション(--repo-s3-sse-customer-key)

S3リポジトリのSSEカスタマーキーです。

指定したカスタマーキーを使用して、S3のサーバー側暗号化を有効にします。

example: repo1-s3-sse-customer-key=bceb4f13-6939-4be3-910d-df54dee817b7

S3リポジトリSTSエンドポイントオプション(--repo-s3-sts-host)

S3リポジトリのSTSエンドポイントです。

repo-s3-key-type=web-idを設定した場合に、一時認証情報の取得に使用するSTSエンドポイントです。リージョン別STSを使用するには、リージョン別エンドポイント(例:sts.us-east-1.amazonaws.com)を設定します。GovCloudや中国リージョンで必要になる場合や、レイテンシーを低減するために使用する場合があります。

default: sts.amazonaws.com
example: repo1-s3-sts-host=sts.us-east-1.amazonaws.com

S3リポジトリセキュリティートークンオプション(--repo-s3-token)

S3リポジトリのセキュリティートークンです。

一時認証情報とともに使用するAWSセキュリティートークンです。

example: repo1-s3-token=AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22 ...

S3リポジトリURI形式オプション(--repo-s3-uri-style)

S3のURI形式です。

次のURI形式をサポートします。

  • host - bucket.endpointホストに接続します。
  • path - endpointホストに接続し、URIの先頭にバケットを付加します。
default: host
example: repo1-s3-uri-style=path

SFTPリポジトリホストオプション(--repo-sftp-host)

SFTPリポジトリのホストです。

リポジトリが存在するSFTPホストです。

example: repo1-sftp-host=sftprepo.domain

SFTPリポジトリホストフィンガープリントオプション(--repo-sftp-host-fingerprint)

SFTPリポジトリホストのフィンガープリントです。

SFTPリポジトリホストのフィンガープリントの生成方法は、repo-sftp-host-key-hash-typeと一致させてください。awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -bでフィンガープリントを生成します。sshホストキーは通常、/etc/sshディレクトリにあります。

example: repo1-sftp-host-fingerprint=f84e172dfead7aeeeae6c1fdfb5aa8cf

SFTPホストキー確認方式オプション(--repo-sftp-host-key-check-type)

SFTPのホストキー確認方式です。

次のSFTPホストキー確認方式をサポートします。

  • strict - pgBackRestは~/.ssh/known_hostsファイルにホストキーを自動追加せず、ホストキーが変更されたホスト、または既知のホストファイルで見つからないホストへの接続を拒否します。このオプションでは、新しいホストをすべて手動で追加する必要があります。
  • accept-new - pgBackRestは新しいホストキーをユーザーの既知のホストファイルに自動追加しますが、ホストキーが変更されたホストへの接続は許可しません。
  • fingerprint - pgBackRestは、repo-sftp-host-fingerprintオプションで指定したフィンガープリントとホストキーを照合します。
  • none - ホストキーを確認しません。
default: strict
example: repo1-sftp-host-key-check-type=accept-new

SFTPリポジトリホストキーハッシュ種別オプション(--repo-sftp-host-key-hash-type)

SFTPリポジトリのホストキーハッシュ種別です。

SFTPリポジトリのホストキーハッシュ種別です。SSHの開始時に、リモートシステムのホストキーのダイジェスト計算に使用するハッシュ種別を指定します。新しいバージョンのlibssh2は、md5とsha1に加えてsha256もサポートします。

example: repo1-sftp-host-key-hash-type=sha256

SFTPリポジトリホストポートオプション(--repo-sftp-host-port)

SFTPリポジトリホストのポートです。

SFTPリポジトリホストのポートです。

default: 22
allowed: [1, 65535]
example: repo1-sftp-host-port=22

SFTPリポジトリホストユーザーオプション(--repo-sftp-host-user)

SFTPリポジトリホストのユーザーです。

リポジトリの保存に使用するホスト上のユーザーです。

example: repo1-sftp-host-user=pg-backup

SFTP既知ホストファイルオプション(--repo-sftp-known-host)

SFTPの既知のホストファイルです。

認証時に一致するSFTPホストを探す既知のホストファイルです。未指定の場合、pgBackRestはデフォルトで~/.ssh/known_hosts、~/.ssh/known_hosts2、/etc/ssh/ssh_known_hosts、/etc/ssh/ssh_known_hosts2を検索します。1つ以上のファイルパスを設定した場合は、それらを検索して一致を確認します。ファイルパスは絶対パス、または先頭がチルダのパスである必要があります。repo-sftp-known-hostオプションを複数回指定することで、検索する既知のホストファイルを複数指定できます。既知のホストファイルによる確認を使用するには、repo-sftp-host-fingerprintを指定してはいけません。repo-sftp-host-check-typeオプションも参照してください。

example: repo1-sftp-known-host=/home/postgres/.ssh/known_hosts

SFTPリポジトリ秘密鍵ファイルオプション(--repo-sftp-private-key-file)

SFTPの秘密鍵ファイルです。

認証に使用するSFTP秘密鍵ファイルです。

example: repo1-sftp-private-key-file=~/.ssh/id_ed25519

SFTPリポジトリ秘密鍵パスフレーズオプション(--repo-sftp-private-key-passphrase)

SFTP秘密鍵のパスフレーズです。

秘密鍵へのアクセスに使用するパスフレーズです。SSHの公開鍵/秘密鍵ペアを作成する際の任意の機能です。

example: repo1-sftp-private-key-passphrase=BeSureToGenerateAndUseASecurePassphrase

SFTPリポジトリ公開鍵ファイルオプション(--repo-sftp-public-key-file)

SFTPの公開鍵ファイルです。

認証に使用するSFTP公開鍵ファイルです。OpenSSLに対してコンパイルした場合は任意ですが、別のライブラリに対してコンパイルした場合は必須です。

example: repo1-sftp-public-key-file=~/.ssh/id_ed25519.pub

リポジトリストレージCAファイルオプション(--repo-storage-ca-file)

リポジトリストレージのCAファイルです。

ストレージ(例:S3、Azure)の証明書に、システムのデフォルト以外のCAファイルを使用します。

example: repo1-storage-ca-file=/etc/pki/tls/certs/ca-bundle.crt

非推奨の名前:repo-azure-ca-file, repo-s3-ca-file

リポジトリストレージTLS CAパスオプション(--repo-storage-ca-path)

リポジトリストレージのCAパスです。

ストレージ(例:S3、Azure)の証明書に、システムのデフォルト以外のCAパスを使用します。

example: repo1-storage-ca-path=/etc/pki/tls/certs

非推奨の名前:repo-azure-ca-path, repo-s3-ca-path

リポジトリストレージホストオプション(--repo-storage-host)

リポジトリストレージのホストです。

ストレージ(例:S3、Azure)のエンドポイントとは異なるホストに接続します。通常はテストに使用します。

example: repo1-storage-host=127.0.0.1

非推奨の名前:repo-azure-host, repo-s3-host

リポジトリストレージポートオプション(--repo-storage-port)

リポジトリストレージのポートです。

ストレージ(例:S3、Azure)のエンドポイント(ホストを指定した場合はそのホスト)への接続に使用するポートです。

default: 443
allowed: [1, 65535]
example: repo1-storage-port=9000

非推奨の名前:repo-azure-port, repo-s3-port

リポジトリストレージタグオプション(--repo-storage-tag)

リポジトリストレージのタグです。

リポジトリがオブジェクトストア(例:S3)の場合に、オブジェクトに付加するタグを指定します。このオプションを繰り返して、複数のタグを追加できます。

pgBackRestにはこれらのタグを変更する機能がないため、リポジトリ全体でタグを統一するには、stanza-createを実行する前に正しく設定してください。

example: repo1-storage-tag=key1=value1

リポジトリストレージアップロードチャンクサイズオプション(--repo-storage-upload-chunk-size)

リポジトリストレージのアップロードチャンクサイズです。

S3などのオブジェクトストアでは、ファイルが大きすぎてメモリに格納できない場合に、チャンクに分けてアップロードできます。ファイルをメモリに格納できる場合でも、アップロードに使用するメモリ量を制限する方がメモリ効率は高くなります。

チャンクサイズを大きくすると、アップロードリクエストを最小限に抑え、チャンク分割せずに1回のリクエストでアップロードできるファイルが増えるため、一般にパフォーマンスが向上します。一方、メモリ使用量は増加します。チャンクバッファーはプロセスごとに割り当てる必要があるため、process-maxの値が大きいほど、全体のメモリ消費量も増えます。

有効なチャンクサイズは、ストレージの種類やプラットフォームによって異なります。たとえば、AWS S3の最小チャンクサイズは5MiBです。チャンクサイズの呼び方もストレージの種類によって異なるため、最小値/最大値を調べる際は、AWS S3では「part size」、GCSでは「chunk size」、Azureでは「block size」を使用してください。

ファイルが1GiB(PostgreSQLがデフォルトで作成する最大サイズ)より大きい場合、ファイルのアップロードを完了するために、許容される最大値までチャンクサイズを段階的に増やします。

default (depending on repo-type):
    azure - 4MiB
    gcs - 4MiB
    s3 - 5MiB

allow range (depending on repo-type):
    azure - [4MiB, 1GiB]
    gcs - [4MiB, 1GiB]
    s3 - [5MiB, 1GiB]

example: repo1-storage-upload-chunk-size=16MiB

リポジトリストレージ証明書検証オプション(--repo-storage-verify-tls)

リポジトリストレージの証明書を検証します。

このオプションでは、ストレージ(例:S3、Azure)サーバーのTLS証明書の検証を有効/無効にできます。無効化は、テストや自己署名証明書を使用する場合に限ってください。

default: y
example: repo1-storage-verify-tls=n

非推奨の名前:repo-azure-verify-tls, repo-s3-verify-ssl, repo-s3-verify-tls

リポジトリ内にシンボリックリンクを作成します。

latestとテーブルスペースのシンボリックリンクの作成を有効にします。これらのシンボリックリンクは、スナップショットを使ってリポジトリ内でその場でリカバリーする場合に最も役立ちますが、そのような利用は一般的ではありません。

大多数のユーザーには役立たないと考えられる機能ですが、従来の動作を維持するため、デフォルトで有効になっています。ただし、シンボリックリンクをサポートしないPosixに似たストレージでは、無効にすると役立つ場合があります。

default: y
example: repo1-symlink=n

リポジトリ対象時刻オプション(--repo-target-time)

リポジトリの対象時刻です。

対象時刻は、コマンドがバージョン管理されたストレージ上のリポジトリを読み取る際の時点を定義します。これにより、ある時点の状態のリポジトリを読み取り、ユーザーの誤操作やマルウェアによって削除または破損したデータをリカバリーできます。

S3、GCS、Azureはストレージのバージョン管理をサポートしますが、通常はデフォルトで有効になっていません。バージョン管理の有効化に加え、S3ではオブジェクトロック、GCSやAzureでは論理削除を有効にすると役立つ場合があります。

repo-target-timeオプションを指定する場合は、repoオプションも指定する必要があります。すべてのリポジトリ種類がバージョン管理をサポートするとは限らず、一般にリカバリーでは単一のリポジトリを対象とするのが妥当です。

ストレージのタイムスタンプとの比較は、指定したタイムスタンプ以下(<=)で行い、タイムスタンプにミリ秒を指定しても切り捨てられます。

example: repo-target-time=2024-08-08 12:12:12+00

リポジトリ種別オプション(--repo-type)

リポジトリに使用するストレージの種類です。

次のリポジトリ種類をサポートします。

  • azure - Azure Blob Storage Service
  • cifs - posixと同様ですが、リンクとディレクトリのfsyncを無効にします
  • gcs - Google Cloud Storage
  • posix - Posix準拠のファイルシステム
  • s3 - AWS Simple Storage Service
  • sftp - Secure File Transfer Protocol

NFSマウントをposixリポジトリとして使用する場合、PostgreSQLのドキュメントに記載されたものと同じ規則がpgBackRestにも適用されます。データベースクラスターの作成 - ファイルシステム を参照してください。

default: posix
example: repo1-type=cifs

リストアオプション

restoreセクションでは、バックアップのリストアに使用する設定を定義します。

アーカイブモードオプション(--archive-mode)

リストアしたクラスターでアーカイブを維持または無効にします。

このオプションでは、リストアしたクラスターのアーカイブを維持または無効にできます。作業のためにクラスターを昇格させる必要があるものの、新しいプライマリーにする意図がない場合に役立ちます。この場合、そのクラスターからWALをリポジトリに送信するのは適切ではありません。

次のモードをサポートします。

  • off - archive_mode=offを設定してアーカイブを無効にします。
  • preserve - 現在のarchive_mode設定を維持します。

注記:このオプションはPostgreSQL < 12では利用できません。

default: preserve
example: archive-mode=off

データベース除外オプション(--db-exclude)

指定したデータベースを除外してリストアします。

除外したデータベースは、容量を節約しつつPostgreSQLがリカバリーを実行できるように、ゼロで埋めたスパースファイルとしてリストアします。リカバリー後、これらのデータベースにはアクセスできませんが、drop databaseコマンドで削除できます。--db-excludeオプションを複数回指定して、除外するデータベースを複数指定できます。

--db-includeオプションと組み合わせた場合、--db-excludeは標準のシステムデータベース(template0、template1、postgres)にのみ適用されます。

example: db-exclude=db_main

対象データベースオプション(--db-include)

指定したデータベースのみをリストアします。

この機能では、選択したデータベースのみをリストアできます。明示的に含めなかったデータベースは、容量を節約しつつPostgreSQLがリカバリーを実行できるように、ゼロで埋めたスパースファイルとしてリストアします。リカバリー後、含めなかったデータベースにはアクセスできませんが、drop databaseコマンドで削除できます。

注記:

組み込みデータベース(template0、template1、postgres)は、明示的に除外しない限り常にリストアします。

--db-includeオプションを複数回指定して、含めるデータベースを複数指定できます。

詳細と注意事項は、選択したデータベースのリストア を参照してください。

example: db-include=db_main

すべてのシンボリックリンクをリストアします。

デフォルトでは、シンボリックリンクされたディレクトリとファイルは、$PGDATA内の通常のディレクトリとファイルとしてリストアします。元のバックアップを取得したシステムとは異なるシステムで、元のリンク先にシンボリックリンクをリストアするのは安全でない可能性があるためです。このオプションは、バックアップを取得した元のシステムと同じ状態ですべてのシンボリックリンクをリストアします。

default: n
example: link-all=y

シンボリックリンクのリンク先を変更します。

リストア時に、シンボリックリンクのリンク先ファイルまたはパスを変更できます。バックアップを生成した元のシステムとはストレージ構成が異なるシステムへのリストアに役立ちます。

example: link-map=pg_xlog=/data/xlog

リカバリー設定オプション(--recovery-option)

postgresql.auto.confまたはrecovery.confのオプションを設定します。

postgresql.auto.confまたはrecovery.confのオプションの詳細は、サーバーの設定 を参照してください(使用しているPostgreSQLバージョンを必ず選択してください)。このオプションは複数回使用できます。

PostgreSQL >= 12では、オプションをpostgresql.auto.confに書き込みます。それ以外のすべてのバージョンでは、recovery.confに書き込みます。

注記:

restore_commandオプションは自動生成されますが、このオプションで上書きできます。pgBackRestが処理するように設計されているため、独自のrestore_commandを指定する場合は注意してください。リカバリー対象のオプション(recovery_target_name、recovery_target_timeなど)はpgBackRestが自動生成するため、このオプションで設定しないでください。

pgBackRestはpostgresql.auto.confまたはrecovery.confファイルを書き込んだ後にPostgreSQLを起動しないため、手動で再起動する前に、いつでもpostgresql.auto.confまたはrecovery.confを編集/確認できます。

example: recovery-option=primary_conninfo=db.mydomain.com

テーブルスペースマッピングオプション(--tablespace-map)

テーブルスペースを指定したディレクトリにリストアします。

リストア時にテーブルスペースを新しい場所に移動します。レプリカ上でテーブルスペースの場所が異なる場合や、アップグレード後のシステムのマウントポイントが異なる場合に役立ちます。

テーブルスペースの場所はpg_tablespaceに保存されていないため、テーブルスペースを移動しても問題ありません。ただし、テーブルスペースをdata_directoryに移動することは推奨せず、問題が生じる可能性があります。テーブルスペースの移動については、http://www.databasesoup.com/2013/11/moving-tablespaces.html が参考になります。

example: tablespace-map=ts_01=/db/ts_01

全テーブルスペースマッピングオプション(--tablespace-map-all)

すべてのテーブルスペースを指定したディレクトリにリストアします。

デフォルトでは、テーブルスペースを元の場所にリストアします。この動作はtablespace-mapオプションでテーブルスペースごとに変更できますが、すべてのテーブルスペースを一度に新しいディレクトリに再マッピングする方が望ましい場合もあります。バックアップを生成した元のシステムとストレージ構成が異なる可能性がある、開発環境やステージング環境で特に役立ちます。

指定したパスは、バックアップ内のすべてのテーブルスペースを作成する際の親パスになります。

注意:

バックアップの開始後に作成されたテーブルスペースはマッピングされません。テーブルスペースのマッピングが必要な場合は、テーブルスペースの作成後に新しいバックアップを取得してください。

example: tablespace-map-all=/data/tablespace

サーバーオプション

serverセクションでは、TLSサーバーの設定に使用するオプションを定義します。

TLSサーバーアドレスオプション(--tls-server-address)

TLSサーバーのアドレスです。

サーバーがクライアントのリクエストを待ち受けるIPアドレスです。

default: localhost
example: tls-server-address=*

TLSサーバー認可クライアントオプション(--tls-server-auth)

TLSサーバーで認可するクライアントです。

サーバーはクライアントの証明書を検証し、証明書のCN(Common Name)をtls-server-authオプションでサーバーに設定した一覧と照合することで、クライアントを認可します。

tls-server-authオプションにカンマ区切りの一覧を指定すると、クライアントのCNを必要な数のstanzaに対して認可できます。tls-server-auth=client-cn=*を指定すると、すべてのstanzaに対して認可できます。クライアントのCNにワイルドカードは指定できません。

example: tls-server-auth=client-cn=stanza1,stanza2

TLSサーバー認証局オプション(--tls-server-ca-file)

TLSサーバーの認証局です。

クライアント証明書が信頼できる認証局によって署名されていることを確認します。

example: tls-server-ca-file=/path/to/server.ca

TLSサーバー証明書オプション(--tls-server-cert-file)

TLSサーバーの証明書ファイルです。

サーバーの身元を示すためにクライアントに送信します。

example: tls-server-cert-file=/path/to/server.crt

TLSサーバーキーオプション(--tls-server-key-file)

TLSサーバーのキーファイルです。

サーバー証明書が所有者によって送信されたことを証明します。

example: tls-server-key-file=/path/to/server.key

TLSサーバーポートオプション(--tls-server-port)

TLSサーバーのポートです。

サーバーがクライアントのリクエストを待ち受けるポートです。

default: 8432
allowed: [1, 65535]
example: tls-server-port=8000

stanzaオプション

stanzaは、特定のPostgreSQLデータベースクラスターのバックアップ設定を定義します。stanzaセクションには、データベースクラスターのパスを定義する必要があり、リモートのデータベースクラスターの場合はホスト/ユーザーも必要です。また、グローバル設定のどのセクションも上書きして、stanza固有の設定を定義できます。

インデックス:複数のPostgreSQLホストを設定できるように、すべてのpg-オプションにはインデックスが付きます。たとえば、単一のプライマリーはpg1-path、pg1-portなどのオプションで設定します。スタンバイを設定する場合は、リポジトリホスト上のpg-オプションにpg2-というインデックスを付けます(例:pg2-host、pg2-pathなど)。

PostgreSQLデータベースオプション(--pg-database)

PostgreSQLのデータベースです。

PostgreSQLへの接続に使用するデータベース名です。通常はデフォルトが最適ですが、このデータベースが存在しない環境もあります。

従来の動作を維持するため、環境変数PGDATABASEの設定は無視されます。

default: postgres
example: pg1-database=backupdb

PostgreSQLホストオプション(--pg-host)

リモート操作時のPostgreSQLホストです。

PostgreSQLホストとリポジトリホストが異なる場合のバックアップに使用します。

example: pg1-host=db.domain.com

非推奨の名前:db-host

PostgreSQLホスト認証局ファイルオプション(--pg-host-ca-file)

PostgreSQLホストの認証局ファイルです。

PostgreSQLホストへの接続に、システムのデフォルト以外のCAファイルを使用します。

example: pg1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt

PostgreSQLホスト認証局パスオプション(--pg-host-ca-path)

PostgreSQLホストの認証局パスです。

PostgreSQLホストへの接続に、システムのデフォルト以外のCAパスを使用します。

example: pg1-host-ca-path=/etc/pki/tls/certs

PostgreSQLホスト証明書ファイルオプション(--pg-host-cert-file)

PostgreSQLホストの証明書ファイルです。

クライアントの身元を証明するためにPostgreSQLホストに送信します。

example: pg1-host-cert-file=/path/to/client.crt

PostgreSQLホストコマンドオプション(--pg-host-cmd)

PostgreSQLホストのpgBackRestコマンドです。

pgBackRestコマンドのパスがローカルホストとPostgreSQLホストで異なる場合にのみ必要です。未定義の場合、PostgreSQLホストのコマンドにはローカルと同じコマンドを設定します。

default: [path of executed pgbackrest binary]
example: pg1-host-cmd=/usr/lib/backrest/bin/pgbackrest

非推奨の名前:db-cmd

PostgreSQLホスト設定オプション(--pg-host-config)

pgBackRestデータベースホストの設定ファイルです。

PostgreSQLホスト上の設定ファイルの場所を設定します。PostgreSQLホストの設定ファイルがローカルの設定ファイルと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: pg1-host-config=/conf/pgbackrest/pgbackrest.conf

非推奨の名前:db-config

PostgreSQLホスト追加設定パスオプション(--pg-host-config-include-path)

pgBackRestデータベースホストの追加設定パスです。

PostgreSQLホスト上の追加設定パスの場所を設定します。PostgreSQLホストの追加設定パスがローカルの追加設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: pg1-host-config-include-path=/conf/pgbackrest/conf.d

PostgreSQLホスト設定パスオプション(--pg-host-config-path)

pgBackRestデータベースホストの設定パスです。

PostgreSQLホスト上の設定パスの場所を設定します。PostgreSQLホストの設定パスがローカルの設定パスと異なる場所にある場合にのみ必要です。

default: CFGOPTDEF_CONFIG_PATH
example: pg1-host-config-path=/conf/pgbackrest

PostgreSQLホストキーファイルオプション(--pg-host-key-file)

PostgreSQLホストのキーファイルです。

クライアント証明書が所有者によって送信されたことを証明します。

example: pg1-host-key-file=/path/to/client.key

PostgreSQLホストポートオプション(--pg-host-port)

pg-hostが設定されている場合のPostgreSQLホストのポートです。

PostgreSQLホストのプロトコルにデフォルト以外のポートを指定するには、このオプションを使用します。

注記:

pg-host-type=sshの場合、pg-host-portにデフォルト値はありません。この場合、ポートはcmd-sshで指定したコマンドの設定に従います。

default (depending on pg-host-type):
    tls - 8432

allowed: [0, 65535]
example: pg1-host-port=25

非推奨の名前:db-ssh-port

PostgreSQLホストプロトコル種別オプション(--pg-host-type)

PostgreSQLホストのプロトコル種別です。

次のプロトコル種別をサポートします。

  • ssh - Secure Shell。
  • tls - pgBackRest TLSサーバー。
default: ssh
example: pg1-host-type=tls

PostgreSQLホストユーザーオプション(--pg-host-user)

pg-hostが設定されている場合のPostgreSQLホストへのログインユーザーです。

このユーザーはリモートのpgBackRestプロセスも所有し、PostgreSQLへの接続を開始します。正しく動作させるには、PostgreSQLデータベースクラスターの所有者を使用してください。通常はデフォルトのpostgresです。

default: postgres
example: pg1-host-user=db_owner

非推奨の名前:db-user

PostgreSQLパスオプション(--pg-path)

PostgreSQLのデータディレクトリです。

PostgreSQLが報告するdata_directoryと同じ値を設定してください。この値はさまざまな場所から読み取れますが、リストアやオフラインバックアップ時にそれらを利用できない場合に備えて、設定しておくことが賢明です。

pg-pathオプションは、オンラインバックアップのたびにPostgreSQLが報告する値と照合されるため、常に最新の値であるはずです。

example: pg1-path=/data/db

非推奨の名前:db-path

PostgreSQLポートオプション(--pg-port)

PostgreSQLのポートです。

PostgreSQLが使用しているポートです。ほとんどのPostgreSQLクラスターはデフォルトのポートを使用するため、通常は指定する必要がありません。

default: 5432
allowed: [0, 65535]
example: pg1-port=6543

非推奨の名前:db-port

PostgreSQLソケットパスオプション(--pg-socket-path)

PostgreSQLのunixソケットパスです。

PostgreSQLの起動時に指定したunixソケットディレクトリです。pgBackRestはOSの標準の場所を自動検索するため、postgresql.confのunix_socket_directories設定でソケットディレクトリを明示的に変更した場合を除き、通常はこの設定を指定する必要がありません。

example: pg1-socket-path=/var/run/postgresql

非推奨の名前:db-socket-path

PostgreSQLデータベースユーザーオプション(--pg-user)

PostgreSQLのデータベースユーザーです。

PostgreSQLへの接続に使用するデータベースユーザー名です。未指定の場合、pgBackRestはローカルのOSユーザーまたはPGUSERで接続します。

example: pg1-user=backupuser

6 - リリースノート

各バージョンの詳細な変更履歴を含むpgBackRestのリリース履歴。

はじめに

pgBackRestのリリース番号は、メジャーとマイナーの2つの部分で構成されます。メジャーリリースでは、以前のメジャーリリースとの互換性が失われる可能性があります。ただし、v2リリースはv1リポジトリと完全に互換性があり、すべてのv1オプションを受け付けます。マイナーリリースには不具合修正や新機能が含まれることがありますが、リポジトリ形式は変更せず、オプションや名称の変更も極力避けます。v1リリースのドキュメントはこちら を参照してください。リリースノートには「補足事項」が含まれる場合もありますが、このセクションの変更はドキュメントまたはテストスイートのみを対象とし、pgBackRestのコードには直接影響しません。


本ドキュメントの対象となる安定版

このミラーはv2.59.3を対象としています。より新しいバージョンについては、アップストリームのリリース履歴 を参照してください。

v2.59.3リリースノート

脆弱な暗号化サブキーのバグ

2026年10月4日リリース

重要な注意事項: 以前のバージョンでは、システムのランダムデータへのアクセス時にエラーが発生すると、脆弱な暗号化サブキーやソルトが生成される可能性がありました。詳細は脆弱な暗号化サブキーとソルト を参照してください。

バグ修正:

  • 暗号化された情報ファイルとマニフェストの読み込み時にチェックサムエラーが発生する可能性がある問題を修正。 (修正: j0uinim。レビュー: David Steele。)
  • 脆弱な暗号化サブキーやソルトが生成される可能性がある問題を修正。 (修正: j0uinim。レビュー: David Steele, Stefan Fercot, Douglas J Hunley。)

安定版リリース

v2.59.2リリースノート

PostgreSQL 19beta4のサポート

2026年9月27日リリース

バグ修正:

  • バックアップ中にファイルがゼロサイズに切り詰められた場合の、空のブロックマップの問題を修正しました。 (レビュー:Douglas J Hunley。報告:JPCOSTA78。)
  • ドライバーにフィルターが渡された場合、読み取りの再試行を無効にしました。 (レビュー:Douglas J Hunley。報告:megamaced。)
  • S3バージョン一覧のページ分割を修正しました。 (レビュー:Douglas J Hunley, guruguruguru。報告:guruguruguru。)
  • SAS認証用のAzureバージョンヘッダーを設定するようにしました。 (レビュー:Douglas J Hunley。報告:Florian Helmberger。)
  • サイズがゼロのバックアップ履歴ファイルで、非同期archive-pushが停止する問題を修正しました。 (修正:Andrew Kroh。レビュー:David Steele, Douglas J Hunley。)
  • リモートの暗号化リポジトリに対するannotateコマンドを修正しました。 (修正:Douglas J Hunley。レビュー:David Steele。)

新機能:

  • PostgreSQL 19beta4をサポートしました。

v2.59.1リリースノート

PostgreSQL 19beta3のサポート

2026年8月17日リリース

バグ修正:

  • チャンクバッファーが入力バッファーより小さい場合、ハングする問題を修正しました。 (レビュー:Andrew Pogrebnoi, Douglas J Hunley。報告:crajac66。)
  • 新しいバックアップラベルの比較対象を、そのラベルが属するフルバックアップセットのみに限定しました。 (レビュー:Douglas J Hunley。報告:Anton Glushakov。)
  • GitHubが生成するソースアーカイブに、ビルドに必要なファイルが含まれない問題を修正しました。 (報告:aardvarkzed。)

新機能:

  • PostgreSQL 19beta3をサポートしました。 (貢献:Lardière Sébastien。レビュー:David Steele。)

ドキュメントの改善:

  • repo-s3-uri-style=pathの場合の、S3バケット名に含まれるドットの例外を説明しました。
  • ユーザーガイドからhot_standbyの明示的な設定を削除しました。

v2.59.0リリースノート

PostgreSQL 19beta2のサポート

2026年7月20日リリース

パッケージ作成者への注意事項:生成済みのHTMLドキュメント、manページ、コードを提供し、ビルド手順を簡単にする新しい配布用tarアーカイブを用意しました。各リリースにpgbackrest-{version}.tar.gzという名前のアセットとして添付されます。詳細はtarアーカイブ内のREADME.mdを参照してください。今後のリリースでコード生成に必要となる追加のビルドツールを導入せずに済むよう、新しい配布用tarアーカイブを使用してください。詳しくは新しい配布用tarアーカイブ を参照してください。パッケージ作成者への注意事項:新たにlibsystemdへの任意の依存関係が追加されました。重要な注意事項:このリリースから、デフォルトでrootとして実行できるのはrestoreコマンドのみです。他のコマンドをrootとして実行するにはallow-rootを使用してください(ただし推奨されません)。

バグ修正:

  • expireが別のホストで実行中のバックアップを削除する問題を修正しました。 (レビュー:Douglas J Hunley。報告:Dmitrii。)
  • WALファイルでエラーが発生した場合、archive-push-queue-maxが適用されない問題を修正しました。 (レビュー:Stefan Fercot。報告:vut12。)
  • タイムラインの切り替えをまたぐリカバリー中に、非同期archive-getが失敗する問題を修正しました。 (レビュー:Douglas J Hunley。報告:Jimmy Yih。)
  • エラーモジュールでバッファーオーバーランが起こり得る問題を修正しました。 (修正:Christophe Pettus。レビュー:David Steele。)
  • 並列プロトコルクライアントでの解放済みメモリーの使用を修正しました。 (レビュー:Douglas J Hunley。報告:Georgy Shelkovy。)
  • pg1を設定せずにpgオプションを設定すると、ヒープオーバーフローが発生する問題を修正しました。 (レビュー:Douglas J Hunley。報告:Naveen。)

新機能:

  • PostgreSQL 19beta2をサポートしました。 (レビュー:Stefan Fercot。)
  • WALアーカイブを整理するarchive-expire-beforeオプションを追加しました。 (貢献:Stefan Fercot。レビュー:David Steele。)
  • Azureストレージの一括削除を追加しました。 (レビュー:Douglas J Hunley, Crispy。)
  • S3 Outpostsのサポートを追加しました。 (貢献:Shiva Kumar Ambigi。レビュー:David Steele, Roberto Mello。)
  • S3のプロセス認証を追加しました。 (レビュー:Andrew Charlton。提案:Andrew Charlton。)

改善:

  • サーバーがアイドル接続を切断した後、SFTPストレージに再接続するようにしました。 (レビュー:Stefan Fercot。提案:mustafa0x, tisserat。)
  • マニフェストの作成を高速化するユーザー/グループキャッシュを追加しました。 (貢献:Gunnar Lindholm。レビュー:David Steele。)
  • infoコマンドの出力に、リポジトリごとのバックアップ進捗を追加しました。 (貢献:Will Morland。レビュー:David Steele, Stefan Fercot。)
  • verifyコマンドにbackup.infoのチェックを追加しました。 (貢献:Denis Garsh。レビュー:David Steele, Douglas J Hunley。)
  • S3 STSエンドポイントを設定できるようにしました。 (貢献:Simon Gratton。レビュー:David Steele。)
  • 非同期処理1回あたりに送信するWALを制限するarchive-push-batch-sizeを追加しました。 (レビュー:Stefan Fercot。)
  • 最初のエラーで非同期archive-pushを終了するようにしました。 (レビュー:Stefan Fercot。提案:Lardière Sébastien。)
  • HTTPチャンクレスポンスの解析を堅牢にしました。 (貢献:Shubham。レビュー:David Steele。)
  • allow-rootが有効でない限り、rootとして実行するとエラーになるようにしました。 (レビュー:Douglas J Hunley。)
  • マニフェスト作成時の二分探索の回数を減らしました。 (貢献:Gunnar Lindholm。レビュー:David Steele。)
  • ブロック増分バックアップの差分リストアにおけるシーク性能を改善しました。 (レビュー:David Christensen, Douglas J Hunley。)
  • より収まりのよいファイルを探すのではなく、順番にバックアップファイルをバンドルするようにしました。 (レビュー:Stefan Fercot。)
  • クエリーが完了しない場合、原因となったエラーを報告するようにしました。 (レビュー:Andrew Pogrebnoi。提案:Marco Fontana。)
  • S3認証情報の取得リクエストが失敗した場合、実際のエラーを報告するようにしました。 (レビュー:Douglas J Hunley。提案:Mitchell Grice。)
  • archive-pushのスプールパスのエラーを、PostgreSQLのログに報告するようにしました。 (レビュー:Douglas J Hunley。提案:Don Seiler。)
  • バージョンが未サポートの場合、pgBackRestが古い可能性を示すヒントを追加しました。
  • systemd notifyとの連携を追加しました。 (貢献:Andrew Jackson。レビュー:David Steele。)
  • mesonによるコンパイラーの機能検査で、unused parameterエラーを抑制しました。 (貢献:Jörg Plate。レビュー:David Steele。)
  • Cの最低要件をC11にしました。 (レビュー:Mohammad Ali Nazir Kosar。)

ドキュメントの改善:

  • repo-*コマンドのstanzaオプションを内部用としました。 (レビュー:Stefan Fercot。)
  • infoがglobalセクションから暗号化設定を読み込むことを説明しました。 (レビュー:Stefan Fercot。提案:Ron Johnson。)
  • expire-autoがbackupコマンドの設定を使うことを説明しました。 (レビュー:Stefan Fercot。提案:Lardière Sébastien。)
  • 専用ユーザーを使う場合の、logrotateのsuディレクティブの調整を説明しました。 (レビュー:Douglas J Hunley。提案:lkanbus。)
  • 設定ファイルでは行末コメントをサポートしないことを説明しました。 (レビュー:Douglas J Hunley。提案:Alex Richman。)

テストスイートの改善:

  • CIコンテナ内のAlpineのグループ競合を修正しました。 (貢献:Artur Zakirov。レビュー:David Steele。)

v2.58.0リリースノート

オブジェクトストレージの改善

2026年1月19日リリース

重要な注意事項:repo-storage-upload-chunk-sizeオプションの最小値を引き上げました。新しい最小値は、各ベンダーが許可する最小値に対応しています。

バグ修正:

  • シグナルハンドラー内のログ出力によるデッドロックを修正しました。 (修正:Maxim Michkov。レビュー:David Steele。)

新機能:

  • S3、GCS、AzureでHTTPをサポートしました。 (貢献:Will Morland。レビュー:David Steele。)
  • 現在の保持設定にかかわらず、最も古いフルバックアップを期限切れにできるようにしました。 (貢献:Stefan Fercot。レビュー:David Steele。提案:Ron Johnson。)
  • AzureのマネージドIDをサポートしました。 (貢献:Moiz Ibrar, Matthew Mols。レビュー:David Steele。)
  • S3 EKS Pod Identityを試験的にサポートしました。 (貢献:Pierre BOUTELOUP。レビュー:David Steele。)
  • TLS暗号スイートを設定できるようにしました。 (貢献:Gunnar “Nick” Bluth。レビュー:David Steele。)
  • プロセスの優先度を設定できるようにしました。 (レビュー:Douglas J Hunley。)

改善:

  • パス形式のURIを使う場合、S3バケット名にドットを使用できるようにしました。 (貢献:Joakim Hindersson。レビュー:David Steele。)
  • 検証が無効な場合を除き、TLS >= 1.2を必須にしました。 (レビュー:Douglas J Hunley, Gunnar “Nick” Bluth。)
  • 大容量のアップロードでは、S3/GCS/Azureのチャンクサイズを動的に設定するようにしました。 (レビュー:Douglas J Hunley。提案:Timothée Peignier。)
  • 小さなファイルに対して、S3/GCS/Azureのチャンクサイズを最適化しました。 (レビュー:Douglas J Hunley。)
  • PostgreSQL 9.5のサポートを削除しました。 (レビュー:Douglas J Hunley。)
  • 依存関係が未解決のオプションについて、デフォルト値のログ出力を改善しました。 (レビュー:Stefan Fercot。)

ドキュメントの改善:

  • ユーザーガイドからmax_wal_senders/wal_levelの明示的な設定を削除しました。 (提案:Jamie Nguyen。)
  • ブロックサイズの大きなファイルシステムではバンドルが有用であることを明確にしました。 (提案:Ron Johnson。)

v2.57.0リリースノート

リポジトリのシンボリックリンクを抑制

2025年10月18日リリース

バグ修正:

  • HTTP/TLS/ソケットのタイムアウトの入れ子を解消しました。 (レビュー:David Christensen。)
  • ページチェックサムのエラーメッセージで、セグメンテーション違反が起こり得る問題を修正しました。 (修正:Zsolt Parragi。レビュー:David Steele。)

新機能:

  • リポジトリのシンボリックリンクの作成を抑制するrepo-symlinkオプションを追加しました。 (レビュー:Douglas J Hunley。提案:Ron Johnson。)

改善:

  • HTTPの408および429エラーに対する再試行を追加しました。 (レビュー:David Christensen。)

v2.56.0リリースノート

進捗情報の改善

2025年7月21日リリース

バグ修正:

  • リポジトリにバックアップがない場合の、個別の期限切れ処理の問題を修正しました。 (レビュー:Stefan Fercot。報告:Anup Gupta。)

新機能:

  • infoコマンドの出力にリストアの進捗を追加しました。 (貢献:Denis Garsh, Maxim Michkov。レビュー:David Steele。)
  • infoコマンドの出力に、進捗のみを表示する詳細レベルを追加しました。 (貢献:Denis Garsh。レビュー:David Steele, Stefan Fercot。)

改善:

  • オブジェクトストアで失敗した読み取りを再試行するようにしました。 (レビュー:David Christensen。)
  • コマンドラインヘルプのデフォルト値を修正しました。 (レビュー:David Christensen, Chris Bandy。)

ドキュメントの改善:

  • 適切な場合には、オプションの個々の値を一覧で説明するようにしました。 (貢献:Anton Kurochkin。レビュー:David Steele。)
  • archive-modeオプションのヘルプ出力にある"less than"の記述を修正しました。 (貢献:Anton Kurochkin。レビュー:David Steele。)

v2.55.1リリースノート

不具合修正

2025年5月5日リリース

バグ修正:

  • 「必要な場合のみS3でcontent-md5を計算する」変更を元に戻しました。 (レビュー:David Christensen。報告:Frank Brendel。)
  • オプションキーの下限チェックを修正しました。 (レビュー:David Christensen, Wolfgang Walther。報告:Wolfgang Walther。)

v2.55.0リリースノート

検証の改善とPostgreSQL 18のサポート

2025年4月21日リリース

バグ修正:

  • デフォルト以外のリポジトリでのブロック増分リストアの問題を修正しました。 (レビュー:David Christensen, Aleksander Łukasz。報告:Aleksander Łukasz。)
  • PostgreSQL < 12ではrecovery_target_timeline=currentを設定しないようにしました。 (レビュー:Stefan Fercot。)
  • アーカイブの期限切れ範囲のログ出力を修正しました。 (レビュー:Stefan Fercot。報告:Aleš Zelený。)
  • 結果がないクエリーでのエラー報告を修正しました。 (レビュー:Stefan Fercot。報告:Susantha Bathige。)

新機能:

  • リカバリー対象のタイムラインを検証するようにしました。 (レビュー:Stefan Fercot。)
  • 指定したバックアップを検証できるようにしました。 (貢献:Maxim Michkov。レビュー:David Steele。)
  • S3/GCSのリクエスター支払いをサポートしました。 (貢献:Timothée Peignier。レビュー:David Steele。)
  • PostgreSQL 18をサポートしました。 (レビュー:Stefan Fercot。)
  • 抽象ドメインソケットでPostgreSQLに接続できるようにしました。 (レビュー:Chris Bandy。提案:Chris Bandy。)
  • versionコマンドに数値形式の出力を追加しました。 (貢献:Stefan Fercot。レビュー:David Steele。)

改善:

  • backupコマンドをリモートリポジトリに対して実行できるようにしました。 (レビュー:Stefan Fercot。)
  • プロトコルの圧縮にlz4を使用するようにしました。 (レビュー:Stefan Fercot。)
  • 必要な場合のみS3でcontent-md5を計算するようにしました。 (レビュー:David Christensen。)
  • 複数キーを持つオプションの値が上書きされた場合、警告するようにしました。 (レビュー:David Christensen, Stefan Fercot。)
  • 期限切れにしたアーカイブパスをdetailログに出力するようにしました。 (貢献:Stefan Fercot。レビュー:David Steele。)
  • PostgreSQL 9.4のサポートを削除しました。 (レビュー:Stefan Fercot。)
  • autoconf/makeによるビルドを削除しました。 (レビュー:David Christensen。)

ドキュメントの改善:

  • tls-server-authで複数のstanzaを指定するための説明を修正しました。 (レビュー:David Christensen, Stefan Fercot。提案:Terry MacAndrew。)
  • 増分バックアップの期限切れ処理を明確にしました。 (レビュー:Stefan Fercot。)
  • ローカルとリモートのpgBackRestのバージョンが一致する必要があることを明確にしました。 (貢献:Greg Clough。レビュー:David Steele。)
  • 単独で動作するクラスターのエクスポートに関するFAQを追加しました。 (貢献:Stefan Fercot。レビュー:David Steele。)
  • テーブルスペース作成に関する--tablespace-map-allの注意事項を追加しました。 (レビュー:Stefan Fercot, Christophe Courtois。提案:Christophe Courtois。)
  • --repo-retention-full-typeの動作を明確にしました。 (レビュー:Antoine Beaupré。提案:Antoine Beaupré。)
  • オブジェクトストアに対する推奨設定を、--process-maxから--repo-bundleに変更しました。 (レビュー:Stefan Fercot。)
  • unix_socket_directoryをunix_socket_directoriesに更新しました。 (貢献:hyunkyu han。レビュー:David Steele。)
  • spool-pathをpg_xlog/pg_walの中に置かないことを推奨する記述を追加しました。 (レビュー:Martín Marqués, Don Seiler。提案:Martín Marqués。)

v2.54.2リリースノート

不具合修正

2025年1月20日リリース

バグ修正:

  • ブロック増分が有効な状態でバンドルを無効にした後の問題を修正しました。 (レビュー:David Christensen。)

ドキュメントの改善:

  • 複数の設定ファイルを使う場合の動作を明確にしました。 (レビュー:Paul Bierly。提案:Paul Bierly。)

v2.54.1リリースノート

不具合修正

2024年12月16日リリース

バグ修正:

  • version/helpコマンドがpgbackrest.confを読み込もうとする問題を修正しました。 (レビュー:Stefan Fercot。報告:Bradford Boyle, Julian。)

テストスイートの改善:

  • 統合テストでの非同期アーカイブを安定化しました。 (貢献:Viktor Kurilko。レビュー:David Steele。)

v2.54.0リリースノート

バージョン管理されたストレージの対象時刻

2024年10月21日リリース

パッケージ作成者への注意事項:autoconf/makeによるビルドをサポートする機能リリースは、これが最後です。まだ移行していない場合はmesonへ移行してください。2.54.Xのパッチリリースがある場合、そちらでは引き続きautoconf/makeをサポートします。

バグ修正:

  • 大規模なデータセットでのPostgreSQLクエリーの性能を修正しました。 (修正:Thibault Vincent, David Steele。レビュー:David Christensen, Antoine Millet。報告:Antoine Millet。)

新機能:

  • バージョン管理されたストレージ上のリポジトリを、指定時刻の状態で読み取れるようにしました。 (レビュー:Stefan Fercot, David Christensen。)
  • スタンバイからのバックアップが要求された場合、スタンバイがなくても続行できるようにしました。 (レビュー:Stefan Fercot。)

改善:

  • infoコマンドのテキスト出力で、バックアップの参照一覧を要約するようにしました。 (貢献:Stefan Fercot。レビュー:David Steele。)
  • S3認証のたびにweb-idトークンを更新するようにしました。 (貢献:Brent Graveland。レビュー:David Steele。)
  • ヘルプでインデックス付きオプションの現在値を正しく表示するようにしました。 (レビュー:David Christensen。)
  • 内容が変更された場合のみbackup.infoを保存するようにしました。 (レビュー:Stefan Fercot。)
  • リストア時にファイルを並列で読み取る際の制限を削除しました。 (レビュー:David Christensen。)
  • SFTPのエラーメッセージを改善しました。 (貢献:Reid Thompson。レビュー:David Steele。)

ドキュメントの機能:

  • ユーザーガイドに性能調整のセクションを追加しました。 (レビュー:Stefan Fercot。)

ドキュメントの改善:

  • data_directoryの取得元を明確にしました。 (貢献:Stefan Fercot。レビュー:David Steele。提案:Matthias。)
  • 概要を小文字にするかどうかの判定ロジックを改善しました。 (提案:Daniel Westermann。)

v2.53.1リリースノート

PostgreSQL 17のサポート

2024年8月19日リリース

バグ修正:

  • rootユーザーでrestoreを実行した場合のアクセス権限を修正しました。 (レビュー:Stefan Fercot。報告:Will M。)
  • 接続エラーが遅れて発生した場合のセグメンテーション違反を修正しました。 (レビュー:David Christensen。報告:Anton Glushakov。)
  • SFTPではローカルリポジトリの重複チェックを省略するようにしました。 (修正:Reid Thompson。レビュー:David Steele。報告:Anton Kurochkin。)

改善:

  • PostgreSQL 17をサポートしました。

v2.53リリースノート

バックアップの同時実行

2024年7月22日リリース

重要な注意事項:log-level-stderrオプションのデフォルトをwarnからoffに変更しました。これにより、stdoutだけをリダイレクトする場合にも、エラーを収集しやすくなります。以前の動作を維持するにはlog-level-stderr=warnを設定してください。パッケージ作成者への注意事項:mesonでのビルドにlz4ライブラリが必須になりました。パッケージ作成者への注意事項:mesonでのビルドに、コンパイラーの__builtin_clzl()および__builtin_bswap64()のサポートが必須になりました。

バグ修正:

  • ファイルがすでに存在する場合、SFTPで名前の変更に失敗する問題を修正しました。 (修正:Reid Thompson。レビュー:David Steele。報告:ahmed112212。)

新機能:

  • 異なるリポジトリに対してバックアップを同時に実行できるようにしました。 (レビュー:Reid Thompson, Stefan Fercot。)
  • TLS証明書の検証で、IPアドレスを使うSANをサポートしました。 (貢献:David Christensen。レビュー:David Steele。)

改善:

  • log-level-stderrオプションのデフォルトをoffにしました。 (レビュー:Greg Sabino Mullane, Stefan Fercot。)
  • PostgreSQL ≤ 10で、標準以外のWALセグメントサイズを使用できるようにしました。 (貢献:Viktor Kurilko。レビュー:David Steele。)
  • SFTP認証ログの確認を促すヒントを追加しました。 (貢献:Vitalii Zurian。レビュー:Reid Thompson, David Steele。)

ドキュメントの改善:

  • 複数リポジトリでのarchive-pushの動作を明確にしました。 (レビュー:Stefan Fercot。)

v2.52.1リリースノート

不具合修正

2024年6月25日リリース

バグ修正:

  • レプリカ上のファイルがプライマリー上より大きい場合の問題を修正しました。 (レビュー:Stefan Fercot。報告:Nicolas Lassimonne。)

v2.52リリースノート

PostgreSQL 17beta1のサポート

2024年5月27日リリース

パッケージ作成者への注意事項:pgBackRestのビルドシステムをmesonに変更しました。autoconf/makeによるビルドには今後新機能を追加せず、数回のリリース後に削除します。

新機能:

  • GCSの一括削除をサポートしました。 (レビュー:Reid Thompson。)
  • S3のSSE-C暗号化をサポートしました。 (レビュー:Tim Jones。提案:Tim Jones。)
  • PostgreSQL 17beta1をサポートしました。 (レビュー:Stefan Fercot。)

改善:

  • mesonでのビルドで、任意の依存関係を明示的に無効にできるようにしました。 (貢献:Michael Schout。レビュー:David Steele。)
  • mesonでのビルドでpythonを動的に検索するようにしました。 (貢献:Michael Schout。レビュー:David Steele。)
  • mesonでpgbackrestビルドターゲットをインストール可能として指定しました。 (貢献:Bradford Boyle。レビュー:David Steele。)

ドキュメントの改善:

  • 実際の機能に合わせてstart/stopの説明を更新しました。 (レビュー:Stefan Fercot。)

v2.51リリースノート

Mesonビルドシステム

2024年3月25日リリース

バグ修正:

  • ブロック増分バックアップの差分リストアで、長さゼロのファイルをスキップするようにしました。 (レビュー:Sebastian Krause, René Højbjerg Larsen。報告:Sebastian Krause。)
  • ストレージの一覧取得での性能リグレッションを修正しました。 (レビュー:Stephen Frost。報告:Maksym Boguk。)
  • バックアップ中にファイルサイズが変わった場合の進捗ログを修正しました。 (レビュー:Stephen Frost。報告:samkingno。)

改善:

  • デュアルスタック接続のサポートを改善しました。 (レビュー:Stephen Frost。提案:Timothée Peignier。)
  • mesonを主なビルドシステムにしました。 (レビュー:Stephen Frost。)
  • 差分照合を行わない増分バックアップで、変更されていないファイルを検出するようにしました。 (レビュー:Stephen Frost。)
  • backup_labelを削除した場合に、無効なリカバリーが行われることを防ぎました。 (レビュー:Stephen Frost。)
  • archive-pushのWALセグメントキューの処理を改善しました。 (レビュー:Stephen Frost。)
  • 再開機能をフルバックアップのみに制限しました。 (レビュー:Stephen Frost, Stefan Fercot。)
  • ブロック増分バックアップの再開機能を更新しました。 (レビュー:Stephen Frost。)
  • バージョンとヘルプの表示に、--versionと--helpを使用できるようにしました。 (レビュー:Greg Sabino Mullane。提案:Greg Sabino Mullane。)
  • autoconf/makeによるビルドに、詳細なバックトレースを追加しました。 (レビュー:Stephen Frost。)

ドキュメントの改善:

  • recovery.confへの言及を更新しました。 (レビュー:Stefan Fercot。提案:Stephen Frost。)

v2.50リリースノート

性能改善と不具合修正

2024年1月22日リリース

バグ修正:

  • ブロック増分リストアで、読み取り結果が要求した長さに満たない場合の問題を修正しました。 (レビュー:Stephen Frost, Brent Graveland。報告:Adol Rodriguez, Brent Graveland。)
  • オーバーフローによってinfo出力のバックアップ進捗が表示されなくなる問題を修正しました。 (修正:Robert Donovan。レビュー:Joe Wildish。)

改善:

  • ブロック増分バックアップの差分リストアで、部分的なファイルを保持するようにしました。 (レビュー:Stephen Frost。)
  • コンパイル時の標準以外のページサイズをサポートしました。 (貢献:Viktor Kurilko。レビュー:David Steele。)
  • バンドル時に、バックアップ中に切り詰められたファイルをスキップするようにしました。 (貢献:Georgy Shelkovy。レビュー:David Steele。)
  • SFTPストレージのエラーメッセージを改善しました。 (貢献:Reid Thompson。レビュー:David Steele。)

v2.49リリースノート

PostgreSQL 9.3のサポート終了

2023年11月27日リリース

バグ修正:

  • 再試行のリグレッションを修正しました。 (レビュー:Stephen Frost。報告:Norman Adkins, Tanel Suurhans, Jordan English, Timothée Peignier。)
  • SFTPストレージドライバーでの再帰的なパス削除を修正しました。 (修正:Reid Thompson。レビュー:Stephen Frost。報告:Luc。)

改善:

  • PostgreSQL 9.3のサポートを削除しました。 (レビュー:Stephen Frost。)

ドキュメントの機能:

  • メンテナー向けオプションを説明しました。 (レビュー:Stefan Fercot。)
  • PostgreSQL >= 13向けにポイントインタイムリカバリーの説明を更新しました。

テストスイートの改善:

  • libssh2がインストールされていなくても、config/load単体テストを実行できるようにしました。 (貢献:Reid Thompson。レビュー:David Steele。提案:Wu Ning。)

v2.48リリースノート

リポジトリストレージのタグ

2023年9月25日リリース

バグ修正:

  • ブロックリストなしでブロック増分バックアップをリストアする際の問題を修正しました。 (レビュー:Stephen Frost, Burak Yurdakul。報告:Burak Yurdakul。)

新機能:

  • オブジェクトタグを作成する--repo-storage-tagオプションを追加しました。 (レビュー:Stephen Frost, Stefan Fercot, Timothée Peignier。)
  • SFTPストレージドライバーに既知のホストのチェックを追加しました。 (貢献:Reid Thompson。レビュー:Stephen Frost, David Steele。)
  • デュアルスタック接続をサポートしました。 (レビュー:Stephen Frost。)
  • infoコマンドのJSON出力に、バックアップサイズの完了分と合計を追加しました。 (貢献:Stefan Fercot。レビュー:David Steele。)

改善:

  • 複数のstanzaを対象とするcheckコマンドを追加しました。 (レビュー:Stephen Frost。)
  • チェックサムが有効になるまで、pg_controlの読み取りを再試行するようにしました。 (レビュー:Stefan Fercot, Stephen Frost。)
  • バックアップが成功した後のWALセグメントのチェックを最適化しました。 (レビュー:Stephen Frost。)
  • GCSのマルチパート処理の性能を改善しました。 (レビュー:Reid Thompson。)
  • stanzaが停止していてもarchive-getコマンドを実行できるようにしました。 (レビュー:Tom Swartz, David Christensen, Reid Thompson。)
  • SFTP公開鍵/秘密鍵のパスの先頭に、チルダを使用できるようにしました。 (貢献:Reid Thompson。レビュー:David Steele。)
  • 認証トークンの更新前に、GCSの認証情報を再読み込みするようにしました。 (レビュー:Stephen Frost。提案:Daniel Farina。)

ドキュメントの不具合修正:

  • 設定リファレンスのtls-server-addressオプションの例を修正しました。 (修正:Hartmut Goebel。レビュー:David Steele。)
  • コマンドリファレンスのfilterオプションの例を修正しました。

テストスイートの改善:

  • libssh2がインストールされていなくても、storage/sftp単体テストを実行できるようにしました。 (貢献:Reid Thompson。レビュー:David Steele。提案:Wu Ning。)

v2.47リリースノート

性能改善と不具合修正

2023年7月24日リリース

バグ修正:

  • 差分照合を行うバックアップ中に、マニフェストのブロック増分情報を保持するようにしました。 (レビュー:Stephen Frost。報告:Francisco Miguel Biete Banon。)
  • verifyコマンドでのブロック増分ファイル名を修正しました。 (レビュー:Reid Thompson。報告:Francisco Miguel Biete Banon。)
  • スタンバイからのバックアップで、差分照合を行うバックアップへ自動的に誤って切り替わる問題を修正しました。 (レビュー:Stephen Frost。報告:krmozejko, Don Seiler。)
  • PostgreSQL >= 12でリカバリーのtype=noneを指定した場合、recovery.signalを作成しないようにしました。 (レビュー:Stefan Fercot。報告:T.Anastacio。)
  • diff/incrバックアップの一意なラベルの生成を修正しました。 (修正:Andrey Sokolov。レビュー:David Steele。)
  • 期限切れになるバックアップがない場合の、時間に基づくアーカイブの期限切れ処理を修正しました。 (レビュー:Stefan Fercot。)

改善:

  • SFTPストレージドライバーの性能を改善しました。 (貢献:Stephen Frost, Reid Thompson。レビュー:David Steele。)
  • infoコマンドの日付/時刻出力にタイムゾーンオフセットを追加しました。 (レビュー:Stefan Fercot, Philip Hurst。提案:Philip Hurst。)
  • サポートされていない機能のエラー処理を集約しました。 (レビュー:Stefan Fercot。)

ドキュメントの改善:

  • ユーザーガイドで、パッケージからのインストールを優先することを明確にしました。 (レビュー:Stefan Fercot。提案:dr-kd。)

v2.46リリースノート

ブロック増分バックアップとSFTPストレージ

2023年5月22日リリース

新機能:

  • ブロック増分バックアップを追加しました。 (レビュー:John Morris, Stephen Frost, Stefan Fercot。)
  • リポジトリストレージでSFTPをサポートしました。 (貢献:Reid Thompson。レビュー:Stephen Frost, David Steele。)
  • PostgreSQL 16をサポートしました。 (レビュー:Stefan Fercot。)

改善:

  • ページヘッダーのチェックを省略できるようにしました。 (レビュー:David Christensen。提案:David Christensen。)
  • リストア中にリカバリーファイルをchown()しないようにしました。 (レビュー:Stefan Fercot, Marcelo Henrique Neppel。提案:Marcelo Henrique Neppel。)
  • HTTPの再試行で、エラーの再試行に関する詳細を追加しました。

ドキュメントの改善:

  • リカバリーでtype=noneを使う場合の警告を追加しました。 (レビュー:Stefan Fercot。)
  • 作成済みのリポジトリに対してstanza-createを実行する場合の注意事項を追加しました。

v2.45リリースノート

ブロック増分バックアップ(ベータ版)

2023年3月20日リリース

バグ修正:

  • オフラインバックアップのリストアでは、デフォルトでrecovery.signalを書き込まないようにしました。 (レビュー:Stefan Fercot。報告:Marcel Borger。)

新機能:

  • ブロック増分バックアップ(ベータ版)を追加しました。 (レビュー:John Morris, Stephen Frost, Stefan Fercot。)

改善:

  • すべてデフォルト値のグループインデックスは、1つだけ保持するようにしました。 (レビュー:Stefan Fercot。)

ドキュメントの改善:

  • 2.xバージョン間のアップグレードについて、明示的な手順を追加しました。 (貢献:Christophe Courtois。レビュー:David Steele。)
  • TLSの導入により不要になったSSHへの言及を削除しました。

v2.44リリースノート

PostgreSQL 9.0/9.1/9.2のサポート終了

2023年1月30日リリース

改善:

  • PostgreSQL 9.0/9.1/9.2のサポートを終了しました。 (レビュー:Stefan Fercot。)
  • 現在のPostgreSQLバージョンに一致するバックアップがない場合、リストアでエラーを返すようにしました。 (貢献:Stefan Fercot。レビュー:David Steele。提案:Soulou。)
  • compress-typeごとにcompress-levelの範囲チェックを追加しました。 (レビュー:Stefan Fercot。提案:gkleen, ViperRu。)

ドキュメントの改善:

  • Azureストレージで「階層型名前空間」を有効にする際の警告を追加しました。 (レビュー:Stefan Fercot。提案:Vojtech Galda, Pluggi, asjonos。)
  • 監視の例に改行を置換する処理を追加しました。 (レビュー:Stefan Fercot。提案:rudonx, gmustdie, Ivan Shelestov。)
  • PostgreSQLの各バージョンにおけるtarget-actionの動作を明確にしました。 (貢献:Chris Bandy。レビュー:David Steele, Anton Kurochkin, Stefan Fercot。提案:Anton Kurochkin, Chris Bandy。)
  • トップページを更新し、説明を明確にしました。 (レビュー:Stefan Fercot。)
  • ウェブサイトにダークモードを追加しました。 (提案:Stephen Frost。)

v2.43リリースノート

不具合修正

2022年11月28日リリース

バグ修正:

  • 差分/増分バックアップで参照が欠落する問題を修正しました。 (レビュー:Stefan Fercot。報告:Marcel Borger, ulfedf, jaymefSO。)

改善:

  • インデックスを付けずにオプションを指定した場合のヒントを追加しました。 (レビュー:Stefan Fercot。)

v2.42リリースノート

不具合修正

2022年11月22日リリース

バグ修正:

  • ファイルをバンドルするbackup/restoreのメモリリークを修正しました。 (レビュー:John Morris, Oscar。報告:Oscar。)
  • リモートファイルの読み取り量が要求量に満たない場合のプロトコルエラーを修正しました。 (レビュー:Stephen Frost。)

改善:

  • バンドル時に長さゼロのファイルの参照を保存しないようにしました。 (レビュー:Stefan Fercot。)
  • pg_start_backup()/pg_stop_backup()の説明をより一般的な表現にしました。 (レビュー:Greg Sabino Mullane, David Christensen。提案:Greg Sabino Mullane。)

テストスイートの改善:

  • test.plの--psql-binオプションをコマンドラインヘルプに合わせて更新しました。 (貢献:Koshi Shibagaki。レビュー:David Steele。)

v2.41リリースノート

バックアップの注釈

2022年9月19日リリース

バグ修正:

  • デフォルト以外のリポジトリで、時刻に基づく期限切れ処理が誤って適用される問題を修正しました。 (レビュー:Stefan Fercot。報告:Adam Brusselback。)
  • フィルターを指定してディレクトリを再帰的に一覧表示する際の問題を修正しました。 (レビュー:Stephen Frost。報告:Efremov Egor。)

新機能:

  • バックアップにキーと値の組による注釈を追加しました。 (貢献:Stefan Fercot。レビュー:David Steele。提案:Adam Berlin。)

改善:

  • infoコマンドのJSON出力で--setに対応しました。 (貢献:Stefan Fercot。レビュー:David Steele。提案:Anton Kurochkin。)
  • オブジェクトストアのアップロードチャンクサイズを設定できるようにしました。 (レビュー:Stefan Fercot。提案:Anton Glushakov。)
  • バックアップの成功後にarchive.infoのタイムスタンプを更新するようにしました。 (レビュー:Stefan Fercot。提案:Alex Richman。)
  • スタンバイのタイムラインのチェックをチェックポイントの後に移動しました。 (レビュー:Stefan Fercot, Keith Fiske。提案:Keith Fiske。)
  • バックアップ再開時の警告メッセージを改善しました。 (提案:Cynthia Shang。)

ドキュメントの改善:

  • pgbackrest.service内のkillに絶対パスを追加しました。 (提案:Don Seiler。)

v2.40リリースノート

OpenSSL 3のサポート

2022年7月18日リリース

パッケージ作成者への注意事項:実験的なmesonビルドを追加しましたが、当面は引き続きautoconf/makeでビルドすることを推奨します。

改善:

  • OpenSSL 3に対応しました。 (レビュー:Stephen Frost。)
  • パスの内容を一覧表示する際にスナップショットを作成するようにしました。 (レビュー:John Morris, Stephen Frost。)
  • リストアでtype=immediateを指定した場合に、target-timeline=currentを強制するようにしました。 (レビュー:Stephen Frost。)
  • 差分restoreで、ファイルが想定より大きい場合に切り詰めるようにしました。 (レビュー:Stephen Frost。)
  • resume=nの場合、マニフェストの増分保存を無効にしました。 (貢献:Reid Thompson。レビュー:David Steele。)
  • コピー開始前にバックアップの進捗率をゼロに設定するようにしました。 (貢献:Reid Thompson。レビュー:David Steele。)
  • 一覧取得を続けるかどうかの判定にS3のIsTruncatedフラグを使用するようにしました。 (レビュー:John Morris, Soulou。提案:Christian Montagne。)

ドキュメントの不具合修正:

  • 設定リファレンスに内部オプションを掲載しないようにしました。 (報告:Francisco Miguel Biete Banon。)

ドキュメントの改善:

  • リポジトリホストのセクションにPostgreSQLの設定へのリンクを追加しました。 (レビュー:Stefan Fercot。提案:Julien Cigar。)

テストスイートの改善:

  • 実験的なMesonビルドを追加しました。 (レビュー:Eli Schwartz, Sam Bassaly。)
  • --test-pathオプションに任意のパスを渡せるようにしました。 (貢献:Andrey Sokolov。レビュー:David Steele。)
  • DEBUGを定義せずにDEBUG_EXEC_TIMEを定義した場合のコンパイルエラーを修正しました。 (貢献:Andrey Sokolov。レビュー:David Steele。)

v2.39リリースノート

検証とファイルのバンドル化

2022年5月16日リリース

バグ修正:

  • FINALLY()からエラーが送出されると無限ループになる問題を修正しました。 (レビュー:Stephen Frost。)
  • 他のプロセスがロックを保持している場合を除き、ロックの取得に失敗すると必ずエラーを返すようにしました。 (レビュー:Reid Thompson, Geir Råness。報告:Geir Råness。)

新機能:

  • 小さなファイルを効率的に扱えるよう、バックアップファイルのバンドル化を追加しました。 (レビュー:Reid Thompson, Stefan Fercot, Chris Bandy。)
  • リポジトリの内容を検証するverifyコマンドを追加しました。 (貢献:Cynthia Shang, Reid Thompson。レビュー:David Steele, Stefan Fercot。)
  • PostgreSQL 15に対応しました。 (レビュー:Stefan Fercot。)
  • infoの出力にバックアップの進捗率を表示するようにしました。 (貢献:Reid Thompson。レビュー:David Steele。)
  • restoreコマンドの--type=lsnでバックアップを自動選択するようにしました。 (貢献:Reid Thompson。レビュー:Stefan Fercot, David Steele。)
  • archive-mode-checkが無効な場合、既存のWALに関する警告を抑止するようにしました。 (貢献:Reid Thompson。レビュー:David Steele。)
  • AWS IMDSv2のサポートを追加しました。 (貢献:Nuno Pires。レビュー:David Steele。)

改善:

  • フルバックアップの後でrepo-hardlinkオプションを変更できるようにしました。 (レビュー:Reid Thompson。)
  • backupとrestoreの進捗率のログの精度を上げました。 (貢献:Reid Thompson。レビュー:David Steele。)
  • repo-*コマンドのパス検証を改善しました。 (貢献:Reid Thompson。レビュー:David Steele。)
  • stopコマンドがstanzaオプションに従うように改善しました。 (貢献:Reid Thompson。レビュー:David Steele。提案:ragaoua。)
  • repo-azure-keyが無効な場合のエラーメッセージを改善しました。 (貢献:Reid Thompson。レビュー:David Steele。提案:Seth Daniel。)
  • 非同期のarchive-get/archive-pushでエラーが発生した場合に、ログを確認するよう促すヒントを追加しました。 (レビュー:Reid Thompson。)
  • 予期しないクロックスキューやタイムゾーンの変更に対してClockErrorを追加しました。 (レビュー:Greg Sabino Mullane, Stefan Fercot。提案:Greg Sabino Mullane。)
  • 履歴マニフェストをエラーメッセージに表示する前に、拡張子を取り除くようにしました。 (レビュー:Stefan Fercot。)
  • ロックの権限エラーにuser:groupを追加しました。 (レビュー:Reid Thompson。)

ドキュメントの不具合修正:

  • ユーザーガイドのstanza-updateへの誤った参照を修正しました。 (修正:Abubakar Mohammed。レビュー:David Steele。)
  • 設定リファレンスのrepo-gcs-key-typeオプションの例を修正しました。 (レビュー:Reid Thompson。)
  • tls-server-authの例を修正し、説明を補いました。 (レビュー:Reid Thompson。)

ドキュメントの改善:

  • ドキュメント内のサポート対象バージョンに関する説明を簡潔にしました。 (レビュー:Stefan Fercot, Reid Thompson, Greg Sabino Mullane。)
  • オプションの型の説明を追加しました。 (貢献:Reid Thompson。レビュー:David Steele。)
  • バックアップの種類とリストア速度に関するFAQを追加しました。 (貢献:David Christensen。レビュー:Reid Thompson。)
  • プルリクエストで必須となるベースブランチを明記しました。 (貢献:David Christensen。レビュー:Reid Thompson。)

v2.38リリースノート

軽微なバグ修正と改善

2022年3月6日リリース

重要な注意事項:infoコマンドが報告するリポジトリサイズは、pgBackRestがストレージに書き込んだ量だけに基づくようになりました。以前は、ストレージで追加の圧縮が行われているかどうかを検出できる場合がありましたが、この機能はサポートされなくなりました。

バグ修正:

  • S3でファイルを一括削除する際のエラーで再試行するようにしました。 (レビュー:Reid Thompson。報告:Alex Richman。)
  • HTTPのconnectionヘッダーの値を、大文字と小文字を区別せずに照合できるようにしました。 (レビュー:Reid Thompson。報告:Rémi Vidier。)

新機能:

  • KMSを使用したAWS S3のサーバー側暗号化のサポートを追加しました。 (貢献:Christoph Berg。レビュー:David Steele, Tharindu Amila。)
  • archive-missing-retryオプションを追加しました。 (レビュー:Stefan Fercot。)
  • infoコマンドにバックアップの種類によるフィルターを追加しました。 (貢献:Stefan Fercot。レビュー:David Steele。)

改善:

  • backup中にページ検証に失敗した場合に再試行するようにしました。 (レビュー:Stephen Frost, David Christensen。)
  • 接続を正常に終了しないTLSサーバーに対応しました。 (レビュー:Rémi Vidier, David Christensen, Stephen Frost。)
  • infoコマンドの出力にバックアップのLSNを追加しました。 (貢献:Stefan Fercot。レビュー:David Steele。)
  • repo-lsのパスの末尾のスラッシュを自動的に取り除くようにしました。 (貢献:David Christensen。レビュー:David Steele。)
  • 致命的なエラーでは再試行しないようにしました。 (レビュー:Reid Thompson。)
  • PostgreSQL 8.3/8.4のサポートを終了しました。 (レビュー:Reid Thompson, Stefan Fercot。)
  • ファイルシステムによる追加の圧縮を判定するロジックを削除しました。 (レビュー:Reid Thompson, Stefan Fercot。)

ドキュメントの不具合修正:

  • TLSのドキュメントで、repoオプションをglobalセクションに移動しました。 (報告:Anton Kurochkin。)
  • stanzaコマンドから未使用のbackup-standbyオプションを削除しました。 (報告:Stefan Fercot。)
  • ヘルプとリリースノートの誤記を修正しました。 (修正:Daniel Gustafsson。レビュー:David Steele。)

ドキュメントの改善:

  • systemdサービスの設定に死活監視を追加しました。 (提案:Yogesh Sharma。)
  • WALアーカイブの接尾辞について説明するFAQを追加しました。 (貢献:Stefan Fercot。レビュー:David Steele。)
  • レプリケーションスロットはリストアされないことを明記しました。 (貢献:Reid Thompson。レビュー:David Steele, Stefan Fercot。提案:Christophe Courtois。)

v2.37リリースノート

TLSサーバー

2022年1月3日リリース

重要な注意事項:restoreコマンドで、指定した目標時刻に合うバックアップが見つからない場合、従来は警告をログに記録していましたが、エラーを返すようになりました。

バグ修正:

  • パスやファイルがすでに存在する場合の、差分restoreでのリンクのマッピングを修正しました。 (レビュー:Reid Thompson。報告:Younes Alhroub。)
  • 接続の再試行時にソケットがリークする問題を修正しました。 (レビュー:Reid Thompson。報告:James Coleman。)

新機能:

  • TLSサーバーを追加しました。 (レビュー:Stephen Frost, Reid Thompson, Andrew L’Ecuyer。)
  • --cmdオプションを追加しました。 (貢献:Reid Thompson。レビュー:Stefan Fercot, David Steele。提案:Virgile CREVON。)

改善:

  • バックアップ開始直後にアーカイブをチェックするようにしました。 (レビュー:Reid Thompson, David Christensen。)
  • バックアップにタイムラインとチェックポイントのチェックを追加しました。 (レビュー:Stefan Fercot, Reid Thompson。)
  • バックアップ中に、クラスターが稼働しており正しく設定されていることをチェックするようにしました。 (レビュー:Stefan Fercot。)
  • restoreで目標時刻に合うバックアップが見つからない場合にエラーを返すようにしました。 (レビュー:Reid Thompson, Douglas J Hunley。提案:Douglas J Hunley。)
  • S3/Azureエンドポイントのプロトコルとポートを解析するようにしました。 (貢献:Reid Thompson。レビュー:David Steele。)
  • checkpoint_timeoutがdb-timeoutを超える場合に警告するようにしました。 (貢献:Stefan Fercot。レビュー:David Steele。)
  • HTTPエラーの出力にメソッドを追加しました。 (貢献:Christoph Berg。レビュー:David Steele。)
  • コマンドラインのブール型オプションでy/nの引数を受け付けるようにしました。 (貢献:Reid Thompson。レビュー:David Steele。)
  • ログに記録するバックアップサイズを、infoコマンドの出力と正確に一致させました。 (貢献:Reid Thompson。レビュー:David Steele。提案:Mahomed Hussein。)

ドキュメントの改善:

  • サイズを指定するオプションのデフォルト値と許容値を適切な単位で表示するようにしました。 (レビュー:Reid Thompson。)
  • tablespace-map-allオプションの誤記を修正し、説明を改善しました。 (レビュー:Reid Thompson。提案:Reid Thompson。)
  • 複数リポジトリへの将来的な対応に関する古い記述を削除しました。 (提案:David Christensen。)

v2.36リリースノート

軽微なバグ修正と改善

2021年11月1日リリース

バグ修正:

  • stanzaの接頭辞に「global」を使用できるようにしました。 (レビュー:Stefan Fercot。報告:Younes Alhroub。)
  • 無効なGCSキーファイルによるセグメンテーション違反を修正しました。 (レビュー:Stephen Frost。報告:Henrik Feldt。)

改善:

  • link-mapオプションで新しいリンクを作成できるようにしました。 (レビュー:Don Seiler, Stefan Fercot, Chris Bandy。提案:Don Seiler。)
  • pg/repoオプションに指定できるインデックスの最大値を256に増やしました。 (レビュー:Cynthia Shang。)
  • AWS S3のWebIdentity認証を追加しました。 (レビュー:James Callahan, Reid Thompson, Benjamin Blattberg, Andrew L’Ecuyer。)
  • バックアップファイルの検証エラーをbackup.infoに記録するようにしました。 (貢献:Stefan Fercot。レビュー:David Steele。)
  • オンラインバックアップのリストアログに、リカバリーの開始時刻を追加しました。 (レビュー:Tom Swartz, Stefan Fercot。提案:Tom Swartz。)
  • ローカルジョブの失敗時に、元のエラーと再試行を報告するようにしました。 (レビュー:Stefan Fercot。)
  • infoのテキスト出力で、ページチェックサムエラーの名称をエラー一覧に変更しました。 (レビュー:Stefan Fercot。)
  • スタンバイでの再生タイムアウトのメッセージにヒントを追加しました。 (レビュー:Cynthia Shang, Stefan Fercot。提案:Leigh Downs。)

v2.35リリースノート

バイナリープロトコル

2021年8月23日リリース

重要な注意事項:backup/restoreコマンドでコピーしたファイルを記録するログレベルをdetailに変更しました。これにより、infoレベルのログが簡潔になります。これらのメッセージが必要な場合は、backup/restoreコマンドのログレベルをdetailに設定してください。

バグ修正:

  • S3のマルチパートアップロードの完了処理でエラーを検出するようにしました。 (レビュー:Cynthia Shang, Marco Montagna。報告:Marco Montagna, Lev Kokotov, Anderson A. Mallmann。)
  • シンボリックリンクの循環検出を修正しました。 (レビュー:Stefan Fercot。報告:Rohit Raveendran。)
  • 選択したrepoのオプションだけをリモートに渡すようにしました。 (レビュー:David Christensen, Cynthia Shang。報告:Greg Sabino Mullane, David Christensen。)

改善:

  • バイナリープロトコルを導入しました。 (レビュー:Cynthia Shang。)
  • restoreでデータディレクトリを自動作成するようにしました。 (貢献:Stefan Fercot。レビュー:David Steele。提案:Chris Bandy。)
  • restoreで--type=lsnを指定できるようにしました。 (貢献:Stefan Fercot。レビュー:Cynthia Shang。提案:James Coleman。)
  • backup/restoreでコピーしたファイルを記録するログレベルをdetailに変更しました。 (レビュー:Stefan Fercot。提案:Jens Wilke。)
  • チェックポイントのLSNが再生LSNに達するのを待つ間、ループするようにしました。 (貢献:Stefan Fercot。レビュー:David Steele。提案:Fatih Mencutekin。)
  • backupではファイル総数を、restoreではサイズとファイル総数をログに記録するようにしました。 (レビュー:Cynthia Shang。)

ドキュメントの不具合修正:

  • ユーザーガイドの誤ったホスト名を修正しました。 (レビュー:Stefan Fercot。報告:Greg Sabino Mullane。)

ドキュメントの改善:

  • コントリビューションのドキュメントを更新し、プルリクエストのテンプレートを追加しました。 (貢献:Cynthia Shang。レビュー:David Steele。)
  • ユーザーガイド内のバックアップの説明を再構成しました。 (レビュー:Cynthia Shang。)
  • コマンドリファレンスで、restoreの--typeの動作を明確にしました。 (貢献:Cynthia Shang。レビュー:David Steele。)
  • ドキュメントとコメントの誤記を修正しました。 (貢献:Eric Radman。レビュー:David Steele。)

テストスイートの改善:

  • テストパスがリポジトリパス内にあるかどうかのチェックを追加しました。 (レビュー:Greg Sabino Mullane。提案:Greg Sabino Mullane。)
  • CodeQLによる静的コード解析を追加しました。 (レビュー:Cynthia Shang。)
  • 標準的なパターンを使用するようテストを更新しました。 (貢献:Cynthia Shang。レビュー:David Steele。)

v2.34リリースノート

PostgreSQL 14のサポート

2021年6月7日リリース

バグ修正:

  • 以前のrestoreで残ったスプールファイルに関する問題を修正しました。 (レビュー:Cynthia Shang, Stefan Fercot, Floris van Nee。報告:Floris van Nee。)
  • 大量のテーブルスペースのリンクをチェックする際の問題を修正しました。 (レビュー:Cynthia Shang, Avinash Vallarapu。報告:Avinash Vallarapu。)
  • restore中にタイムアウトしないよう、不要になったリモート接続を解放するようにしました。 (レビュー:Cynthia Shang。報告:Francisco Miguel Biete Banon。)
  • 有効なオプションが指定したコマンドでは無効な場合のhelpを修正しました。 (レビュー:Stefan Fercot。報告:Cynthia Shang。)

新機能:

  • PostgreSQL 14のサポートを追加しました。 (レビュー:Cynthia Shang。)
  • GCEインスタンス向けにGCSの自動認証を追加しました。 (レビュー:Jan Wieck, Daniel Farina。)
  • バックアップ履歴を期限切れとして削除するrepo-retention-historyオプションを追加しました。 (貢献:Stefan Fercot。レビュー:Cynthia Shang, David Steele。)
  • db-excludeオプションを追加しました。 (貢献:Stefan Fercot。レビュー:Cynthia Shang。)

改善:

  • アーカイブの期限切れ処理のログレベルをdetailからinfoに変更しました。 (貢献:Cynthia Shang。レビュー:David Steele。)
  • restoreでstanzaのアーカイブスプールパスを削除するようにしました。 (レビュー:Cynthia Shang, Stefan Fercot。)
  • backupのコピー中は、ファイルのアトミックな書き込みやパスの同期を行わないようにしました。 (レビュー:Stephen Frost, Stefan Fercot, Cynthia Shang。)

ドキュメントの改善:

  • コントリビューションのドキュメントを更新しました。 (貢献:Cynthia Shang。レビュー:David Steele, Stefan Fercot。)
  • RHEL/CentOSのユーザーガイドを1つのドキュメントに統合しました。 (レビュー:Cynthia Shang。)
  • repo-s3-roleはARNではないことを明確にしました。 (貢献:Isaac Yuen。レビュー:David Steele。)

v2.33リリースノート

複数リポジトリとGCSのサポート

2021年4月5日リリース

バグ修正:

  • オプションに関する警告によって非同期のarchive-get/archive-pushが動作しなくなる問題を修正しました。 (レビュー:Cynthia Shang。報告:Lev Kokotov。)
  • バックアップ中のアーカイブコピーで発生するメモリリークを修正しました。 (レビュー:Cynthia Shang。報告:Christian ROUX, Efremov Egor。)
  • 暗号化パスフレーズの生成時にスタックがオーバーフローする問題を修正しました。 (レビュー:Cynthia Shang。報告:bsiara。)
  • S3リポジトリでのrepo-ls /を修正しました。 (レビュー:Cynthia Shang。報告:Lesovsky Alexey。)

新機能:

  • 複数リポジトリに対応しました。 (貢献:Cynthia Shang, David Steele。レビュー:Stefan Fercot, Stephen Frost。)
  • リポジトリストレージとしてGCSに対応しました。 (レビュー:Cynthia Shang, Daniel Farina。)
  • archive-header-checkオプションを追加しました。 (レビュー:Stephen Frost, Cynthia Shang。提案:Hans-Jürgen Schönig。)

改善:

  • 選択的リストアの対象に、再作成されたシステムデータベースを含めるようにしました。 (貢献:Stefan Fercot。レビュー:Cynthia Shang。)
  • S3の署名対象ヘッダーからcontent-lengthを除外しました。 (レビュー:Cynthia Shang。提案:Brian P Bockelman。)
  • 使用頻度の低いリポジトリストレージオプションを統合しました。 (レビュー:Cynthia Shang。)
  • ./configure --with-configdirでconfig-pathのデフォルト値を変更できるようにしました。 (貢献:Michael Schout。レビュー:David Steele。)
  • backup中のアーカイブコピーをログに記録するようにしました。 (レビュー:Cynthia Shang, Stefan Fercot。)

ドキュメントの改善:

  • リファレンスを更新し、ユーザーガイドの例へのリンクを追加しました。 (貢献:Cynthia Shang。レビュー:David Steele。)
  • 選択的リストアのドキュメントに注意事項を追加しました。 (レビュー:Cynthia Shang, Stefan Fercot。)
  • archive-copyのドキュメントにcompress-typeの説明を補いました。 (レビュー:Cynthia Shang, Stefan Fercot。)
  • compress-typeの値ごとにcompress-levelのデフォルト値を追加しました。 (貢献:Cynthia Shang。レビュー:David Steele。)
  • 必要なNFS設定はPostgreSQLと同じであることを明記しました。 (貢献:Cynthia Shang。レビュー:David Steele。)

v2.32リリースノート

リポジトリコマンド

2021年2月8日リリース

バグ修正:

  • 前回の再開処理でバックアップが一部削除された後の再開処理を修正しました。 (レビュー:Cynthia Shang。報告:Tom Swartz。)

新機能:

  • repo-lsコマンドを追加しました。 (レビュー:Cynthia Shang, Stefan Fercot。)
  • repo-getコマンドを追加しました。 (貢献:Stefan Fercot, David Steele。レビュー:Cynthia Shang。)
  • archive-mode-checkオプションを追加しました。 (貢献:Stefan Fercot。レビュー:David Steele, Michael Banck。)

改善:

  • archive-getの性能を改善しました。 (レビュー:Cynthia Shang。)

ドキュメントの改善:

  • expireコマンドのドキュメントを改善しました。 (貢献:Cynthia Shang。レビュー:David Steele。)

v2.31リリースノート

軽微なバグ修正と改善

2020年12月7日リリース

バグ修正:

  • データベース名の先頭文字に[、#、spaceを使用できるようにしました。 (レビュー:Stefan Fercot, Cynthia Shang。報告:Jefferson Alexandre。)
  • restoreの種類がstandbyの場合、PostgreSQL 12でのみstandby.signalを作成するようにしました。 (修正:Stefan Fercot。レビュー:David Steele。報告:Keith Fiske。)

新機能:

  • 履歴ファイルを期限切れとして削除するようにしました。 (貢献:Stefan Fercot。レビュー:David Steele。)
  • infoコマンドのtext出力でページチェックサムエラーを報告するようにしました。 (貢献:Stefan Fercot。レビュー:Cynthia Shang。)
  • repo-azure-endpointオプションを追加しました。 (レビュー:Cynthia Shang, Brian Peterson。提案:Brian Peterson。)
  • pg-databaseオプションを追加しました。 (レビュー:Cynthia Shang。)

改善:

  • 指定したstanzaが存在しない場合のinfoコマンドの出力を改善しました。 (貢献:Stefan Fercot。レビュー:Cynthia Shang, David Steele。提案:uspen。)
  • backup/restoreコマンドで大きなファイル一覧を扱う際の性能を改善しました。 (レビュー:Cynthia Shang, Oscar。)
  • バックアップ開始時のPostgreSQLのスリープ処理に再試行を追加しました。 (レビュー:Cynthia Shang。提案:Vitaliy Kukharik。)

ドキュメントの改善:

  • RHEL/CentOS 6のドキュメントをRHEL/CentOS 8のものに置き換えました。

v2.30リリースノート

PostgreSQL 13のサポート

2020年10月5日リリース

バグ修正:

  • バックアップユーザーがpg_settingsを読み取れない場合に、ヒント付きのエラーを返すようにしました。 (レビュー:Stefan Fercot, Cynthia Shang。報告:Mohamed Insaf K。)

新機能:

  • PostgreSQL 13に対応しました。 (レビュー:Cynthia Shang。)

改善:

  • PostgreSQLバージョンの識別を改善しました。 (レビュー:Cynthia Shang, Stephen Frost。)
  • 作業ディレクトリのエラーメッセージを改善しました。 (レビュー:Stefan Fercot。)
  • WALセグメントが見つからない場合に、stanzaの開始に関するヒントを追加しました。 (貢献:David Christensen。レビュー:David Steele。)
  • プロトコルバージョンの不一致に関するヒントを追加しました。 (レビュー:Cynthia Shang。提案:loop-evgeny。)

ドキュメントの改善:

  • リモートで実行する場合はpgBackRestのバージョンを一致させる必要があることを明記しました。 (レビュー:Cynthia Shang。提案:loop-evgeny。)
  • infoコマンドの説明をリファレンスに移動し、ユーザーガイドへのリンクを追加しました。 (レビュー:Cynthia Shang。提案:Christophe Courtois。)
  • CentOS/RHELユーザーガイドのyumリポジトリのパスを更新しました。 (貢献:Heath Lord。レビュー:David Steele。)

v2.29リリースノート

AWSでのS3認証情報の自動取得

2020年8月31日リリース

バグ修正:

  • local/remoteプロセスを終了する際のエラーを抑止するようにしました。コマンドは完了しているため、エラーを返しても逆効果ですが、通常とは異なる事象が発生したことを示す警告は引き続き出力します。 (レビュー:Cynthia Shang。報告:argdenis。)
  • ファイル名やデータベース名に=文字が含まれる場合の問題を修正しました。 (レビュー:Bastian Wegge, Cynthia Shang。報告:Brad Nicholson, Bastian Wegge。)

新機能:

  • AWSインスタンスで一時的なS3認証情報を自動取得するようにしました。 (貢献:David Steele, Stephen Frost。レビュー:Cynthia Shang, David Youatt, Aleš Zelený, Jeanette Bromage。)
  • リストア時にアーカイブを無効にするarchive-modeオプションを追加しました。 (レビュー:Stephen Frost。提案:Stephen Frost。)

改善:

  • PostgreSQL 13 beta3に対応しました。以後のベータ版でcontrol/catalog/WALのバージョンが変更されると互換性が失われる可能性がありますが、pgBackRestも各リリースに合わせて更新します。
  • S3/Azureストレージのlist/removeを非同期化しました。 (レビュー:Cynthia Shang, Stephen Frost。)
  • マニフェストの作成時に、unloggedリレーションを検出する処理のメモリ使用量を改善しました。 (レビュー:Cynthia Shang, Stephen Frost, Brad Nicholson, Oscar。提案:Oscar, Brad Nicholson。)
  • 非同期プロセスをforkした後、ファイルディスクリプターを積極的に閉じるようにしました。 (レビュー:Stephen Frost, Cynthia Shang。)
  • バックアップ時のリモート接続を閉じるタイミングを、アーカイブチェックの後に遅らせました。 (貢献:Floris van Nee。レビュー:David Steele。)
  • 詳細なエラー出力を改善しました。 (レビュー:Cynthia Shang。)
  • TLSのエラー報告を改善しました。 (レビュー:Cynthia Shang, Stephen Frost。)

ドキュメントの不具合修正:

  • compress-typeオプションのリファレンスにnoneを追加し、例を修正しました。 (報告:Ugo Bellavance, Don Seiler。)
  • repo-typeオプションのリファレンスに、欠落していたazureの種類を追加しました。 (修正:Don Seiler。レビュー:David Steele。)
  • repo-cipher-typeオプションのリファレンスの誤記を修正しました。 (修正:Don Seiler。レビュー:David Steele。)

ドキュメントの改善:

  • expire-autoが無効な場合は、expireを定期的に実行する必要があることを明確にしました。 (レビュー:Douglas J Hunley。提案:Douglas J Hunley。)

v2.28リリースノート

Azureリポジトリストレージ

2020年7月20日リリース

バグ修正:

  • restoreの--forceが--force --deltaと同じ動作をする問題を修正しました。この問題により、restoreがファイルを上書きせず、タイムスタンプとサイズに基づいて置き換えていたため、更新すべきファイルが変更されずに残る場合がありました。通常のrestoreとrestoreの--deltaは、この問題の影響を受けませんでした。 (レビュー:Cynthia Shang。)

新機能:

  • リポジトリストレージとしてAzureに対応しました。 (レビュー:Cynthia Shang, Don Seiler。)
  • expire-autoオプションを追加しました。バックアップの成功後に自動実行する期限切れ処理を無効にできます。 (貢献:Stefan Fercot。レビュー:Cynthia Shang, David Steele。)

改善:

  • S3のマルチパートアップロードを非同期化しました。 (レビュー:Stephen Frost。)
  • backup、restore、archive-get、archive-pushに自動再試行を追加しました。 (レビュー:Cynthia Shang。)
  • バックアップの制御に使用するPostgreSQLセッションで、クエリーの並列実行を無効にしました。 (レビュー:Stefan Fercot。)
  • PostgreSQL 13 beta2に対応しました。以後のベータ版でcontrol/catalog/WALのバージョンが変更されると互換性が失われる可能性がありますが、pgBackRestも各リリースに合わせて更新します。
  • 無効なHTTPレスポンスステータスの処理を改善しました。 (レビュー:Cynthia Shang。)
  • archive-getコマンドでpg1-pathオプションがない場合のエラーを改善しました。 (レビュー:Cynthia Shang。)
  • タイムラインの切り替え後にチェックサムによる差分処理を有効にする場合のヒントを追加しました。 (レビュー:Matt Bunter, Cynthia Shang。)
  • 適切な箇所で、postmasterの代わりにPostgreSQLという名称を使用するようにしました。 (レビュー:Cynthia Shang。)

ドキュメントの不具合修正:

  • repo-retention-full-typeオプションの誤った例を修正しました。 (報告:Höseyin Sönmez。)
  • HTMLとmanのコマンドリファレンスから内部コマンドを削除しました。 (報告:Cynthia Shang。)

ドキュメントの改善:

  • ユーザーガイドのビルドに使用するPostgreSQLのバージョンを更新しました。また、特定のバージョンでビルドしたガイドでも一定範囲のPostgreSQLバージョンに適用できることを示すため、バージョン範囲を追加しました。 (レビュー:Stephen Frost。)
  • 特定のバックアップセットの期限切れ処理に関するFAQを更新しました。 (貢献:Cynthia Shang。レビュー:David Steele。)
  • デフォルトのPITRの動作を明確にするため、FAQを更新しました。 (貢献:Cynthia Shang。レビュー:David Steele。)

v2.27リリースノート

期限切れ処理の改善と圧縮ドライバー

2020年5月26日リリース

バグ修正:

  • ファイルへのリンクがパスへのリンクに含まれているかを確認する処理を修正しました。 (レビュー:Cynthia Shang。報告:Christophe Cavallié。)
  • 同期archive-pushでpg-path1を省略できるようにしました。 (レビュー:Cynthia Shang。報告:Jerome Peng。)
  • expireコマンドが停止ファイルの有無を確認するようになりました。 (修正:Cynthia Shang。レビュー:David Steele。)
  • HTTPレスポンスに理由句がない場合に対応しました。 (レビュー:Cynthia Shang。報告:Tenuun。)
  • lz4圧縮のフラッシュ時のバッファーサイズを増やしました。 (レビュー:Cynthia Shang。報告:Eric Radman。)
  • remoteコマンドでpg-host*とrepo-host*オプションを無視するようにしました。 (レビュー:Cynthia Shang。報告:Pavel Suderevsky。)
  • remoteコマンドでpg1-*オプションが欠落する場合がある問題を修正しました。 (レビュー:Cynthia Shang。報告:Andrew L’Ecuyer。)

新機能:

  • フルバックアップの期間に基づく保持に対応しました。--repo-retention-full-typeオプションで、日数で指定した期間に基づいてフルバックアップを保持できます。 (貢献:Cynthia Shang, Pierre Ducroquet。レビュー:David Steele。)
  • バックアップを個別に期限切れとして削除できるようにしました。保持設定に関係なく、ユーザーが指定したバックアップを削除できます。 (貢献:Cynthia Shang。レビュー:David Steele。)
  • Zstandard圧縮に対応しました。compress-type=zstを設定すると、新しいバックアップとアーカイブは以前のpgBackRestバージョンとは互換性がなくなり、リストアできなくなることに注意してください。 (レビュー:Cynthia Shang。)
  • bzip2圧縮に対応しました。compress-type=bz2を設定すると、新しいバックアップとアーカイブは以前のpgBackRestバージョンとは互換性がなくなり、リストアできなくなることに注意してください。 (貢献:Stephen Frost。レビュー:David Steele, Cynthia Shang。)
  • infoコマンドにbackup/expireの実行状態を追加しました。 (貢献:Stefan Fercot。レビュー:David Steele。)

改善:

  • repo-retention-archiveのしきい値に達した場合にのみ、WALアーカイブを期限切れとして削除するようにしました。従来、最初のフルバックアップより前のWALは、最初のフルバックアップの後に削除されていました。今後は保持設定に従って保持されます。 (貢献:Cynthia Shang。レビュー:David Steele。)
  • FIPSが有効な場合でもS3を使用できるよう、独自のMD5実装を追加しました。 (レビュー:Cynthia Shang, Stephen Frost。提案:Brian Almeida, John Kelly。)
  • PostgreSQL 13 beta1に対応しました。以後のベータ版でcontrol/catalog/WALのバージョンが変更されると互換性が失われる可能性がありますが、pgBackRestも各リリースに合わせて更新します。 (レビュー:Cynthia Shang。)
  • buffer-sizeのデフォルト値を1MiBに減らしました。 (レビュー:Stephen Frost。)
  • リポジトリホスト以外でexpireを実行した場合に、わかりやすいエラーを返すようにしました。 (貢献:Cynthia Shang。レビュー:David Steele。)

v2.26リリースノート

ノンブロッキングTLS

2020年4月20日リリース

バグ修正:

  • マニフェストの正規表現から空の部分式を削除しました。他のプラットフォームでは問題なく動作しているようでしたが、MacOSでは問題が発生していました。 (修正:David Raftis。レビュー:David Steele。)

改善:

  • ノンブロッキングTLSを実装しました。 (レビュー:Slava Moudry, Cynthia Shang, Stephen Frost。)
  • バックアップでコピーするサイズの制限を、WALに記録されるファイルだけに適用するようにしました。以前の動作では、バックアップ内のpostgresql.confやpostgresql.auto.confが切り詰められる可能性がありました。 (レビュー:Cynthia Shang。)
  • TCPキープアライブのオプションを設定できるようにしました。 (提案:Marc Cousin。)
  • io-timeoutオプションを追加しました。 (レビュー:Cynthia Shang。)

v2.25リリースノート

LZ4圧縮のサポート

2020年3月26日リリース

新機能:

  • lz4圧縮のサポートを追加しました。compress-type=lz4を設定すると、新しいバックアップとアーカイブは以前のpgBackRestバージョンとは互換性がなくなり、リストアできなくなることに注意してください。 (レビュー:Cynthia Shang。)
  • expireコマンドに--dry-runオプションを追加しました。dry-runを使用すると、実際には何も削除せずに、expireコマンドが削除するバックアップとアーカイブを確認できます。 (貢献:Cynthia Shang, Luca Ferrari。レビュー:David Steele。提案:Marc Cousin。)

改善:

  • リモートでのマニフェスト作成の性能を改善しました。 (提案:Jens Wilke。)
  • Linuxでのkeepaliveオプションの検出を修正しました。 (貢献:Marc Cousin。レビュー:David Steele。)
  • 標準規格に関するフラグを正しく設定するため、configureにホストの検出を追加しました。 (貢献:Marc Cousin。レビュー:David Steele。)
  • compress/compress-levelオプションを、使用しないコマンドから削除しました。これらのコマンド(restore、archive-getなど)は圧縮オプションを使っていませんでしたが、コマンドラインでの指定を許可していました。今後は、これらのオプションをコマンドラインで指定するとエラーになります。このエラーが発生した場合は、使用しないオプションを削除してください。 (レビュー:Cynthia Shang。)
  • バックアップでコピーするファイルサイズを、バックアップ開始時に報告されたサイズに制限しました。バックアップ中にファイルが増大しても、リカバリー時のWAL再生で再構築されるため、追加データをコピーする必要はありません。 (レビュー:Cynthia Shang。)

v2.24 リリースノート

目標時刻に応じたバックアップセットの自動選択

2020年2月25日リリース

バグ修正:

  • 非同期アーカイブコマンドでゾンビプロセスが発生しないようにしました。 (レビュー:Stephen Frost。報告:Adam Brusselback, ejberdecia。)
  • archive-get/archive-push/restoreをPostgreSQLホスト以外で実行した場合にエラーを出すようにしました。 (レビュー:Stephen Frost。報告:Jesper St John。)
  • サイズやエンコーディングの指定がない場合に、HTTPコンテンツをeofまで読み込むようにしました。 (レビュー:Cynthia Shang。報告:Christian ROUX。)
  • Perlで作成されたバックアップを再開する場合の問題を修正しました。この場合、再開可能なバックアップは無視するのが適切ですが、Perlが書いた部分的なマニフェストは形式がわずかに異なり、Cコードでは読み込めませんでした。この状況を検出して正常に処理を続けられるよう、検証を追加しました。 (報告:Kacey Holston。)

新機能:

  • リストア時に目標時刻を指定した場合、バックアップセットを自動選択するようにしました。自動選択を行うのは--setを指定していない場合だけです。指定された目標時刻に対応するバックアップセットが見つからない場合は、最新の(デフォルトの)バックアップセットを使用します。 (貢献:Cynthia Shang。レビュー:David Steele。)

改善:

  • バックアップ時にpg_internal.initの一時ファイルを除外するようにしました。 (レビュー:Cynthia Shang。提案:Michael Paquier。)
  • backupでマニフェストに対する検証を追加しました。 (レビュー:Cynthia Shang。)

ドキュメントの改善:

  • lock-botがロック済みのissueにコメントを追加しないようにしました。 (提案:Christoph Berg。)

v2.23 リリースノート

不具合修正

2020年1月27日リリース

バグ修正:

  • ファイルの欠落によってマニフェストが破損する問題を修正しました。バックアップ中にPostgreSQLがファイルを削除した場合(またはスタンバイにファイルがなかった場合)、次のファイルがコピーされず、マニフェストも更新されないことがありました。この場合、そのバックアップをリストアするとエラーが発生していました。 (レビュー:Cynthia Shang。報告:Vitaliy Kukharik。)

改善:

  • libxml2のビルドオプションに、xml2-configの代わりにpkg-configを使用するようにしました。 (貢献:David Steele, Adrian Vondendriesch。)
  • backup/restoreで、マニフェストにチェックサムが設定されていることを検証するようにしました。 (レビュー:Cynthia Shang。)

v2.22 リリースノート

不具合修正

2020年1月21日リリース

バグ修正:

  • タイムラインの変換エラーを修正しました。タイムラインは、バックアップ後にアーカイブ内のWALセグメントを検証するために必要です。基数16ではなく10で変換していたため、タイムラインが0xA以上になるとエラーが発生していました。 (報告:Lukas Ertl, Eric Veldhuyzen。)

v2.21 リリースノート

Cへの移行完了

2020年1月15日リリース

バグ修正:

  • 非同期コマンドがオプションを無視する問題を修正しました。非同期のarchive-get/archive-pushプロセスは、[global:archive-get]などのコマンド別設定セクションに設定されたオプションを読み込んでいませんでした。 (レビュー:Cynthia Shang。報告:Urs Kramer。)
  • ファイル名の\の扱いを修正しました。マニフェストのチェックサム計算時に\を正しくエスケープしていなかったため、マニフェストを読み込めませんでした。クラスターのファイル名に\が含まれることはほぼないと考えられるため、実運用で深刻な問題になる可能性は低そうです。

新機能:

  • pgBackRestの実装がすべてCになりました。
  • pg-userオプションを追加しました。PostgreSQLへの接続時のデータベースユーザー名を指定します。指定しない場合、pgBackRestは従来どおりローカルのOSユーザーまたはPGUSERを使って接続します。 (貢献:Mike Palmiotto。レビュー:David Steele。)
  • S3ドライバーでパス形式のURIを使用できるようにしました。

改善:

  • backupコマンドの実装をすべてCに移行しました。 (レビュー:Cynthia Shang。)

v2.20 リリースノート

不具合修正

2019年12月12日リリース

バグ修正:

  • PGDATAがシンボリックリンクの場合のarchive-push/archive-getを修正しました。これらのコマンドはcwd()をPGDATAとして使おうとしていましたが、PGDATAがシンボリックリンクの場合、pgBackRestに設定したパスと一致しませんでした。cwd()がpgBackRestのパスと一致しない場合は、そのパスにchdir()して、次のcwd()が最初の呼び出し結果と一致することを確認するようにしました。 (報告:Stephen Frost, Milosz Suchy。)
  • expireコマンドでbackup.infoを再構築する際の参照リストを修正しました。backupコマンドはまだPerl版の再構築処理を使っているため、この問題が発生するのは、1) backup.infoに記載されていないバックアップがあり、かつ2) 通常のようにbackupの後で実行するのではなく、expireコマンドを直接実行する場合だけです。この条件が重なることはまれなため、実運用では問題になっていないと思われます。
  • gzipの展開中に予期しないEOFが発生するとセグメンテーション違反になる問題を修正しました。 (報告:Stephen Frost。)

v2.19 リリースノート

Cへの移行とバグ修正

2019年11月12日リリース

バグ修正:

  • deltaリストアでリモートがタイムアウトする問題を修正しました。大部分が変更されていないクラスターにdeltaリストアを行う場合、protocol-timeoutの時間内にリポジトリからファイルを取得しないと、リモートがタイムアウトすることがありました。これを防ぐため、keepaliveを追加しました。 (報告:James Sewell, Jens Wilke。)
  • 重複したHTTPヘッダーの扱いを修正しました。HTTPヘッダーが繰り返される場合、従来のようにエラーを出すのではなく、カンマで区切られた単一のヘッダーと同等に扱うようにしました。 (報告:donicrosby。)

改善:

  • infoコマンドのJSON出力を整形しないようにしました。改行のないJSONのほうが、監視システムで容易に取り込めます。必要に応じて、jqなどの外部ツールで整形できます。 (貢献:Cynthia Shang。レビュー:David Steele。)
  • checkコマンドの実装をすべてCに移行しました。 (貢献:Cynthia Shang。レビュー:David Steele。)

ドキュメントの改善:

  • pgBackRestへの貢献方法を文書化しました。 (貢献:Cynthia Shang, David Steele。)
  • auto-stopオプションを使用できる最終バージョンを文書化しました。 (貢献:Brad Nicholson。レビュー:David Steele。)

テストスイートの改善:

  • --vm=noneの場合にもコンテナーテストのパスが使われる問題を修正しました。 (提案:Stephen Frost。)
  • expectテストでタイムゾーンが一致しない問題を修正しました。 (提案:Stephen Frost。)
  • デフォルトでは組み込みlibcコードを自動生成しないようにしました。 (提案:Stephen Frost。)

v2.18 リリースノート

PostgreSQL 12のサポート

2019年10月1日リリース

新機能:

  • PostgreSQL 12をサポートしました。
  • 詳細なテキスト出力を行うため、infoコマンドにsetオプションを追加しました。追加される詳細には、選択的リストアに使用できるデータベース、およびテーブルスペースとシンボリックリンクの一覧と各デフォルトの参照先が含まれます。 (貢献:Cynthia Shang。レビュー:David Steele。提案:Stephen Frost, ejberdecia。)
  • リストアの種類にstandbyを追加しました。PostgreSQL < 12ではrecovery.confにstandby_mode=onを自動追加し、PostgreSQL ≥ 12ではstandby.signalを作成することで、PostgreSQLのバージョンをまたいで共通のインターフェースを提供します。 (レビュー:Cynthia Shang。)

改善:

  • restoreコマンドの実装をすべてCに移行しました。 (レビュー:Cynthia Shang。)

ドキュメントの改善:

  • db-timeoutとprotocol-timeoutの関係を文書化しました。 (貢献:Cynthia Shang。レビュー:David Steele。提案:James Chanco Jr。)
  • スタンバイのリポジトリに関する説明を明確にしました。 (貢献:Cynthia Shang。レビュー:David Steele。)
  • 時刻に基づくポイントインタイムリカバリーのFAQを追加しました。 (貢献:Cynthia Shang。レビュー:David Steele。)

v2.17 リリースノート

Cへの移行とバグ修正

2019年9月3日リリース

バグ修正:

  • テーブルやセグメントが非常に多い場合に、マニフェストの作成が遅くなる問題を改善しました。 (報告:Jens Wilke。)
  • 特殊ファイルの除外処理を修正しました。 (報告:CluelessTechnologist, Janis Puris, Rachid Broum。)

改善:

  • stanza-create/update/deleteコマンドの実装をすべてCに移行しました。 (貢献:Cynthia Shang。レビュー:David Steele。)
  • start/stopコマンドの実装をすべてCに移行しました。 (貢献:Cynthia Shang。レビュー:David Steele。)
  • ログディレクトリとログファイルを、それぞれ0750/0640モードで作成するようにしました。 (提案:Damiano Albani。)

ドキュメントの不具合修正:

  • カスタムパッケージを指定してもyum.p.oのパッケージがインストールされる問題を修正しました。 (報告:Joe Ayers, John Harvey。)

ドキュメントの改善:

  • 一般ユーザーでpgBackRestをビルドするようにしました。 (提案:Laurenz Albe。)

v2.16 リリースノート

Cへの移行とバグ修正

2019年8月5日リリース

バグ修正:

  • S3のRequestTimeTooSkewedエラーで即時終了せず、再試行するようにしました。 (報告:sean0101n, Tim Garton, Jesper St John, Aleš Zelený。)
  • HEADリクエストへの応答のtransfer-encodingを誤って処理する問題を修正しました。 (報告:Pavel Suderevsky。)
  • gcc 9の最適化で顕在化したスコープ違反を修正しました。 (報告:Christian Lange, Ned T. Crigler。)

新機能:

  • 標準以外のS3サービスポートを設定するため、repo-s3-portオプションを追加しました。

改善:

  • backup用のlocalコマンドの実装をすべてCに移行しました。 (貢献:David Steele, Cynthia Shang。)
  • checkコマンドの実装を一部Cに移行しました。 (レビュー:Cynthia Shang。)

v2.15 リリースノート

expireのC実装

2019年6月25日リリース

バグ修正:

  • アーカイブの保持処理で過剰に期限切れにしてしまう問題を修正しました。 (修正:Cynthia Shang。レビュー:David Steele。報告:Mohamad El-Rifai。)

改善:

  • expireコマンドの実装をすべてCに移行しました。 (貢献:Cynthia Shang。レビュー:David Steele。)
  • restore用のlocalコマンドの実装をすべてCに移行しました。
  • $PGUSERが機能するよう、固定されたPostgreSQLユーザーの指定を削除しました。 (提案:Julian Zhang, Janis Puris。)
  • configureの--prefixオプションを反映するようにしました。 (提案:Daniel Westermann。)
  • repo-s3-verify-sslオプションをrepo-s3-verify-tlsに改名しました。pgBackRestはいずれのSSLプロトコルバージョンもサポートしていないため(すべて安全でないとみなされています)、新しい名前のほうが適切です。古い名前も引き続き使用できます。

ドキュメントの改善:

  • ドキュメントにFAQを追加しました。 (貢献:Cynthia Shang。レビュー:David Steele。)
  • PostgreSQL ≥ 9.6のドキュメントでwal_level=replicaを使用するようにしました。 (提案:Patrick McLaughlin。)

v2.14 リリースノート

バグ修正と改善

2019年5月20日リリース

バグ修正:

  • archive-push/archive-getでprocess-max > 8の場合にセグメンテーション違反が起きる問題を修正しました。 (報告:Jens Wilke。)

改善:

  • forceを指定してstanza-deleteを実行した場合、データベースの確認を省略するようにしました。 (貢献:Cynthia Shang。レビュー:David Steele。提案:hatifnatt。)
  • 複数プラットフォームへの対応を改善するため、configureスクリプトを追加しました。

ドキュメントの機能:

  • CentOS/RHEL 6/7向けのユーザーガイドを追加しました。

v2.13 リリースノート

不具合修正

2019年4月18日リリース

バグ修正:

  • 長さゼロの読み取りを想定していないI/Oフィルターで、それにより問題が起きる不具合を修正しました。 (報告:brunre01, Jens Wilke, Tomasz Kontusz, guruguruguru。)
  • local/remoteプロセスからのエラー報告の信頼性に関する問題を修正しました。
  • 書き込み、同期、クローズ時にPosix/CIFSのエラーメッセージが誤ったファイル名を報告する問題を修正しました。

v2.12 リリースノート

archive-pushのC実装

2019年4月11日リリース

重要な注意事項:新しいTLS/SSL実装では、RFC-2818に従いS3バケット名にドットを使用できません。このセキュリティ修正は、規格に準拠したホスト名の検証に必要です。

バグ修正:

  • パスオプションが/で終わる場合の問題を修正しました。 (報告:Marc Cousin。)
  • archive-getコマンドにlog-level-file=offを設定した場合の問題を修正しました。 (報告:Brad Nicholson。)
  • CコードでもPerlと同様にhost:port形式のオプションを認識するよう修正しました。 (報告:Kyle Nevins。)
  • remote/localコマンドのログオプションの問題を修正しました。

改善:

  • archive-pushコマンドの実装をすべてCに移行しました。
  • process-maxの上限を999に引き上げました。 (提案:Rakshitha-BR。)
  • S3バケット名にドットが含まれる場合のエラーメッセージを改善しました。

ドキュメントの改善:

  • S3互換オブジェクトストアがサポートされることを明確にしました。 (提案:Magnus Hagander。)

v2.11 リリースノート

archive-getのC実装

2019年3月11日リリース

バグ修正:

  • 書き込みの途中でエラーが発生した場合に、WALセグメントが切り詰められる可能性がある問題を修正しました。 (報告:blogh。)
  • stanzaを指定するとinfoコマンドの出力にWAL min/maxが含まれない問題を修正しました。 (修正:Stefan Fercot。レビュー:David Steele。)
  • CからPerlへ渡すオプションのJSONが規格に準拠していなかった問題を修正しました。 (報告:Leo Khomenko。)

改善:

  • archive-getコマンドの実装をすべてCに移行しました。
  • 古いPerlバージョンでソケットのkeepaliveを有効にしました。 (貢献:Marc Cousin。レビュー:David Steele。)
  • パラメーターを受け付けないコマンドにパラメーターを渡した場合、エラーを出すようにしました。 (提案:Jason O’Donnell。)
  • アーカイブ内にWALセグメントが見つからない場合のヒントを追加しました。 (提案:Hans-Jürgen Schönig。)
  • 証明書でホスト名が見つからない場合のエラーを改善しました。 (提案:James Badger。)
  • デバッグ用に、backup.manifestに追加のオプションを記録するようにしました。 (貢献:blogh。レビュー:David Steele。)

ドキュメントの改善:

  • ドキュメントのデフォルトの対象バージョンをPostgreSQL 10に更新しました。

v2.10 リリースノート

不具合修正

2019年2月9日リリース

バグ修正:

  • archive-getに必要な、未実装だったS3ドライバーのメソッドを追加しました。 (報告:mibiio。)
  • pg-pathの設定が不正な場合の確認処理を修正しました。 (報告:James Chanco Jr。)

v2.09 リリースノート

軽微な改善とバグ修正

2019年1月30日リリース

バグ修正:

  • 非同期の状態ファイルが複数あると、処理を継続できないエラーになる問題を修正しました。 (報告:Vidhya Gurumoorthi, Joe Ayers, Douglas J Hunley。)

改善:

  • infoコマンドの実装をすべてCに移行しました。 (貢献:Cynthia Shang。レビュー:David Steele。)
  • stanzaが存在しない場合のinfoコマンドのテキストメッセージを簡潔にしました。リポジトリのパスを「the repository」に置き換えました。
  • MacOSビルド用に、Makefileに_DARWIN_C_SOURCEフラグを追加しました。 (貢献:Douglas J Hunley。レビュー:David Steele。)
  • CのTLSクライアントのアドレス検索を、新しい方式を使うよう更新しました。 (提案:Bruno Friedmann。)
  • strcasecmp()とfd_set用に、Posix準拠のヘッダーをインクルードしました。 (提案:ucando。)

ドキュメントの不具合修正:

  • リポジトリパスが固定されていた問題を修正しました。 (報告:Heath Lord。)

ドキュメントの改善:

  • 暗号化は常にクライアント側で行うことを明確にしました。 (提案:Bruce Burdick。)
  • ドキュメント用ホストを構築する例を追加しました。
  • マニフェストの変数、リスト、リスト項目でifを使用できるようにしました。

v2.08 リリースノート

軽微な改善とバグ修正

2019年1月2日リリース

バグ修正:

  • S3オブジェクトの格納直後に、その情報を要求する処理を削除しました。 (報告:Matt Kunkel。)
  • archive-get-queue-maxをsize型に修正しました。 (報告:Ronan Dunklau。)
  • 現在のユーザーのuid/gidに対応する名前がない場合のエラーメッセージを追加しました。 (報告:Camilo Aguilar。)
  • PostgreSQL < 9.5で--target-action=shutdownを指定した場合にエラーを出すようにしました。

改善:

  • S3接続にTCP keepaliveを設定しました。 (提案:Ronan Dunklau。)
  • 最新のバックアップを最後に表示するよう、infoコマンドのテキスト出力の順序を変更しました。 (貢献:Cynthia Shang。レビュー:David Steele。提案:Ryan Lambert。)
  • 必要な場合だけファイルの所有権を変更するようにしました。
  • S3エラーを出す際にauthenticationヘッダーをマスクするようにしました。 (提案:Brad Nicholson。)

ドキュメントの改善:

  • target-actionが有効になる条件と、PostgreSQLバージョンごとの対応を明確にしました。 (提案:Keith Fiske。)
  • バケットに合わせてリージョンとエンドポイントを正しく設定する必要があることを明確にしました。 (提案:Pritam Barhate。)
  • ドキュメントのビルド方法を文書化しました。

v2.07 リリースノート

バックアップのチェックサムによる差分判定の自動化

2018年11月16日リリース

バグ修正:

  • 接続エラー時にarchive-push-queue-maxが守られない問題を修正しました。 (報告:Lardière Sébastien。)
  • archive-push-queue-maxを超えたかどうかの判定に固定のWALセグメントサイズを使っていた問題を修正しました。
  • ログファイルを開けなかった後、処理を続けるべき場合にもエラーになる問題を修正しました。 (報告:vthriller。)

新機能:

  • タイムラインの切り替えなどの異常を検出した場合に、バックアップのチェックサムによる差分判定を自動で有効にするようにしました。 (貢献:Cynthia Shang。レビュー:David Steele。)

改善:

  • S3の内部エラー500だけでなく、すべての5xxエラーを再試行するようにしました。 (提案:Craig A. James。)

v2.06 リリースノート

チェックサムによる差分判定を使うバックアップとPostgreSQL 11のサポート

2018年10月15日リリース

バグ修正:

  • S3ドライバーでURIのエンコーディングが欠けていた問題を修正しました。 (報告:Dan Farrell。)
  • 設定ファイルにオプションが重複した場合のエラーメッセージが誤っていた問題を修正しました。 (報告:Jesper St John。)
  • infoレベルのログで、戻り値を誤ってエラーとして報告する問題を修正しました。archive-getの戻りコード1が、動作自体は正常であるにもかかわらず、infoレベルでエラーメッセージとして記録されていました。

新機能:

  • 増分バックアップに、チェックサムによる差分判定を追加しました。この方式では、タイムスタンプではなくチェックサムを使ってファイルが変更されたかどうかを判断します。 (貢献:Cynthia Shang。レビュー:David Steele。)
  • WALセグメントサイズの設定を含め、PostgreSQL 11をサポートしました。

改善:

  • リンク先のテーブルスペースディレクトリでは、現在のPostgreSQLバージョンのサブディレクトリ以外の全ファイルを無視するようにしました。従来は、ほかのファイルが存在し、その所有者がPostgreSQLユーザーでない場合にエラーが発生していました。
  • stanzaの暗号方式を表示するよう、infoコマンドを改善しました。 (貢献:Cynthia Shang。レビュー:David Steele。提案:Douglas J Hunley。)
  • ファイル名の特殊文字への対応を改善しました。
  • pgBackRestの設定ファイルでdeltaオプションを指定できるようにしました。 (貢献:Cynthia Shang。レビュー:David Steele。)

ドキュメントの改善:

  • SSHのセキュリティを高めるため、authorized_hostsでcommandを使用するようにしました。 (提案:Stephen Frost, Magnus Hagander。)
  • 設定リファレンスに、buffer-sizeオプションで指定可能な値を記載しました。 (貢献:Cynthia Shang。レビュー:David Steele。提案:Stéphane Schildknecht。)

v2.05 リリースノート

環境変数によるオプション設定と、一時リレーションおよび非ログリレーションの除外

2018年8月31日リリース

バグ修正:

  • $PGDATA内の相対リンクが、誤ったパスでバックアップに保存されることがある問題を修正しました。絶対リンクには影響せず、テーブルスペースの相対リンクはほかのチェックで検出されていました。 (報告:Cynthia Shang。)
  • 不完全な実装だったonlineオプションをcheckコマンドから削除しました。オフライン動作は、アーカイブとバックアップが正しく機能しているかを確認するという、このコマンドの目的に反します。 (報告:Jason O’Donnell。)
  • Perlから呼び出した際、Cで発生したエラーがログに記録されない問題を修正しました。pgBackRestは正しいエラーコードで終了していましたが、デバッグに役立つエラーメッセージがありませんでした。 (報告:Douglas J Hunley。)
  • 真偽値のオプション(例:delta)を複数回指定した場合の問題を修正しました。 (報告:Yogesh Sharma。)

新機能:

  • すべてのオプションを環境変数で設定できるようにしました。従来はコマンドラインでしか指定できなかったstanzaなどのオプションや、コマンドラインでは指定できなかったrepo1-s3-key-secretなどの機密オプションも含まれます。
  • 一時リレーションと非ログリレーション(テーブルとインデックス)のファイルを、バックアップから除外するようにしました。PostgreSQLに同機能を追加したパッチ8694cc96 および920a5e50 と同じロジックで実装しています。一時リレーションの除外はPostgreSQL ≥ 9.0で有効です。非ログリレーションの除外は、この機能が導入されたPostgreSQL ≥ 9.1で有効です。 (貢献:Cynthia Shang。レビュー:David Steele。)
  • 任意のディレクトリやファイルをバックアップから除外できるようにしました。この機能の誤用はバックアップの不整合につながるため、使用前に--excludeのドキュメントをよく読んでください。 (レビュー:Cynthia Shang。)
  • localとremoteサブプロセスのファイルへのログ出力を可能にする、log-subprocessオプションを追加しました。
  • PostgreSQL 11 Beta 3をサポートしました。

改善:

  • バックアップマニフェスト内のサイズゼロのファイルは、タイムスタンプの差にかかわらず前のマニフェストを参照できるようにしました。 (貢献:Cynthia Shang。レビュー:David Steele。)
  • 状態ファイルを直接確認することで、非同期のarchive-get/archive-pushの性能を改善しました。 (貢献:Stephen Frost。レビュー:David Steele。)
  • コマンドにstanzaオプションがない場合のエラーメッセージを改善しました。 (提案:Sarah Conway。)

ドキュメントの不具合修正:

  • log-pathオプションのリファレンスに記載された、不正なログレベルを修正しました。 (報告:Camilo Aguilar。)

ドキュメントの改善:

  • release.xmlで貢献者を姓と名で整理するのをやめました。リリースノートでは、貢献者の名前は常に提供されたとおりに表記してきましたが、内部IDは姓と名に基づいて割り当てようとしていました。姓と名の判別は難しい場合があり、そもそも適切な方法ではありません。ChristopheのPostgresOpen 2017での講演「人間に主キーはない」に着想を得ています。 (提案:Christophe Pettus。)

テストスイートの改善:

  • テスト環境の外でLibCをビルドした場合にエラーを出すようにしました。本番用のビルドにLibCは不要になりました。

v2.04 リリースノート

バックアップの再開に関する重大な不具合修正

2018年7月5日リリース

重要な注意事項:このリリースでは、バックアップの再開機能に関する重大な不具合を修正しています。このリリースより前に再開したバックアップは、すべて整合性がないものと見なすことを推奨します。resume=nを指定していない限り、前回のバックアップが失敗すると、そのバックアップを再開します。再開したバックアップは、バックアップログにメッセージ"aborted backup of same type exists, will be cleaned to remove invalid files and resumed"があるかどうかで判別できます。このメッセージがある場合、そのバックアップも、同じセット内のほかのバックアップもリストアに使用しないでください。また、リストアログを確認し、再開したバックアップをリストアしていないか調べてください。該当する場合、クラスター内のデータに不整合がある可能性があります。

バグ修正:

  • 再開時に整合性のないバックアップが作成される重大な不具合を修正しました。v0.82でのリグレッションにより、再開時に中断済みバックアップのどのファイルを保持するかを判断する際のタイムスタンプ比較が失われていました。詳細は上記の注意事項を参照してください。 (報告:David Youatt, Yogesh Sharma, Stephen Frost。)
  • クラスター内のユーザーデータベースが1つだけの場合、選択的リストアでエラーになる問題を修正しました。 (修正:Cynthia Shang。レビュー:David Steele。報告:Nj Baliyan。)
  • S3認証ヘッダーのタイムスタンプがISO-8601に準拠していなかった問題を修正しました。AWSと一部のゲートウェイは、時のゼロ埋めを空白にしても受け付けていましたが、他のゲートウェイは受け付けていませんでした。 (修正:Andrew Schwartz。レビュー:David Steele。)

新機能:

  • PostgreSQL 11 Beta 2をサポートしました。

改善:

  • サーバーがcontent-lengthを指定しない場合、0に設定するようHTTPクライアントを改善しました。S3とそのゲートウェイは常にcontent-lengthまたはtransfer-encodingを設定しますが、HTTP 1.1では必須ではなく、HAProxyなどのプロキシがどちらも含めない場合があります。 (提案:Adam K. Sumner。)
  • PostgreSQL接続でsearch_path = 'pg_catalog'を設定するようにしました。 (提案:Stephen Frost。)

ドキュメントの改善:

  • pgBackRestのビルド方法を説明するセクションを新設し、別のホストでビルドするようにしました。
  • バケットの権限を制限するS3ポリシーの例を追加しました。 (提案:Douglas J Hunley, Jason O’Donnell。)

v2.03 リリースノート

単一の実行ファイルによる配置

2018年5月22日リリース

バグ修正:

  • エラーメッセージの処理でバッファーオーバーランが起きる可能性を修正しました。 (報告:Lætitia。)
  • 同期のarchive-getコマンドでアーカイブの書き込みロックを取得していた問題を修正しました。 (報告:uspen。)

改善:

  • エクスポートするC関数とPerlモジュールを、pgBackRestの実行ファイルに直接組み込みました。
  • 移植性を高めるため、__time_tの代わりにtime_tを使用するようにしました。 (提案:Nick Floersch。)
  • コマンド終了時に、総実行時間をミリ秒単位で表示するようにしました。

v2.02 リリースノート

並列の非同期archive-getと設定ファイルのインクルード

2018年5月6日リリース

バグ修正:

  • 指定されたディレクトリだけを同期すべき場面で、再帰的にディレクトリを同期していた問題を修正しました。 (報告:Craig A. James。)
  • incr/diffバックアップでarchive-copyが"path not found"エラーを発生させる問題を修正しました。 (報告:yummyliu, Vitaliy Kukharik。)
  • PGDATA内の2つ以上のファイルが同じディレクトリへのリンクである場合、マニフェストの作成に失敗する問題を修正しました。 (報告:Vitaliy Kukharik。)
  • リンク先のファイルがない場合にdeltaリストアが失敗する問題を修正しました。
  • ヘルプでのキーと値のペアおよびリスト形式のオプションの表示を修正しました。 (報告:Clinton Adams。)

新機能:

  • 非同期かつ並列のarchive-getを追加しました。WALセグメントのキューを維持することで、PostgreSQLがrestore_commandでWALセグメントを要求する際の遅延を減らします。
  • 追加のpgBackRest設定ファイルをサポートしました。ディレクトリは--config-include-pathオプションで指定します。--configと--config-include-pathオプションのデフォルトのベースパスを上書きするため、--config-pathオプションを追加しました。 (貢献:Cynthia Shang。レビュー:David Steele。)
  • 一時認証情報のトークンを設定できるよう、repo-s3-tokenオプションを追加しました。pgBackRestには現時点で新しい認証情報を要求する手段がないため、認証情報の有効期限が切れる前に、コマンド全体(backup、restoreなど)が完了する必要があります。 (貢献:Yogesh Sharma。レビュー:David Steele。)

改善:

  • archive-push-queue-max、manifest-save-threshold、buffer-sizeオプションで、KB、MB、GB、TB、PB単位の値を指定できるようにしました。倍率には1024の累乗を使います。 (貢献:Cynthia Shang。レビュー:David Steele。)
  • バックアップとリストアのパスの同期を効率化しました。小さなテーブルが多数ある場合、ディレクトリ全体の走査には大きなコストがかかります。バックアップとリストアのパスを走査する代わりに、バックアップマニフェストに含まれるパス一覧を使って同期するようにしました。
  • 最初のinfoログメッセージに、コマンドオプションだけでなくコマンドパラメーターも表示するようにしました。
  • archive-queue-maxオプションをarchive-push-queue-maxに改名しました。新しいarchive-get-queue-maxオプションと一貫した命名になります。古いオプション名も引き続き使用できます。

ドキュメントの不具合修正:

  • 32ビットのサポートと注意事項をドキュメントに追加しました。32ビットのサポートはv1.26で追加されています。 (報告:Viorel Tabara。)

ドキュメントの改善:

  • PostgreSQLとjqを使った監視の例を追加しました。 (提案:Stephen Frost, Brian Faherty。)
  • アーカイブ設定にコマンド別セクションの使用例を追加しました。 (提案:Christophe Courtois。)
  • info --output=jsonを実験的機能とする記述を削除しました。
  • spool-pathオプションの古い説明を更新しました。

テストスイートの機能:

  • Cのユニットテストのカバレッジ報告にlcovを使用するようにしました。Devel::Coverはgcovから変換したレポートの分岐カバレッジを報告しないため、切り替えました。モジュールの分岐カバレッジが不完全な場合はエラーになります。ユニットテスト自体のカバレッジは、ステートメントまたは分岐のカバレッジが不完全な場合を除き、レポートに表示しません。

v2.01 リリースノート

軽微なバグ修正と改善

2018年3月19日リリース

バグ修正:

  • --type=immediateでのリストア時に、--target-actionと--recovery-optionが無効なオプションと報告される問題を修正しました。 (報告:Brad Nicholson。)
  • 機密オプション(例:repo1-s3-key)をコマンドラインで渡した場合、直ちにエラーを出すようにしました。pgBackRestは機密オプションをサブプロセスに渡さないため、以前は分かりにくいエラーが発生していました。新しいエラーははるかに明確で、問題を解決するためのヒントも示します。コマンドラインで指定できない機密オプションは記載しないよう、コマンドのドキュメントも更新しました。 (報告:Brad Nicholson。)
  • 組み込みPerlに--no-configを渡す際の問題を修正しました。 (報告:Ibrahim Edib Kokdemir。)
  • log-level-stderr > warnを指定すると、本来出力されないはずのstderrへの出力が検出され、local/remoteプロセスが終了時にエラーになる問題を修正しました。これらのプロセスが警告を出す理由はないため、local/remoteプロセスでの最大値はerrorになりました。 (報告:Clinton Adams。)
  • テーブルスペースが存在する場合の、checkコマンドのマニフェストテストを修正しました。 (修正:Cynthia Shang。レビュー:David Steele。報告:Thomas Flatley。)

改善:

  • 複数の引数を受け付けないオプションに、設定ファイルで複数の引数を設定した場合はエラーを出すようにしました。 (貢献:Cynthia Shang。レビュー:David Steele。)
  • src/Makefileから不要なsudoコマンドを削除しました。 (貢献:Adrian Vondendriesch。レビュー:David Steele。)

ドキュメントの改善:

  • インデックス付きオプション(repo-*、pg-*)の例に、インデックスを表示するようにしました。 (提案:Stephen Frost。)
  • コマンドページの目次を、コマンドだけを列挙する簡潔なものにしました。 (提案:Stephen Frost。)
  • Cライブラリが任意であるという記述を削除しました。

テストスイートの機能:

  • CentOS/RHELパッケージのビルドを追加しました。
  • 静的コード解析にclangを使用するようにしました。初回には、__noreturn__を付けるべきだった一部の関数以外に問題は見つかりませんでした。

v2.00 リリースノート

archive-pushの性能改善

2018年2月23日リリース

新機能:

  • archive-pushコマンドの一部をCで実装しました。これにより、PostgreSQLのarchive_commandが非同期アーカイブプロセスからの状態メッセージを処理する際、大幅に高速化されます。 (レビュー:Cynthia Shang。)

改善:

  • バックアップマニフェストを作成できることを検証するよう、checkコマンドを改善しました。 (貢献:Cynthia Shang。レビュー:David Steele。)
  • HTTPSクライアントの性能を改善しました。バッファリング時にselect()だけに依存せず、ソケットのpendingバイトがあれば考慮するようにしました。場合によっては、接続を閉じるまで最後のバイトがフラッシュされないことがありました。
  • S3の削除性能を改善しました。おそらくテスト中に、定数S3_BATCH_MAXがハードコードされた値2に置き換えられていました。
  • コマンドライン専用ではないすべてのオプションを、コマンドラインでデフォルト値に戻せるようにしました。pgbackrest.conf内のオプションをデフォルト値に戻せるため、特定の用途のために新しい設定ファイルを書く必要性が減ります。
  • Cライブラリを必須にしました。これにより条件付きの読み込みが不要になり、新しいライブラリ機能を開発しやすくなります。
  • pgbackrest実行ファイルをPerlからCバイナリーに変更しました。これにより、非同期archive-pushなど、実行時間が重要なコマンドを高速化できます。
  • 一貫性を高めるため、db-*オプションをpg-*に、backup-*オプションをrepo-*に変更しました。repo-*オプションにインデックスを付けるようになりましたが、現時点で指定できるのは1つだけです。

ドキュメントの機能:

  • ドキュメント内のすべてのクラスターを、チェックサムを有効にして初期化するようにしました。

ドキュメントの改善:

  • ドキュメントとコマンドラインヘルプに、非推奨のオプション名を列挙するようにしました。
  • S3バケットはユーザーが作成する必要があることを明記しました。 (提案:David Youatt。)

v1.29リリースノート

バックアップの再開に関する重大な不具合修正

2018年7月5日リリース

重要な注意事項:このリリースでは、バックアップの再開機能に関する重大な不具合を修正しています。このリリースより前に再開したバックアップは、すべて整合性がないものと見なすことを推奨します。resume=nを指定していない限り、前回のバックアップが失敗すると、そのバックアップを再開します。再開したバックアップは、バックアップログにメッセージ"aborted backup of same type exists, will be cleaned to remove invalid files and resumed"があるかどうかで判別できます。このメッセージがある場合、そのバックアップも、同じセット内のほかのバックアップもリストアに使用しないでください。また、リストアログを確認し、再開したバックアップをリストアしていないか調べてください。該当する場合、クラスター内のデータに不整合がある可能性があります。

バグ修正:

  • 再開時に整合性のないバックアップが作成される重大な不具合を修正しました。v0.82でのリグレッションにより、再開時に中断済みバックアップのどのファイルを保持するかを判断する際のタイムスタンプ比較が失われていました。詳細は上記の注意事項を参照してください。 (報告:David Youatt, Yogesh Sharma, Stephen Frost。)
  • S3認証ヘッダーのタイムスタンプがISO-8601に準拠していなかった問題を修正しました。AWSと一部のゲートウェイは、時のゼロ埋めを空白にしても受け付けていましたが、他のゲートウェイは受け付けていませんでした。 (修正:Andrew Schwartz。レビュー:David Steele。)
  • 指定されたディレクトリだけを同期すべき場面で、再帰的にディレクトリを同期していた問題を修正しました。 (報告:Craig A. James。)
  • --type=immediateでのリストア時に、--target-actionと--recovery-optionが無効なオプションと報告される問題を修正しました。 (報告:Brad Nicholson。)
  • incr/diffバックアップでarchive-copyが"path not found"エラーを発生させる問題を修正しました。 (報告:yummyliu, Vitaliy Kukharik。)
  • PGDATA内の2つ以上のファイルが同じディレクトリへのリンクである場合、マニフェストの作成に失敗する問題を修正しました。 (報告:Vitaliy Kukharik。)
  • リンクされたファイルが存在しない場合、差分リストアが失敗する問題を修正しました。
  • クラスター内のユーザーデータベースが1つだけの場合、選択的リストアでエラーになる問題を修正しました。 (修正:Cynthia Shang。レビュー:David Steele。報告:Nj Baliyan。)

改善:

  • サーバーがcontent-lengthを指定しない場合、0に設定するようHTTPクライアントを改善しました。S3とそのゲートウェイは常にcontent-lengthまたはtransfer-encodingを設定しますが、HTTP 1.1では必須ではなく、HAProxyなどのプロキシがどちらも含めない場合があります。 (提案:Adam K. Sumner。)
  • HTTPSクライアントの性能を改善しました。バッファリング時にselect()だけに依存せず、ソケットのpendingバイトがあれば考慮するようにしました。場合によっては、接続を閉じるまで最後のバイトがフラッシュされないことがありました。
  • S3の削除性能を改善しました。おそらくテスト中に、定数S3_BATCH_MAXがハードコードされた値2に置き換えられていました。
  • バックアップ/リストア時のパスの同期を効率化しました。小さなテーブルが多い場合、ディレクトリ全体の走査は大きな負荷になります。バックアップマニフェストにはパスの一覧が含まれるため、バックアップ/リストア先のパスを走査せず、その一覧を使って同期します。使われなくなった再帰的なパス同期機能を削除しました。

ドキュメントの不具合修正:

  • 32ビットのサポートと注意事項をドキュメントに追加しました。32ビットのサポートはv1.26で追加されています。 (報告:Viorel Tabara。)

ドキュメントの改善:

  • S3バケットはユーザーが作成する必要があることを明記しました。 (提案:David Youatt。)
  • spool-pathオプションの古い説明を更新しました。

v1.28リリースノート

stanzaの削除

2018年2月1日リリース

バグ修正:

  • –db-includeを使って、テーブルスペース内の単一データベースをリストアできない問題を修正しました。 (修正:Cynthia Shang。レビュー:David Steele。報告:Chiranjeevi Ravilla。)
  • archive.infoとbackup.infoを照合するとき、最新のdb-idを確実に選択するようにしました。これにより、system-idとdb-versionが重複している場合(pg_upgradeを元に戻した後など)にも正しく照合できます。 (修正:Cynthia Shang。レビュー:David Steele。報告:Adam K. Sumner。)
  • 無効なコマンドを報告する際のエラーメッセージが冗長すぎる問題を修正しました。 (報告:Jason O’Donnell。)

新機能:

  • 使用していないstanzaを削除するstanza-deleteコマンドを追加しました。 (貢献:Cynthia Shang。レビュー:David Steele。提案:Magnus Hagander。)

改善:

  • stanzaがすでに存在していてもエラーにならないよう、stanza-createコマンドを改善しました。 (貢献:Cynthia Shang。レビュー:David Steele。)

ドキュメントの改善:

  • stanza-create --forceのドキュメントを更新し、使用時に注意するよう促しました。 (提案:Jason O’Donnell。)

v1.27リリースノート

不具合修正とドキュメント

2017年12月19日リリース

バグ修正:

  • backupとrestoreで実行場所のエラーが抑制されていた問題を修正しました。バックアップホストがある場合、リモートホストを無視する別の設定を用意しない限り、バックアップはバックアップホストでのみ、リストアはデータベースホストでのみ許可する必要があります。 (報告:Lardière Sébastien。)
  • PostgreSQL 10でWALの期限切れ処理が行われない問題を修正しました。PostgreSQLのすべてのメジャーバージョンがX.X形式であると想定した、誤った正規表現が原因でした。 (報告:Adam Brusselback。)
  • --no-configオプションが子プロセスに渡されない問題を修正しました。子プロセスがローカルの設定ファイルを読み込んでしまい、予期しない動作を引き起こす可能性がありました。
  • クラスターの旧バージョンのバックアップもアーカイブも存在しない場合、"db (prior)"を出力しないようinfoコマンドを修正しました。 (修正:Cynthia Shang。レビュー:David Steele。報告:Stephen Frost。)

ドキュメントの機能:

  • archive-copyとarchive-checkの関係を説明しました。 (提案:Markus Nullmeier。)
  • archive-copyのリファレンスドキュメントを改善しました。

v1.26リリースノート

リポジトリの暗号化

2017年11月21日リリース

バグ修正:

  • リストア時に、大きなマニフェストのコピーが失敗する場合がある問題を修正しました。 (報告:Craig A. James。)
  • 32ビットアーキテクチャでWALオフセットが誤っていた問題を修正しました。 (修正:Javier Wilson。レビュー:David Steele。)
  • 旧バージョンのデータベースのWALを取得する際の問題を修正しました。stanza-upgradeの後も、旧バージョンのバックアップをリストアし、archive-getでリカバリーできるはずですが、archive-getは最新のdbバージョン/IDしか確認せず、失敗していました。また、同じdbバージョン/IDが履歴に複数回現れる場合の問題も修正しました。 (修正:Cynthia Shang。レビュー:David Steele。報告:Clinton Adams。)
  • バックアップ時の無効なグループを、リストア時に正しく設定できない問題を修正しました。バックアップ時にグループを名前に対応付けられない場合、マニフェストにグループをfalseとして保存し、リストア時には$PGDATAの所有者、これが使えなければ現在のユーザーのグループを使ってグループを設定します。この処理が正しく動作せず、選択したグループでユーザーを上書きしていたため、グループが未定義のままになり、ユーザーが誤ってグループに設定されていました。 (報告:Jeff McCormick。)
  • リモートへのパラメーターの受け渡しを修正しました。複数のdbを指定した場合、実際に対象としているdbにかかわらず、db1のパス、ポート、ソケットパスを渡していました。 (報告:uspen。)

新機能:

  • リポジトリの暗号化をサポートしました。 (貢献:Cynthia Shang, David Steele。)

改善:

  • --compress-level-network=0の場合、gzipフィルターを無効にしました。従来は圧縮レベル0でフィルターを使用しており、利点のない負荷が生じていました。
  • gzipフィルターの展開性能を改善しました。

ドキュメントの機能:

  • issueの報告時に最初に収集する情報を充実させるため、テンプレートを追加しました。 (貢献:Cynthia Shang。レビュー:David Steele。)

ドキュメントの改善:

  • archive-timeoutの使い方を明確にし、PostgreSQLのarchive_timeout設定との違いを説明しました。 (貢献:Cynthia Shang。レビュー:David Steele。提案:Keith Fiske。)

テストスイートの機能:

  • 32ビットのi386/i686アーキテクチャ向け自動テストを追加しました。

v1.25リリースノート

S3の性能改善

2017年10月24日リリース

バグ修正:

  • compress-levelオプションのカスタム設定が無視される問題を修正しました。 (報告:Jens Wilke。)
  • タイムラインの重複を検出した場合のエラーを削除しました。タイムラインの重複は、多くのポイントインタイムリカバリー(PITR)で有効な状態です。 (報告:blogh。)
  • JSON形式のinfo出力で、database-idが整数として出力されない場合がある問題を修正しました。 (修正:Cynthia Shang。レビュー:David Steele。報告:Jason O’Donnell。)

新機能:

  • S3での一覧取得リクエストの性能を改善しました。フィルター式の先頭にリテラル部分がある場合、そこから検索用プレフィックスを生成します。これにより、レート制限を回避できる程度にリクエストを小さく抑えられることが多くなります。 (提案:Mihail Shvein。)

テストスイートの機能:

  • I/O性能テストを追加しました。

v1.24リリースノート

バックアップから除外する項目の追加

2017年9月28日リリース

バグ修正:

  • スタンバイからのバックアップの初期化中に、低い優先度のログメッセージではなく警告が出力される問題を修正しました。 (報告:uspen。)
  • 一部のdb-*オプション(db-portなど)がリモートに渡されない問題を修正しました。 (報告:uspen。)

新機能:

  • 起動時に再構築されるため、pg_snapshots、pg_serial、pg_notify、pg_dynshmemの内容をバックアップから除外しました。
  • 起動時に再構築されるため、pg_internal.initファイルをバックアップから除外しました。

改善:

  • メインプロセスも同じファイルにログを書き込むことを防ぐため、非同期プロセスがメインプロセスから完全に分離された後にログファイルを開くようにしました。 (提案:Jens Wilke。)

ドキュメントの機能:

  • パスワード不要のSSH設定を追加しました。

ドキュメントの改善:

  • PostgreSQLの慣例に合わせ、ドキュメント内のmasterをprimaryに変更しました。

v1.23リリースノート

複数のスタンバイとPostgreSQL 10のサポート

2017年9月3日リリース

バグ修正:

  • サイズが増加中のファイルで、圧縮が中止される場合がある問題を修正しました。 (報告:Jesper St John, Aleksandr Rogozin。)
  • ローカルプロセスからリモートにキープアライブが送信されない問題を修正しました。 (報告:William Cox。)

新機能:

  • スタンバイからのバックアップ用に、最大7つのスタンバイを設定できるようにしました。 (貢献:Cynthia Shang。レビュー:David Steele。)
  • PostgreSQL 10をサポートしました。
  • サードパーティーのS3ゲートウェイとの互換性を高めるため、XMLデータの読み取り時にチャンク転送に加えてcontent-lengthも使えるようにしました。 (提案:Victor Gdalevich。)

改善:

  • S3向けのHTTPタイムアウトを延長しました。
  • 一時的なS3ネットワークエラーへの耐性を高めるため、HTTPの再試行を追加しました。

ドキュメントの不具合修正:

  • 設定ページに各セクションの概要が含まれるよう、ドキュメント生成を修正しました。 (修正:Cynthia Shang。レビュー:David Steele。)

v1.22リリースノート

S3の再試行の修正

2017年8月9日リリース

バグ修正:

  • S3の再試行時の認証問題を修正しました。

v1.21リリースノート

info出力の改善とSSHポートオプション

2017年8月8日リリース

バグ修正:

  • 新しいバージョンのようにarchive_statusディレクトリを自動再作成しないPostgreSQL 8.3に対応するため、リストア時にこのディレクトリを再作成するようにしました。 (報告:Stephen Frost。)
  • stanza-upgrade後に、旧バージョンのPostgreSQLの空のアーカイブディレクトリが残る場合がある問題を修正しました。 (修正:Cynthia Shang。レビュー:David Steele。)

新機能:

  • infoコマンドのテキスト出力とJSON出力を変更しました。現在のデータベースクラスターのバージョンと、存在する場合は以前のバージョンについて、アーカイブID、および現在アーカイブに存在する最小/最大のWALを表示します。 (貢献:Cynthia Shang。レビュー:David Steele。)
  • デフォルト以外のSSHポートをサポートするため、--backup-ssh-portと--db-ssh-portを追加しました。 (貢献:Cynthia Shang。レビュー:David Steele。)

改善:

  • S3が内部エラー(500)を返した場合に再試行するようにしました。

ドキュメントの不具合修正:

  • コマンドの文脈に応じて、--onlineの説明を修正しました。

ドキュメントの機能:

  • 手動インストールの手順に、/etc/pgbackrest.confの作成を追加しました。

ドキュメントの改善:

  • コマンドリファレンスとコマンドラインヘルプで、リポジトリのオプションを独立したセクションに移しました。 (提案:Stephen Frost。)

v1.20リリースノート

8.3/8.4の重大な不具合修正

2017年6月27日リリース

重要な注意事項:PostgreSQL 8.3および8.4でテーブルスペースを利用している環境では、どのv1リリースからでも直ちにアップグレードし、フルバックアップを実行することを推奨します。これらのバージョンに限り、不具合によってテーブルスペースがバックアップされていませんでした。PostgreSQL ≥ 9.0 はこの問題の影響を受けません。

バグ修正:

  • PostgreSQL ≤ 8.4でテーブルスペースがバックアップされない問題を修正しました。
  • Cライブラリのビルドでフラグが欠けていたため、32ビットシステムで不適合なバイナリーが生成される問題を修正しました。 (報告:Adrian Vondendriesch。)

新機能:

  • IO::Socket::SSLがCAを自動検出できないシステム(RHEL7など)に対応し、またカスタムCAを読み込めるよう、s3-repo-ca-pathとs3-repo-ca-fileを追加しました。 (提案:Scott Frazer。)

テストスイートの機能:

  • CIにドキュメントのビルドを追加しました。

v1.19リリースノート

S3のサポート

2017年6月12日リリース

バグ修正:

  • 現在のデータベースバージョンのWALアーカイブの最小/最大を表示するよう、infoコマンドを修正しました。 (修正:Cynthia Shang。レビュー:David Steele。)
  • スタンバイが未設定、または接続できない場合、backup-standbyオプションをリセットし、プライマリーでバックアップを続行するようbackupコマンドを修正しました。 (修正:Cynthia Shang。レビュー:David Steele。)
  • リモートプロセスが出す設定警告によって、マスタープロセスでエラーが発生する問題を修正しました。 (修正:Cynthia Shang。レビュー:David Steele。)

新機能:

  • Amazon S3リポジトリをサポートしました。 (レビュー:Cynthia Shang。)

ドキュメントの不具合修正:

  • 設定リファレンスに記載されていた無効なmax-archive-mbオプションを、archive-queue-maxに変更しました。
  • インストールのセクションで欠けていたsudoを追加しました。 (修正:Lætitia。レビュー:David Steele。)

v1.18リリースノート

stanzaのアップグレード、リファクタリング、ロックの改善

2017年4月12日リリース

バグ修正:

  • ローカルのワーカープロセスを使う読み取り専用操作(restoreなど)が書き込みロックを取得し、並列archive-pushを妨げる場合がある問題を修正しました。 (報告:Jens Wilke。)

新機能:

  • PostgreSQLを新しいメジャーバージョンにアップグレードした後にstanzaを更新できる、stanza-upgradeコマンドを追加しました。 (貢献:Cynthia Shang。レビュー:David Steele。)
  • pgbackrest.confを検証し、オプションが無効な場合や正しいセクションにない場合に警告を表示するようにしました。 (貢献:Cynthia Shang。レビュー:David Steele。)

改善:

  • ロックの仕組みを簡素化しました。以前のようにすべてのローカルおよびリモートのワーカープロセスが書き込みロックを取得するのではなく、マスタープロセスのみがarchive-pushとbackupの書き込みロックを保持するようになりました。
  • バックアップディレクトリ内のファイルのタイムスタンプを、クラスター内のファイルに合わせて設定しなくなりました。元はバックアップの再開のために必要でしたが、現在の再開処理はチェックサムを使って実装されています。
  • restoreコマンドがpostmaster.pidの存在を検出した場合のエラーメッセージを改善しました。 (提案:Yogesh Sharma。)
  • PostgreSQLが一部の戻りコードを致命的なシグナル例外と解釈しないよう、戻りコードを25から125の範囲に振り直しました。 (提案:Yogesh Sharma。)

v1.17リリースノート

ページチェックサムの不具合修正

2017年3月13日リリース

バグ修正:

  • 初期化されたばかりで未使用のページが、ページチェックサムの警告を発生させる問題を修正しました。 (報告:Stephen Frost。)

v1.16リリースノート

ページチェックサムの改善、CI、パッケージのテスト

2017年3月2日リリース

バグ修正:

  • 1GBを超えるテーブルで、最初のセグメントより後にページチェックサムの警告が出る問題を修正しました。 (報告:Stephen Frost。)
  • デフォルト以外のテーブルスペースに作成したデータベースで、pg_filenode.mapとpg_internal.initがページ境界に整列していないという誤った警告が出る問題を修正しました。 (報告:blogh。)

テストスイートの機能:

  • travis-ciを使った継続的インテグレーションを導入しました。
  • サポート対象のすべてのディストリビューション向けに、Debianパッケージを自動ビルドするようにしました。

v1.15リリースノート

リファクタリングと不具合修正

2017年2月13日リリース

バグ修正:

  • マニフェスト作成中にファイルが削除されると(テーブルを削除した場合など)、バックアップが失敗する場合がある、v1.13で導入されたリグレッションを修正しました。 (報告:Navid Golpayegani。)

v1.14リリースノート

リファクタリングと不具合修正

2017年2月13日リリース

バグ修正:

  • archive-pushでエラーが発生しても再試行せず、.errorファイルを手動削除しない限り、PostgreSQLにエラーを返し続ける問題を修正しました。 (報告:Jens Wilke。)
  • 並列アーカイブで複数のプロセスが同時に新しいパスを作成しようとするとエラーになる競合状態を修正しました。 (報告:Jens Wilke。)

改善:

  • infoコマンドが提供するwal archive min/maxの性能を改善しました。 (提案:Jens Wilke。)

ドキュメントの機能:

  • 非同期アーカイブのドキュメントを更新し、新しい方式の動作と旧方式との違いをより正確に説明しました。 (提案:Jens Wilke。)

v1.13リリースノート

並列アーカイブ、stanzaの作成、infoとcheckの改善

2017年2月5日リリース

重要な注意事項:非同期アーカイブの新しい実装では、WALを別のキューにコピーしなくなりました。1.13へのアップグレード後に古いキューに残ったWALは処理されずに残り、リポジトリに送信されません。これを防ぐには、archive_command = falseを設定してアーカイブを停止してください。次にpgbackrest --stanza=[stanza-name] archive-pushを実行して非同期キューを空にし、処理の完了を待ちます。[spool-path]/archive/[stanza-name]/outのキューが空であることを確認してください。最後に1.13をインストールし、元のarchive_commandを復元します。重要な注意事項:stanza-createコマンドは任意ではなくなりました。新しいstanzaでバックアップまたはアーカイブを行う前に、必ず実行する必要があります。既存のstanzaでstanza-createを実行する必要はありません。

バグ修正:

  • Cライブラリでコンパイラー警告を発生させていたconstへの代入を修正しました。 (修正:Adrian Vondendriesch。レビュー:David Steele。)
  • --repo-syncオプションの対象から漏れていた、いくつかのディレクトリ同期を修正しました。
  • リストア時にユーザー/グループが存在しない場合、File->owner()で"uninitialized value"エラーになる場合がある問題を修正しました。 (報告:Leonardo GG Avellar。)
  • プロトコルの不一致エラーで、期待する値が出力されない問題を修正しました。
  • 終了コード1を異常終了とする、archive-getの誤ったログメッセージを修正しました。

新機能:

  • 非同期アーカイブを、改善されたマルチプロセス実装に変更しました。
  • 多くの場合に壊れたリポジトリを修復でき、必須として使えるだけの堅牢性を持つよう、stanza-createコマンドを改善しました。 (貢献:Cynthia Shang。レビュー:David Steele。)
  • スタンバイで実行できるようcheckコマンドを改善しました。ただし、レプリカではpg_switch_xlog()を実行できないため、基本的なチェックのみを行います。 (貢献:Cynthia Shang。レビュー:David Steele。)
  • infoコマンドに、アーカイブとバックアップのWAL範囲を追加しました。
  • PostgreSQL < 9.2でテーブルスペースを再マッピングする際、pg_tablespace.spclocationの更新を促す警告を追加しました。 (貢献:blogh。レビュー:David Steele。)
  • 読み取り専用の操作であるarchive-get、restore、info、checkについて、リモートでのロックを不要にしました。 (提案:Michael Vitale。)

改善:

  • 最初のログエントリが書き込まれるまで、ログファイルのバナーを出力しないようにしました。 (提案:Jens Wilke。)
  • バックアップ開始LSNでフィルターすることで、不完全な書き込みのページがページチェックサムで誤検出される可能性を減らしました。
  • Cライブラリのビルドフラグから、Intel固有の最適化を削除しました。 (貢献:Adrian Vondendriesch。レビュー:David Steele。)
  • --lockオプションを削除しました。このオプションはロックディレクトリをリポジトリ外に配置できるようになる前に導入されたもので、現在は不要です。
  • ログのタイムスタンプを非表示にできる--log-timestampオプションを追加しました。主に、自動生成するドキュメントでフィルターを使わずに済むようにするためのものです。
  • 相対パスを絶対パスに変換できない場合、適切なエラーコードを返すようにしました。 (提案:Yogesh Sharma。)

ドキュメントの機能:

  • ユーザーガイドにprocess-maxオプションの説明を追加しました。 (貢献:Cynthia Shang。レビュー:David Steele。)

v1.12リリースノート

ページチェックサム、設定、不具合修正

2016年12月12日リリース

重要な注意事項:以前のリリースでは、現在のコマンドに対して無効なオプションをコマンドラインで指定しても、エラーになりませんでした。今後は無効なオプションでエラーが発生するため、運用に支障が出ないよう、環境内のコマンドラインオプションを入念に確認することが重要です。

バグ修正:

  • 指定したコマンドに対して無効なオプションをコマンドラインで指定しても、エラーにならない問題を修正しました。従来はそのオプションを無視し、動作に変化はありませんでしたが、混乱の原因になっていました。今後は無効なオプションでエラーが発生します。 (報告:Nikhilchandra Kulkarni。)
  • リポジトリ内のテーブルスペース用の内部シンボリックリンクが作成されない問題を修正しました。この問題が表面化するのは、ファイルシステムのスナップショットを使って、その場でクラスターを手動起動しようとした場合のみです。通常のバックアップとリストアには影響しませんでした。
  • ログシステムを初期化する前、つまりオプションの解析中に、エラーをコンソールへ出力できない問題を修正しました。エラーコードは正しく返されていたため、実際には失敗した処理が成功したように見えることはありませんでした。 (報告:Adrian Vondendriesch。)
  • バックアップサーバーで指定したdb-portが、最初に設定したデータベースのものでない限り、リモートに正しく渡されない問題を修正しました。 (報告:Michael Vitale。)

新機能:

  • PostgreSQL >= 9.3でチェックサムが有効な場合、データファイルのページチェックサムをpgBackRestで検証できる--checksum-pageオプションを追加しました。この機能にはCライブラリが必要ですが、当初はOSパッケージで提供されていない場合があります。ライブラリが存在し、クラスターでチェックサムが有効になっている場合、このオプションを自動的に有効にします。 (提案:Stephen Frost。)
  • シンボリックリンクをサポートしないファイルシステムにリポジトリを置く場合、内部シンボリックリンクを作成しないようにできる--repo-linkオプションを追加しました。pgBackRestの機能には影響しませんが、利便性のためのlatestリンクと、テーブルスペースの内部シンボリックリンクは作成されません。そのため、ファイルシステムのスナップショットを使い、その場でクラスターを手動起動する際に影響します。
  • NTFSなど、ディレクトリ同期をサポートしないファイルシステム向けに、リポジトリ内のディレクトリ同期を無効にできる--repo-syncオプションを追加しました。
  • コマンドの正常完了を示す、予測可能なログエントリを追加しました。たとえばバックアップが正常に終了すると、INFO: backup command end: completed successfullyが出力されます。 (提案:Jens Wilke。)

改善:

  • 単純化のため、pg_controlは処理の最後に単独でコピーするのではなく、他のファイルと一緒にコピーするようにしました。backupコマンドには従来の動作は不要であり、restoreは一時ファイルにコピーしたうえで、リストアの最後に名前を変更します。

ドキュメントの不具合修正:

  • PDFのビルドで例外が抑制される問題を修正しました。
  • v1.10で導入された、セクションリンクのリグレッションを修正しました。

ドキュメントの機能:

  • クイックスタートに保持の説明を追加しました。

v1.11リリースノート

非同期アーカイブの効率に関する不具合修正

2016年11月17日リリース

バグ修正:

  • 非同期アーカイブがファイルをまとめて転送せず、1回の実行で1ファイルしか転送しない問題を修正しました。このリグレッションはv1.09で導入され、効率にのみ影響していました。非同期モードでも、すべてのWALセグメントは正しくアーカイブされていました。 (報告:Stephen Frost。)

v1.10リリースノート

stanzaの作成と軽微な不具合修正

2016年11月8日リリース

バグ修正:

  • バックアップ間でデータベースに変更がなく、pg_controlだけが変化した場合、バックアップがエラーになる場合がある問題を修正しました。
  • 同じプレフィックスを持つテーブルスペースパスで、無効なリンクのエラーが発生する問題を修正しました。 (報告:Nikhilchandra Kulkarni。)

新機能:

  • リポジトリでのstanzaの作成を正式な操作にするため、stanza-createコマンドを追加しました。 (貢献:Cynthia Shang。レビュー:David Steele。)

改善:

  • Perlモジュールから余分なuse libディレクティブを削除しました。 (提案:Devrim Gündüz。)

v1.09リリースノート

9.6のサポート、設定の柔軟性、不具合修正

2016年10月10日リリース

バグ修正:

  • バックアップディレクトリが存在しない場合にエラーメッセージを記録しないよう、checkコマンドを修正しました。 (修正:Cynthia Shang。レビュー:David Steele。)
  • 無効なarchiveコマンドを検出した場合、そのコマンドを正しく表示するようエラーメッセージを修正しました。 (報告:Jason O’Donnell。)
  • archive-pushが新しいWALセグメントをキューに入れるための空き容量を確保できないと、非同期アーカイバーが起動されない問題を修正しました。このため、archive-pushを直接呼ぶなどの手動操作なしでは、キューが空になりませんでした。今後は、新しいWALセグメントを保存する空き容量がない場合、PostgreSQLにエラーを返しますが、非同期プロセスは起動し、最終的に空き容量を確保できるようにします。 (報告:Jens Wilke。)
  • ローカルプロセスが再開またはリストア中にチェックサムを計算するものの、ファイルをコピーせず、リモートがアイドル状態になると発生するタイムアウトを修正しました。 (報告:Jens Wilke。)

新機能:

  • PostgreSQL 9.6では、非排他的バックアップを自動的に使用するようにしました。
  • sshクライアントを指定できるcmd-sshオプションを追加しました。 (提案:Jens Wilke。)
  • コンソールログの送信先をstderrまたはstdoutに制御するlog-level-stderrオプションを追加しました。デフォルトはwarnです。こちらのほうが直感的かもしれませんが、以前のバージョンとは動作が変わります。log-level-stderr=offを設定すると、以前の動作を維持できます。 (提案:Sascha Biberhofer。)
  • データベース接続のapplication_nameを"pgBackRest [command]"に設定するようにしました。 (提案:Jens Wilke。)
  • archive-checkオプションが有効な場合、archive_modeが有効であることを確認するようにしました。

改善:

  • pgBackRestのアドバイザリーロックを取得できない場合のエラーメッセージを明確にし、PostgreSQLのバックアップロックではないことがわかるようにしました。 (提案:Jens Wilke。)
  • コマンド開始時のINFOログにpgBackRestのバージョン番号を含めるようにしました。
  • ローカルプロセスの開始/停止時のINFOログにプロセスIDを記録するようにしました。

ドキュメントの機能:

  • ユーザーガイドにarchive-timeoutオプションの説明を追加しました。 (貢献:Cynthia Shang。レビュー:David Steele。)

v1.08リリースノート

不具合修正とログの改善

2016年9月14日リリース

バグ修正:

  • ローカルプロセスが完了時に切断せず、後でタイムアウトする場合がある問題を修正しました。 (報告:Todd Vernick。)
  • WALセグメントがアーカイブに届くのを待っている間に、プロトコル層がタイムアウトする場合がある問題を修正しました。 (報告:Todd Vernick。)

改善:

  • より完全なログを残せるよう、ファイルが作成されるまでファイル向けのログ出力をキャッシュするようにしました。

v1.07リリースノート

スレッドからプロセスへの移行と不具合修正

2016年9月7日リリース

バグ修正:

  • スタンバイからのバックアップ中に、テーブルスペースをプライマリーからコピーしていた問題を修正しました。
  • ローカルだけでなくリモートでもバックアップ情報を確認するよう、checkコマンドを修正しました。 (修正:Cynthia Shang。レビュー:David Steele。)
  • retention-archive-type=diffの際にretention-archiveが自動設定されず、アーカイブの期限切れ処理が意図したほど進まない問題を修正しました。 (修正:Cynthia Shang。レビュー:David Steele。)

新機能:

  • 互換性と性能を高めるため、Perlのスレッドをプロセスに置き換えました。
  • プライマリーのレプリケーションスロットがバックアップに含まれないよう、$PGDATA/pg_replslotディレクトリの内容を除外しました。
  • archive-check=nの場合でも、backup.manifestにarchive-startとarchive-stopを記録するようにしました。 (提案:Jens Wilke。)
  • アーカイブの保持設定が意図した効果をもたらさない場合や、無期限の保持を許す場合に警告を追加しました。 (貢献:Cynthia Shang。レビュー:David Steele。)
  • PostgreSQL 9.6 rc1の非排他的バックアップを試験的にサポートしました。以降のリリース候補でコントロール/カタログ/WALのバージョンが変わると、互換性が失われる可能性がありますが、pgBackRestはリリースごとに更新して追従します。

ドキュメントの不具合修正:

  • バイナリーのパスに関連する、ドキュメントの再現性に関する軽微な問題を修正しました。

ドキュメントの機能:

  • アーカイブの保持について説明しました。 (貢献:Cynthia Shang。レビュー:David Steele。)

v1.06リリースノート

スタンバイからのバックアップと不具合修正

2016年8月25日リリース

バグ修正:

  • 別のリンクを参照するテーブルスペースのリンクで、エラーを出さずにテーブルスペース全体をスキップしていた問題を修正しました。 (報告:Michael Vitale。)
  • 複数の値を許可すべきでないオプションをpgbackrest.confで複数回指定しても、エラーにならない問題を修正しました。 (報告:Michael Vitale。)
  • db-timeoutを増やしたときに、protocol-timeoutが自動的に増えない問題を修正しました。 (報告:Todd Vernick。)

新機能:

  • スタンバイクラスターからのバックアップをサポートしました。バックアップの開始/停止や、レプリケーションされないファイルのコピーには、引き続きプライマリーへの接続が必要です。ただし、ファイルの大半をスタンバイからコピーすることで、プライマリーの負荷を減らします。
  • データベースの設定をより柔軟にしました。バックアップサーバーにマスターとスタンバイの両方を設定でき、pgBackRestがどちらがプライマリーかを自動判定します。このため、独立したバックアップサーバーを使う場合、プライマリーからスタンバイへフェイルオーバーしても、バックアップの設定を変更する必要がありません。
  • PostgreSQLが起動時に消去、再作成、またはゼロ初期化するディレクトリをバックアップから除外しました。pgsql_tmpとpg_stat_tmpが該当します。また、従来から除外していたbackup_label.old、postmaster.opts、postmaster.pid、recovery.conf、recovery.doneに加え、postgresql.auto.conf.tmpファイルも除外しました。
  • PostgreSQL 9.6 beta4の非排他的バックアップを試験的にサポートしました。以降のベータ版でコントロール/カタログ/WALのバージョンが変わると、互換性が失われる可能性がありますが、pgBackRestはリリースごとに更新して追従します。

改善:

  • マニフェストの作成時に、リンクを参照するリンクに対するエラーメッセージを改善しました。
  • archive-pushまたはarchive-getで相対パスを検出した場合のエラーメッセージに、ヒントを追加しました。
  • ファイルのコピー元ホストがわかるよう、バックアップのログメッセージを改善しました。

v1.05リリースノート

テーブルスペースリンクのチェックに関する不具合修正

2016年8月9日リリース

バグ修正:

  • パスの一部に$PGDATAを含むテーブルスペースが、実際にはそうでなくても$PGDATAのサブディレクトリと判定される問題を修正しました。相対パスのチェックも少し強化しました。 (報告:Chris Fort。)

ドキュメントの機能:

  • cronによるバックアップのスケジュール設定について説明を追加しました。 (貢献:Cynthia Shang。レビュー:David Steele。)

ドキュメントの改善:

  • バックログをpgBackRestのウェブサイトからGitHubリポジトリのwikiに移しました。 (貢献:Cynthia Shang。レビュー:David Steele。)

v1.04リリースノート

各種不具合修正

2016年7月30日リリース

バグ修正:

  • 余分なリモートプロセスが作成され、マルチスレッドのバックアップ/リストアがタイムアウトしたり、ロック競合を発生させたりする場合がある問題を修正しました。 (報告:Michael Vitale。)
  • checkコマンドでdb-pathが必須になっておらず、未指定の場合にわかりやすいエラーメッセージではなくアサーションが発生していた問題を修正しました。 (報告:Michael Vitale。)
  • データベースのバージョン/IDがアーカイブのものと一致しない場合、エラーになるようcheckコマンドを修正しました。 (修正:Cynthia Shang。レビュー:David Steele。)
  • データベースサーバーのpgbackrest.confにbackup-hostオプションがない場合、リモートがさらに自身のリモートを開始しようとする問題を修正しました。 (報告:Lardière Sébastien。)
  • pg_xlogがシンボリックリンクの場合、その内容までバックアップする問題を修正しました。リストア時に問題は起きませんでしたが、容量を無駄にしていました。
  • ロック処理内の無効なlog()呼び出しを修正しました。

新機能:

  • PostgreSQL 9.6 beta3の非排他的バックアップを試験的にサポートしました。以降のベータ版でコントロール/カタログ/WALのバージョンが変わると、互換性が失われる可能性がありますが、pgBackRestはリリースごとに更新して追従します。

改善:

  • SSHプロトコル接続でバナーを非表示にしました。
  • エラーが発生したホストを識別できるよう、リモートのエラーメッセージを改善しました。
  • すべての種類のリモートがロックを取得するようにしました。従来の例外はテストハーネスとpgBackRestが同じVMで動作していた時代のもので、今は該当しません。

ドキュメントの機能:

  • backrest-userオプションのデフォルトがbackrestである理由を補足しました。 (提案:Michael Vitale。)
  • サポート対象プラットフォームでのパッケージの提供状況を更新しました。 (提案:Michael Vitale。)

v1.03リリースノート

checkコマンドと不具合修正

2016年7月2日リリース

バグ修正:

  • マルチスレッドのbackupで多数の小さなファイルを処理すると、keep-alivesの送信が滞る問題を修正しました。また、シングル/マルチスレッドのbackup再開時と、restoreのチェックサム計算時には、キープアライブがまったく送られていませんでした。 (報告:Janice Parkinson, Chris Barber。)
  • db-hostオプションを設定した場合、コマンドラインから明示的に呼び出したexpireが実行を拒否する問題を修正しました。backupの後に自動実行するexpireでは、問題はありませんでした (報告:Chris Barber。)
  • archive-checkが無効でもarchive_commandを検証していた問題を修正しました。

新機能:

  • アーカイブとバックアップに向けてpgBackRestが正しく設定されているか検証するcheckコマンドを追加しました。 (貢献:Cynthia Shang。レビュー:David Steele。)
  • protocol-timeoutオプションを追加しました。従来のprotocol-timeoutは、db-timeoutに30秒を加えた値でした。
  • バックアップ終了時にリモートの停止に失敗しても、例外を発生させなくなりました。代わりに、protocol-timeoutを増やすことを推奨する警告を出します。
  • PostgreSQL 9.6 beta2の非排他的バックアップを試験的にサポートしました。以降のベータ版でコントロール/カタログ/WALのバージョンが変わると、互換性が失われる可能性がありますが、pgBackRestはリリースごとに更新して追従します。

改善:

  • バックアップ時に記録したユーザー/グループがリストア先ホストに存在しない場合の処理を改善しました。ユーザー/グループを名前に対応付けられない場合も、明示的に処理するようにしました。
  • オプションの処理を大幅に厳格化しました。従来はコマンドに明示的に割り当てられていないオプションでも使用できる場合がありました。特に、実行場所を決めるbackup-hostとdb-hostで顕著でした。

ドキュメントの改善:

  • 再現可能なビルドを生成するため、ドキュメントで固定の日付を使用できるようにしました。 (提案:Adrian Vondendriesch。)
  • ユーザーガイドに非同期アーカイブの説明を追加しました。 (貢献:Cynthia Shang。レビュー:David Steele。)
  • 新しいPerlでは/usr/lib/perl5が検索パスから削除されているため、pgBackRestモジュールの推奨インストール先を/usr/share/perl5に変更しました。
  • 旧バージョンのpgBackRestを削除する手順を追加しました。

v1.02リリースノート

Perl 5.22の不具合修正

2016年6月2日リリース

バグ修正:

  • Perl 5.22の新しい制約に合わせて、sprintf()の使い方を修正しました。書式文字列から参照されないパラメーターは、許可されなくなりました。 (修正:Adrian Vondendriesch。レビュー:David Steele。)

ドキュメントの不具合修正:

  • Perl 5.2Xと互換性のない構文を修正しました。 (修正:Christoph Berg, Adrian Vondendriesch。レビュー:David Steele。)
  • PDFのロゴに使用していた絶対パスを修正しました。 (報告:Adrian Vondendriesch。)

ドキュメントの機能:

  • 不具合、機能、リファクタリングを明確に区別できるよう、リリースノートをセクションに分けました。コアのコードに影響しないドキュメントとテストスイートの変更には、「補足事項」セクションを追加しました。
  • manページの生成を追加しました。 (貢献:Adrian Vondendriesch, David Steele。)
  • 変更履歴は、Markdownのみで出力される最後のドキュメントでした。標準のレンダラーで出力できるよう、変換処理を作成しました。変更履歴はウェブサイトに掲載し、名前を「リリース」に変更しました。 (貢献:Cynthia Shang。レビュー:David Steele。)

v1.01リリースノート

infoの拡充、選択的リストア、9.6のサポート

2016年5月17日リリース

新機能:

  • infoコマンドのテキスト出力を拡充し、すべてのバックアップについて、タイムスタンプ、サイズ、参照一覧を含めるようにしました。 (貢献:Cynthia Shang。レビュー:David Steele。)
  • クラスターのバックアップからデータベースを選んでリストアできるようにしました。特定のデータベースだけをリストアする場合、容量と時間を大幅に削減できます。リストアしなかったデータベースにはアクセスできませんが、共有カタログから除去するには手動で削除する必要があります。 (レビュー:Cynthia Shang, Greg Smith, Stephen Frost。提案:Stephen Frost。)
  • PostgreSQL 9.6 beta1の非排他的バックアップを試験的にサポートしました。以降のベータ版でコントロール/カタログ/WALのバージョンが変わると、互換性が失われる可能性がありますが、pgBackRestはリリースごとに更新して追従します。 (レビュー:Cynthia Shang。)

v1.00リリースノート

新しいリポジトリ形式と設定方式、リンクのサポート

2016年4月14日リリース

重要な注意事項:この一斉移行が必要なリリースでは、旧バージョンのpgBackRestとの互換性が失われます。マニフェスト形式、ディスク上の構造、設定方式、実行ファイル名とパス名がすべて変更されています。このバージョンのpgBackRestのバックアップを保存するには新しいリポジトリを作成し、リストアが必要になる場合に備えて旧リポジトリをしばらく保持する必要があります。旧リポジトリからのリストアには旧バージョンのpgBackRestが必要ですが、名称が変更されたため、1.00と旧バージョンのpgBackRestを同時にインストールできます。変更点の詳細は以下の説明を参照してください。

新機能:

  • より簡単に使える新しい設定方式を実装しました。詳細はユーザーガイドと設定リファレンスを参照してください。単純な構成では、すべてのオプションをstanzaセクションに記述できるようになりました。stanza間で共有するオプションは[global]セクションに記述できます。より複雑な構成では引き続きコマンド別セクションを使用できますが、必要になるケースはまれなはずです。 (提案:Michael Renner。)
  • repo-pathオプションは、ローカルかリモートかにかかわらず、バックアップとアーカイブを保存するリポジトリを常に指すようになりました。このため、repo-remote-pathオプションを削除しました。非同期アーカイブ時にWALセグメントをキューに入れる場所は、新しいspool-pathオプションで指定できます。ローカルリポジトリは不要になりました。
  • デフォルトの設定ファイル名をpg_backrest.confからpgbackrest.confに変更しました。他の名称変更と一貫させるとともに、1.00への移行時に古い設定ファイルを誤って読み込むことを防ぐためです。 (提案:Michael Renner, Stephen Frost。)
  • デフォルトのリポジトリ名を/var/lib/backupから/var/lib/pgbackrestに変更しました。 (提案:Michael Renner, Stephen Frost。)
  • ロックファイルはデフォルトで/tmp/pgbackrestに保存するようになりました。現在では/run/pgbackrestの使用が推奨されますが、この場所を使うには、本リリースに含まれない初期化スクリプトが必要です。ロックディレクトリはlock-pathオプションで設定できます。
  • ログファイルはデフォルトで/var/log/pgbackrestに保存するようになりました。logrotateで管理できるよう、日付は付加しなくなりました。ログディレクトリはlog-pathオプションで設定できます。 (提案:Stephen Frost。)
  • 実行ファイル名をpg_backrestからpgbackrestに変更しました。 (提案:Michael Renner, Stephen Frost。)
  • PGDATAからリンクされるすべてのファイルとディレクトリをバックアップに含めるようになりました。デフォルトでは、リンク先をファイルまたはディレクトリとしてPGDATA内に直接リストアします。--link-allオプションを使うと、すべてのリンクを元の場所にリストアできます。--link-mapオプションを使うと、リンク先を新しい場所へ変更できます。
  • --tablespaceオプションを削除し、機能をより明確に示す--tablespace-map-allオプションに置き換えました。
  • infoより多くの情報を出力し、debugほど詳細ではないdetailログレベルを追加しました。

安定版以前のリリース

v0.92リリースノート

コマンドラインのリポジトリパスの修正

2016年4月6日リリース

バグ修正:

  • マスタープロセスがリモートに--repo-pathではなく--repo-remote-pathを渡し、デフォルトのリポジトリディレクトリ(/var/lib/backup)にロックファイルが作成されて、通常は失敗に終わる問題を修正しました。この問題は、--repo-remote-pathをpg_backrest.confではなくコマンドラインで指定した場合にのみ発生していました。 (報告:Jan Wieck。)

v0.91リリースノート

テーブルスペースの不具合修正と軽微な機能拡張

2016年3月22日リリース

テーブルスペースに関する重要な不具合修正:0.90でリポジトリ形式を意図せず変更したため、テーブルスペースを含むバックアップは、ディスク上で有効なPostgreSQLクラスターではなくなっていました。影響を受けるのは、restoreコマンドを使用せず、バックアップを直接コピーしてPostgreSQLクラスターをリストアするユーザーのみでした。ただし、この修正により、リストア方法を問わず、テーブルスペースを含む古いバックアップとの互換性が失われます(pgBackRestはエラーを発生させ、リストアを拒否します)。テーブルスペースを含むクラスターでは、バージョン0.91をインストールした直後に新しいフルバックアップを取得することを推奨します。古いバックアップをリストアする必要がある場合は、そのバックアップのバージョンと一致するpgBackRestを使用してください。

バグ修正:

  • pgBackRest 0.90で導入されたリポジトリの互換性の問題を修正しました。 (報告:Evan Benoit。)

新機能:

  • バックアップ時にglobal/pg_controlを最後にコピーするようにしました。
  • .infoファイルと.manifestファイルを一時ファイルに書き込んでから、最終的な場所へ移動し、fsyncするようにしました。
  • --no-start-stopオプションの名前を--no-onlineに変更しました。

テストスイートの機能:

  • Perl-Criticによるソースの静的解析を導入しました。現在はgentleレベルで合格しています。

v0.90リリースノート

9.5のサポート、各種機能拡張、軽微な不具合修正

2016年2月7日リリース

バグ修正:

  • --no-archive-checkを指定すると設定エラーが発生する問題を修正しました。 (報告:Jason O’Donnell。)
  • 特定のタイミングでシステムがクラッシュして一時WALファイルが残ると、次のarchive-pushが失敗する場合がある問題を修正しました。
  • archive-copy=nを併せて指定しなくても、retention-archiveをバックアップの保持数(retention-fullまたはretention-diff)より小さく安全に設定できるようになりました。アーカイブの保持対象外となるバックアップの整合性を確保するために必要なWALは、アーカイブに保持します。ただし、この場合、アーカイブの保持対象外となるバックアップではPITRはできません。

新機能:

  • テーブルスペースのバックアップとリストアでは、実行対象のPostgreSQLバージョン用に作成されたサブディレクトリのみを操作するようにしました。テーブルスペースには、特にバイナリーアップグレード時などに複数のバージョンが共存できるため、これによりバックアップ時の余分なファイルのコピーや、リストア時の他のバージョンの消去を防ぎます。これはPostgreSQL >= 9.0にのみ適用されます。それ以前のPostgreSQLはテーブルスペースのディレクトリを共有できませんでした。
  • archive-check=yであるにもかかわらず、archive_commandがpg_backrestを実行しない場合にエラーを発生させるようにしました。 (貢献:Jason O’Donnell。レビュー:David Steele。)
  • repo-pathまたはrepo-remote-pathが存在しない場合のエラーメッセージを改善しました。
  • --deltaおよび--forceリストアオプションに、宛先が有効な$PGDATAディレクトリであることを確認するチェックを追加しました。pgBackRestはPG_VERSIONまたはbackup.manifest(中断したリストアで残るファイル)の存在を確認します。どちらもない場合は--deltaと--forceを無効にしますが、リストア自体は続行します。ただし、$PGDATAディレクトリまたはいずれかのテーブルスペースディレクトリにファイルがある場合は、処理を中止します。
  • リストアで--set=latest(デフォルト)を指定した場合、実際にリストアするバックアップをログに出力するようにしました。
  • PostgreSQL 9.5の部分WALセグメントとrecovery_target_action設定をサポートしました。archive_mode = 'always'設定はまだサポートしていません。
  • PostgreSQL 9.4で導入されたrecovery_target = 'immediate'リカバリー設定をサポートしました。
  • テーブルスペースについて、pg_tblspc内のパスまたはファイル、pg_tblspc内の相対リンク、$PGDATA内のテーブルスペースをチェックするようにしました。この3つはいずれもエラーになります。

v0.89リリースノート

タイムアウトの不具合修正と読み取り専用リポジトリからのリストア

2015年12月24日リリース

バグ修正:

  • リモートかつマルチスレッドで実行する、時間のかかるバックアップやリストアがタイムアウトする問題を修正しました。スレッドのリモートプロセスがすべての処理を行っている間も、メインプロセスのリモートがタイムアウトしないよう、キープアライブを使用するようになりました。デバッグしやすいよう、タイムアウトのエラーメッセージも改善しました。 (報告:Stephen Frost。)

新機能:

  • --no-lockと--log-level-file=offを使い、読み取り専用リポジトリからリストアできるようにしました。--no-lockオプションはリストア時にのみ使用できます。

v0.88リリースノート

ドキュメントと軽微な不具合修正

2015年11月22日リリース

バグ修正:

  • start/stopコマンドで--configオプションが必須になっていた問題を修正しました。 (報告:Dmitry Didovicher。)
  • ログファイルに追記せず、上書きしていた問題を修正しました。 (報告:Stephen Frost, Dmitry Didovicher。)
  • backup-userが任意になっていなかった問題を修正しました。

新機能:

  • リポジトリ内のバックアップディレクトリにはシンボリックリンクを作成しなくなりました。これらのリンクは任意の場所を指すことができ、危険になり得るためです。リストア時には引き続きシンボリックリンクを再作成します。 (提案:Stephen Frost。)
  • バックアップの期限切れ処理のメッセージを改善しました。フルバックアップと差分バックアップの期限切れ処理を、併せて期限切れとなるすべての依存バックアップの一覧とともに、1行でログに出力します。
  • アーカイブの保持数を明示的に設定していない場合、フルバックアップの保持数に自動設定するようにしました。

ドキュメントの機能:

  • ユーザーガイドに、差分リストア、期限切れ処理、専用バックアップホスト、pgBackRestの起動と停止、レプリケーションの説明を追加しました。

v0.87リリースノート

ウェブサイトとユーザーガイド

2015年10月28日リリース

新機能:

  • backup_label.oldファイルとrecovery.doneファイルをバックアップから除外するようにしました。

ドキュメントの機能:

  • pgBackRestの基本と、PITRを含む高度なトピックの一部を扱う、新しいユーザーガイドを追加しました。まだ追加すべき内容は多くありますが、まずは出発点です。 (貢献:David Steele, Stephen Frost。レビュー:Michael Renner, Cynthia Shang, Eric Radman, Dmitry Didovicher。)

v0.85リリースノート

起動/停止コマンドと軽微な不具合修正

2015年10月8日リリース

バグ修正:

  • バックアップまたはリストアが正常に完了した後に、エラーを返す場合がある問題を修正しました。
  • バックアップ失敗時にバックアップのルートディレクトリに一時ファイルが残ると、再開に失敗する問題を修正しました。コピー段階でバックアッププロセスを強制終了した場合に起こりやすい状況でした。

新機能:

  • PostgreSQLが停止しているシステムや、他の理由で処理を休止する必要があるシステムで、pgBackRestプロセスが実行されないようにするstopコマンドとstartコマンドを追加しました。
  • PostgreSQL 9.5 beta1を試験的にサポートしました。今後のバージョンでコントロールバージョンやWALマジックが変わると互換性が失われる可能性がありますが、各pgBackRestリリースで追従します。--target-resumeテスト(この機能は9.5で変更されています)を除くすべての回帰テストに合格しています。.partial WALセグメントのテストはまだありません。

v0.82リリースノート

リファクタリング、コマンドラインヘルプ、軽微な不具合修正

2015年9月14日リリース

バグ修正:

  • 再開した圧縮バックアップで既存ファイルが保持されない問題を修正しました。
  • 再開およびincr/diff時に、前回のバックアップの圧縮設定とハードリンク設定が同じであることを確認していなかった問題を修正しました。
  • --forceを指定せずに、稼働中のPostgreSQLクラスターで--no-start-stopによるコールドバックアップを開始できてしまう問題を修正しました。
  • スレッドが要求されていなくてもスレッドを開始する場合がある問題を修正しました。
  • アップグレード/ダウングレード後に、backup.infoとarchive.info内のpgBackRestのバージョン番号が更新されない問題を修正しました。
  • リポジトリにstanzaがないと、infoコマンドが例外を発生させる問題を修正しました。 (報告:Stephen Frost。)
  • PostgreSQLのpg_stop_backup()のNOTICEがstderrに出力される問題を修正しました。 (報告:Stephen Frost。)

新機能:

  • PostgreSQL 9.5 alpha2を試験的にサポートしました。今後のバージョンでコントロールバージョンやWALマジックが変わると互換性が失われる可能性がありますが、各pgBackRestリリースで追従します。--target-resumeテスト(この機能は9.5で変更されています)を除くすべての回帰テストに合格しています。.partial WALセグメントのテストはまだありません。

改善:

  • pgBackRestの命名規則と一貫させるため、recovery-settingオプションとセクションの名前をrecovery-optionに変更しました。
  • コマンド、特に非同期アーカイブを高速化するため、モジュールの動的読み込みを追加しました。

ドキュメントの機能:

  • コマンドラインヘルプは、他のドキュメントと同じXMLソースから抽出するようになり、内容も大幅に詳しくなりました。

v0.80リリースノート

DBIのサポート、安定性、利便性向上の機能

2015年8月9日リリース

バグ修正:

  • infoコマンドが最も古いバックアップと最も新しいバックアップの整形済みタイムスタンプを、どちらも現在時刻として報告していた問題を修正しました。影響を受けるのはtext出力のみで、json出力は正しいエポック値を報告していました。 (報告:Michael Renner。)
  • sshエラー(特に接続時のエラー)がログに記録されないプロトコルの問題を修正しました。

新機能:

  • リポジトリを作成、更新するときのディレクトリとファイルのモードを統一しました。デフォルトではumaskを0000に設定しますが、neutral-umask設定で無効にできます。 (提案:Cynthia Shang。)
  • 新しいバックアップの開始時に、失敗したバックアップを自動停止できるstop-autoオプションを追加しました。
  • pgBackRestがpg_start_backup()とpg_stop_backup()の戻りを待つ時間を制限するdb-timeoutオプションを追加しました。
  • リストア開始時にpg_controlを削除し、最後にコピーし直すようにしました。これにより、リストアが未完了の状態でPostgreSQLが起動される可能性を防ぎます。
  • db-path設定とdb-portの整合性を確認するチェックを追加しました。クラスターが報告するdata_directoryをdb-path設定と比較し、クラスターが報告するバージョンをpg_controlから読み取った値と比較します。また、db-socket-path設定が絶対パスであることを確認します。
  • PostgreSQL 9.5 alpha1を試験的にサポートしました。今後のバージョンでコントロールバージョンやWALマジックが変わると互換性が失われる可能性がありますが、各pgBackRestリリースで追従します。--target-resumeテスト(この機能は9.5で変更されています)を除くすべての回帰テストに合格しています。.partial WALセグメントのテストはまだありません。

改善:

  • PostgreSQLへの接続に、psqlの代わりにPerlのDBIとDBD::Pgを使用するようにしました。cmd-psql設定とcmd-psql-option設定を削除し、db-portとdb-socket-pathに置き換えました。インストールガイドの手順に従い、使用するOSにDBD::Pgをインストールしてください。

テストスイートの機能:

  • Ubuntu 14.04とCentOS 7向けのvagrantテスト設定を追加しました。

v0.78リリースノート

CPANへの依存の削除と安定性の改善

2015年7月13日リリース

改善:

  • マルチスレッド動作でのCPANパッケージへの依存を削除しました。threadsパッケージとThread::Queueパッケージを更新してもよいですが、必須ではなくなりました。
  • 待機時間のバックオフを、等比数列からフィボナッチ数列に変更しました。妥当な値を保ちつつ、待機時間の増加を緩やかにします。

テストスイートの機能:

  • Ubuntu 12.04とCentOS 6向けのvagrantテスト設定を追加しました。

v0.77リリースノート

CentOS/RHEL 6のサポートとプロトコルの改善

2015年6月30日リリース

新機能:

  • バックアップ/リストアとアーカイブの安全性を高めるため、Fileオブジェクトにファイルとディレクトリの同期処理を追加しました。 (提案:Andres Freund。)
  • CentOS/RHEL 6のデフォルトであるPerl 5.10.1とOpenSSH 5.3をサポートしました。 (提案:Eric Radman。)
  • archive_commandが設定されておらず、--no-archive-checkも指定されていない状態でバックアップを実行した場合のエラーメッセージを改善しました。 (提案:Eric Radman。)

v0.75リリースノート

新しいリポジトリ形式、infoコマンド、9.5の試験的サポート

2015年6月14日リリース

重要な注意事項:この一斉移行が必要なリリースでは、旧バージョンのpgBackRestとの互換性が失われます。マニフェスト形式、ディスク上の構造、実行ファイル名がすべて変更されています。このバージョンのpgBackRestのバックアップを保存するには新しいリポジトリを作成し、リストアが必要になる場合に備えて旧リポジトリをしばらく保持する必要があります。pg_backrest.confファイルは変更されていませんが、cronなどにあるpg_backrest.plへの参照を、.pl拡張子のないpg_backrestに変更する必要があります。

新機能:

  • infoコマンドを追加しました。
  • ログの出力をバッファリングしないようにしました。これにより、複数スレッドから書き込むログファイルの混乱を抑えられるはずです。 (提案:Michael Renner。)
  • PostgreSQL 9.5を試験的にサポートしました。コントロールバージョンやWALマジックが変わると互換性が失われる可能性がありますが、各リリースで追従します。

改善:

  • backupでのファイルの処理順を効率化しました。サイズの大きい順にコピーすることで、最後に1つのスレッドだけが大きなファイルをコピーする状況を避けます。restoreではすでに実装済みでした。

v0.70リリースノート

アーカイブの安定性とログ、ヘルプの改善

2015年6月1日リリース

バグ修正:

  • hardlink=nの場合、incr/diffバックアップでarchive-copyが失敗する問題を修正しました。この場合はpg_xlogパスがまだ存在しないため、作成する必要があります。 (報告:Michael Renner。)
  • 非同期アーカイブでarchive-max-mbに達した際、archive-pushが正しく0を返さない問題を修正しました。また、停止ファイルを2回削除する必要がないよう、非同期処理のチェックを転送後に移しました。このケースの単体テストを追加し、何が起きたかをユーザーが把握しやすいようエラーメッセージも改善しました。 (報告:Michael Renner。)
  • 1つのstanzaに対して同じ種類の操作を複数実行できてしまう、ロックの問題を修正しました。データの整合性への影響はないようでしたが、アーカイブ時に不要なエラーが発生し、バックアップ/リストアでもエラーにつながる可能性がありました。 (報告:Michael Renner。)

新機能:

  • チェックサムが一致する場合、重複するWALセグメントをアーカイブできるようにしました。一部のリカバリー手順で必要になるためです。
  • pg_backrest.confで#文字を使ってコメントを記述したり、設定を無効にしたりできるようにしました。行の最初の文字にある#のみが有効です。 (提案:Michael Renner。)
  • バックアップがチェックポイントを待っていることがわかるよう、pg_start_backup()の前のログを改善しました。 (提案:Michael Renner。)
  • コマンドの動作とログを各種修正しました。 (レビュー:Michael Renner。提案:Michael Renner。)

改善:

  • JSONモジュールを、Perl本体に同梱されるJSON::PPに置き換えました。

ドキュメントの不具合修正:

  • ヘルプを各種修正しました。 (レビュー:Michael Renner。報告:Michael Renner。)

v0.65リリースノート

再開とリストアのログの改善、コンパクトなリストア

2015年5月11日リリース

バグ修正:

  • 相対パスでリストアを実行した場合に、recovery.confに絶対パスが書き込まれない問題を修正しました。

新機能:

  • 再開機能を改善しました。再開時に既存のファイルが変更されていないことを確認し、バックアップの進行中にチェックサムを保持できるよう、マニフェストをより頻繁に保存します。再開時の各ケースを検証する単体テストも追加しました。
  • 再開を任意にしました。無効にするにはresume設定、またはコマンドラインの--no-resumeを使用してください。
  • リストア時のinfoメッセージを増やしました。以前はリストアのメッセージの大半がdebugレベルだったため、ログへの出力が少なくなっていました。
  • テーブルスペースをpg_tblspcパスにリストアできるtablespace設定を追加しました。これにより、開発やステージングなどに便利な、まとまった配置でリストアできます。現在のpgBackRestはpg_tblspcパス内にはリンクのみがあることを前提としているため、このようにリストアしたクラスターをバックアップすることはできません。

v0.61リリースノート

非圧縮のリモート宛先に関する不具合修正

2015年4月21日リリース

バグ修正:

  • 圧縮率の高い大きなファイルを非圧縮のリモート宛先へコピーすると、バッファリングエラーが発生する場合がある問題を修正しました。このエラーは展開処理で検出され、データ破損ではなくバックアップの失敗として扱われていたため、以前のバージョンで正常に完了したバックアップには影響しないはずです。

v0.60リリースノート

バージョンサポートの拡充とWALの改善

2015年4月19日リリース

バグ修正:

  • 重複するWALを送信するとエラーになるようにしました。従来、この操作が成功するのはチェックサムが無効な場合のみでした。

新機能:

  • データベースのシステムIDを使い、アーカイブ内のすべてのWALが同じデータベースに対応することを確認します。これにより、複数クラスターのWALを同じアーカイブに送信してしまう設定ミスを防ぎやすくなります。

テストスイートの機能:

  • PostgreSQL 8.3までさかのぼって回帰テストが動作するようになりました。

v0.50リリースノート

リストア機能などの追加

2015年3月25日リリース

バグ修正:

  • チェックサムの不具合を修正し、通常のバックアップと再開したバックアップで動作するようにしました。チェックサムとチェックサムによる差分処理は機能として分離すべきだとようやく気付き、これによりいくつかの処理を簡素化できました。チェックサムによる差分処理についてはissue #28を作成しました。
  • バックアップの種類と前回のバックアップが一致しない中断済みバックアップから、バックアップを再開できてしまう問題を修正しました。

新機能:

  • リストア機能を追加しました。
  • すべてのオプションをコマンドラインで指定できるようになり、pg_backrest.confが任意になりました。
  • 圧縮/展開処理はスレッドを使わずに実行し、チェックサムとサイズはストリーム内で計算するようになりました。このため、ファイルのチェックサムは必須になりました。
  • Postgresが停止している場合にバックアップできる--no-start-stopオプションを追加しました。postmaster.pidが存在する場合、バックアップを実行するには--forceが必要です(ただしPostgresが稼働中の場合、整合性のないバックアップが作成される可能性が高くなります)。このオプションは主に単体テストのために追加しましたが、実際の運用でも用途があるかもしれません。
  • マニフェストの破損や変更を検出するため、backup.manifestにチェックサムを追加しました。
  • latestリンクは常に最新のバックアップを指します。利便性の向上とリストアの簡略化のために追加しました。

テストスイートの機能:

  • すべての領域で単体テストを拡充しました。

v0.30リリースノート

コアの再構成と単体テスト

2014年10月5日リリース

ドキュメントの機能:

  • 不足していたドキュメントを追加しました

テストスイートの機能:

  • すべての基本操作を対象とする、かなり包括的な単体テストを追加しました。まだ作業が必要なのは確かですが、単体テストには常に改善の余地があります。

v0.19リリースノート

エラーの報告と処理の改善

2014年5月13日リリース

バグ修正:

  • file_copy()がデフォルトでエラーを無視する設定になっていた重大な不具合を発見し、修正しました。また、file_exists()には、ファイルが実際に存在していても存在確認に失敗する問題がありました。可能性は非常に低いものの、両者が重なるとエラーを出さずに破損したバックアップが作成されるおそれがありました。

v0.18リリースノート

アーカイブがない場合に軽微なエラーを返す

2014年4月13日リリース

バグ修正:

  • アーカイブファイルがない場合、archive-getコマンドは1を返すようになりました。これにより、重大なエラー(ssh接続の失敗、ファイルコピーエラーなど)と区別できます。PostgreSQLは、これによってアーカイブストリームが正常に終了したことを判断できます。ただし、アーカイブストリームの途中に欠落がある可能性は考慮していません。 (報告:Stephen Frost。)

v0.17リリースノート

アーカイブディレクトリを削除できない場合の警告

2014年4月3日リリース

バグ修正:

  • 空であるはずのアーカイブディレクトリを削除できない場合、backrestはエラーを発生させていました。適切な修正を予定していますが、当面は処理を続けられるよう警告に変更しました。この問題はバックアップにも影響していました。最初のアーカイブファイルが別のディレクトリにある場合、さらに不運な条件が重なると、最後のアーカイブファイルが送信されないことがありました。

v0.16リリースノート

SSHセッションへのRequestTTY=yesの設定

2014年4月1日リリース

バグ修正:

  • sshセッションにRequestTTY=yesを追加しました。これにより、不規則に起きる停止が防げることを期待しています。

v0.15リリースノート

archive-getの追加

2014年3月29日リリース

新機能:

  • リストアを支援するarchive-get機能を追加しました。
  • バックアップ開始時にチェックポイントを強制するstart-fast=yオプションを追加しました。

v0.11リリースノート

軽微な修正

2014年3月26日リリース

バグ修正:

  • データベースへのSSH接続からmaster_stderr_discardオプションを削除しました。時折停止することがあり、ファイル処理で以前に見られた問題と関連している可能性があります。 (報告:Stephen Frost。)
  • backupコマンドとexpireコマンドでのロックファイルの競合をERRORに変更しました。アーカイブのロック処理からコピーしたため、DEBUGになっていました。

v0.10リリースノート

バックアップとアーカイブが動作

2014年3月5日リリース

新機能:

  • リストア機能はありませんが、バックアップディレクトリは整合性のあるPostgreSQLデータディレクトリです。ファイルを展開するか、バックアップの圧縮を無効にする必要があります。ZFSなどのファイルシステムでは非圧縮バックアップが適しています。スナップショットを使ってローカルにリストアし、論理バックアップの作成や必要なデータの部分的な復旧ができるためです。
  • アーカイブはシングルスレッドです。書き込み量の多い、当方の数テラバイト規模のデータベースでは問題になっていません。大容量のWALボリューム、または近くにある大容量ボリュームでasyncオプションを使うことを推奨します。
  • バックアップはマルチスレッドですが、Net::OpenSSHライブラリは100%スレッドセーフではないようで、ごくまれにスレッドが停止します。プロセス全体のタイムアウトがあり、プロセスを強制終了することで解消します。確かに、非常に不格好な方法です。
  • バックアップを再開するとチェックサムが失われます。複数回再開した場合、最後のバックアップでのみチェックサムが記録されます。前回のバックアップのチェックサムは正しく記録されており、フルバックアップを取得するとすべてリセットされます。
  • Config::IniFileは大きなファイルをうまく扱えないようなので、backup.manifestはStorable形式で書き込んでいます。ぜひ人が読めるテキストとして保存できるようにしたいと考えています。

ドキュメントの機能:

  • ドキュメントはまったくありません(コード内を除きます)。このリリースノートだけは例外です。

7 - よくある質問

pgBackRestのバックアップ、リストア、構成、トラブルシューティングに関するよくある質問。

はじめに

よくある質問では、ユーザーガイド、構成リファレンス、コマンドリファレンスで説明されている場合も、されていない場合もある個別の疑問について、詳しく説明します。ここで問題に関する情報が見つからない場合は、pgBackRestのGitHubのIssue一覧 も有用な情報源です。


「could not find WAL segment」エラーが発生した場合はどうすればよいですか。

このエラーはさまざまな問題によって発生する可能性があります。たとえば、次のような原因が考えられます。

  • archive_commandの設定ミス
  • pgBackRest構成ファイルの設定ミス
  • ネットワークまたは権限の問題
  • サードパーティー製品(S3、Swift、Minioなど)の設定の問題
  • アーカイブ待ちのWALが大量にキューにたまっている

次の確認を推奨します。

  • PostgreSQLのarchive_commandを確認する
  • 各ホストのpgBackRest構成設定を確認する(たとえば、リポジトリホストにpg*の設定、pgホストにrepo*の設定が指定されているか)
  • --archive-timeoutをpgBackRest構成ファイル内の値(またはデフォルト値)より大きくしてcheckコマンドを実行し、WALキューを処理し終えるまでにより長い時間が必要かどうかを確認する。システムで大量のWALを生成している場合は、非同期アーカイブ の構成を検討する

バックアップセットを手動で削除するにはどうすればよいですか。

コマンドリファレンス:Expire で説明しているとおり、--setオプションを使用してフルバックアップセットを期限切れとして削除できます。


コマンドごとにオプションを個別に設定するにはどうすればよいですか。

pgBackRestでは、構成ファイル内でコマンドごとにオプションを個別に設定できます。クラスターのstanzaの構成 で、この機能とオプションの優先順位を詳しく説明しています。

たとえば、コマンドごとにprocess-maxオプションを最適化できます。

[global]
# used where not overridden
process-max=2

[global:backup]
# more cores for backup
process-max=4

[global:restore]
# all the cores for restore
process-max=8

[global:archive-push]
# more cores for archive-push
process-max=3

[global:archive-get]
# fewer cores for archive-get
process-max=1

S3バケット名にドット(ピリオド)を使用できますか。

RFC-2818では、ワイルドカードをドット(.)に一致させることを認めていないため、S3バケット名にドットを含めてはなりません。S3バケット名にドットが含まれると、「unable to find hostname ‘my.backup.bucket.s3.amazonaws.com’ in certificate common name or subject alternative names」などのエラーが発生します。

例外はrepo-s3-uri-style=pathです。これは、バケットをホストではなくURIの先頭に付加します。バケットがホスト名の一部ではないため、証明書はエンドポイントのみと照合され、バケット名内のドットは問題になりません。ただし、すべてのS3互換オブジェクトストアがパス形式のURIをサポートしているわけではありません。


以前のバージョンのpgBackRestのパッケージはどこにありますか。

apt.postgresql.org リポジトリでは、以前のバージョンのアーカイブ を管理しています。Debianでも、すべてのテストビルドのスナップショット を管理しています。


backup-standby=yでスタンバイデータベースが停止していると、バックアップが失敗するのはなぜですか。

スタンバイからのバックアップを構成する主な目的は、プライマリーの負荷を減らすことです。そのため、スタンバイが停止したときにバックアップをプライマリーへ切り替えると、多くの場合、その目的を果たせなくなります。システムですでに障害が発生している状況で、プライマリーにさらに負荷をかけることは推奨しません。比較的新しいバックアップがあれば、バックアップ取得は緊急の作業ではありません。重要なのは、WALのアーカイブを遅れずに続けることです。システムが再び安定してからバックアップを取得する時間は十分にあります。

どうしてもバックアップが必要であれば、スタンバイを増やすか、backup-standbyを削除することが解決策になります。コマンドラインで--no-backup-standbyを指定すれば上書きできるため、一度だけのバックアップのために構成を変更する必要はありません。


リポジトリはスタンバイホストに配置すべきですか。

いいえ。プライマリーとスタンバイのデータベースを構成する場合、フェイルオーバーをシームレスに処理できるように、pgBackRestの構成ファイルは対称にすることを推奨します。そうでなければ、フェイルオーバー時に構成を変更する必要があり、さらに問題が生じる可能性もあります。

詳しくは、ユーザーガイドの専用リポジトリホスト のセクションを参照してください。


時刻を指定したポイントインタイムリカバリーが動作しないように見えるのはなぜですか。

時刻を指定するポイントインタイムリカバリで最もよくある誤りは、対象時刻より後に終了したバックアップを選ぶことです。--type=time を使用し、--set オプションを指定しない場合、pgBackRest は設定済みのリポジトリから --target= で指定した時刻より前に終了したバックアップを探します。適切なバックアップが見つからない場合、最新のバックアップをリストアするのではなく、エラーを返します。対象時刻より後に終了したバックアップから WAL を再生して、それより前の対象時刻に戻ることはできません。

--setオプションを使用するには、infoコマンドを実行し、終了タイムスタンプが目標時刻より前のバックアップを見つけてバックアップセットを選択します。リストアを実行するときに、--set=BACKUP_LABELオプションを指定します。BACKUP_LABELは選択したバックアップセットです。

詳しくは、ユーザーガイドのポイントインタイムリカバリー のセクションを参照してください。


WALアーカイブの接尾辞は何を意味しますか。

接尾辞は、ファイルの整合性を検証するためのSHA1チェックサムです。省略する方法はありません。


バックアップの種類(フル、差分、増分)によってリストアにかかる時間は長くなりますか。

どの種類のバックアップも、リストアに必要な時間は同じです。リストアではバックアップマニフェストに基づいてファイルを取得します。増分バックアップや差分バックアップの場合、マニフェストが以前のバックアップ内のファイルを参照することがあります。バックアップの種類によって、バックアップの作成にかかる時間には差が生じることがありますが、ディスクI/O、ネットワークI/Oなどが同じであれば、リストア時間を決めるのはデータベースのサイズです。


ネットワークから隔離された環境で使用するために、バックアップをエクスポートするにはどうすればよいですか。

pgBackRestは、バックアップやWALアーカイブの保存だけでなく、圧縮、暗号化、ファイルのバンドル化といった機能に必要な重要なメタデータの維持にもリポジトリを使用します。このため、非常に限定的で厳しい条件を満たさない限り、バックアップとWALファイルの一部を単純にコピーするだけでは、通常は動作しません。

ただし、データベースを単独で利用できる形でエクスポートし、USBなどで転送することが目的であれば、回避策があります。--archive-copy オプションを有効にしてバックアップを作成し、必要なWALセグメントがバックアップとともに保存されるようにします。その後、--type=none --pg1-path=/your/target/pathを使用してリストアします。これにより、必要なWALファイルがすべてpg_walに配置された、リストア済みのPostgreSQLデータディレクトリが生成されます。これはpg_basebackupで作成されるものと似ています。

このディレクトリを別のシステムにコピーすれば、PostgreSQLはpgBackRestリポジトリにアクセスせずにリカバリーできるはずです。

このバックアップのリカバリーではタイムラインの切り替えが発生しないため、このクラスターはエクスポート元のリポジトリにWALを送信すべきではないことに注意してください。新しいクラスターがネットワークから隔離された環境にある場合、これは問題にならないはずです。

8 - プロジェクトの指標

pgBackRestプロジェクトのコードカバレッジ指標と品質統計。

コードカバレッジ

pgBackRestは、/src内のCのコアコードで、関数・分岐・行の完全なカバレッジを目指しています。

関数と行は、例外なく完全にカバーされています。

分岐カバレッジでは、マクロ内とassert()呼び出し内の分岐を除外します。マクロには独自の単体テストがあるため、使用されるすべての場所でテストする必要はありません。アサートは常に真となるはずの条件を検査するため、分岐カバレッジが完全になることは想定していません。

ディレクトリ 関数 分岐 行
build/common 32/32 (100.00%) 72/72 (100.00%) 268/268 (100.00%)
build/config 39/39 (100.00%) 564/564 (100.00%) 1142/1142 (100.00%)
build/error 6/6 (100.00%) 22/22 (100.00%) 71/71 (100.00%)
build/help 13/13 (100.00%) 138/138 (100.00%) 265/265 (100.00%)
build/postgres 8/8 (100.00%) 58/58 (100.00%) 149/149 (100.00%)
command 17/17 (100.00%) 104/104 (100.00%) 210/210 (100.00%)
command/annotate 1/1 (100.00%) 12/12 (100.00%) 31/31 (100.00%)
command/archive 14/14 (100.00%) 98/98 (100.00%) 189/189 (100.00%)
command/archive/get 10/10 (100.00%) 208/208 (100.00%) 447/447 (100.00%)
command/archive/push 12/12 (100.00%) 148/148 (100.00%) 365/365 (100.00%)
command/backup 50/50 (100.00%) 790/790 (100.00%) 1641/1641 (100.00%)
command/check 13/13 (100.00%) 106/106 (100.00%) 214/214 (100.00%)
command/control 4/4 (100.00%) 34/34 (100.00%) 48/48 (100.00%)
command/expire 11/11 (100.00%) 274/274 (100.00%) 392/392 (100.00%)
command/help 8/8 (100.00%) 178/178 (100.00%) 283/283 (100.00%)
command/info 16/16 (100.00%) 430/430 (100.00%) 748/748 (100.00%)
command/local 1/1 (100.00%) — 4/4 (100.00%)
command/remote 1/1 (100.00%) 6/6 (100.00%) 18/18 (100.00%)
command/repo 9/9 (100.00%) 110/110 (100.00%) 195/195 (100.00%)
command/restore 37/37 (100.00%) 726/726 (100.00%) 1350/1350 (100.00%)
command/server 6/6 (100.00%) 24/24 (100.00%) 81/81 (100.00%)
command/stanza 5/5 (100.00%) 106/106 (100.00%) 125/125 (100.00%)
command/verify 22/22 (100.00%) 366/366 (100.00%) 733/733 (100.00%)
common 146/146 (100.00%) 624/624 (100.00%) 1350/1350 (100.00%)
common/compress 12/12 (100.00%) 24/24 (100.00%) 80/80 (100.00%)
common/compress/bz2 13/13 (100.00%) 20/20 (100.00%) 123/123 (100.00%)
common/compress/gz 13/13 (100.00%) 26/26 (100.00%) 118/118 (100.00%)
common/compress/lz4 15/15 (100.00%) 24/24 (100.00%) 116/116 (100.00%)
common/compress/zst 13/13 (100.00%) 12/12 (100.00%) 96/96 (100.00%)
common/crypto 32/32 (100.00%) 88/88 (100.00%) 424/424 (100.00%)
common/error 33/33 (100.00%) 66/66 (100.00%) 179/179 (100.00%)
common/io 61/61 (100.00%) 182/182 (100.00%) 523/523 (100.00%)
common/io/filter 31/31 (100.00%) 92/92 (100.00%) 276/276 (100.00%)
common/io/http 58/58 (100.00%) 292/292 (100.00%) 685/685 (100.00%)
common/io/socket 28/28 (100.00%) 110/110 (100.00%) 339/339 (100.00%)
common/io/tls 37/37 (100.00%) 122/122 (100.00%) 409/409 (100.00%)
common/type 335/335 (100.00%) 922/922 (100.00%) 3123/3123 (100.00%)
config 93/93 (100.00%) 1025/1026 (99.90%) 1649/1649 (100.00%)
db 23/23 (100.00%) 94/94 (100.00%) 301/301 (100.00%)
info 48/48 (100.00%) 240/240 (100.00%) 712/712 (100.00%)
info/manifest 10/10 (100.00%) 132/132 (100.00%) 303/303 (100.00%)
postgres 36/36 (100.00%) 128/128 (100.00%) 333/333 (100.00%)
postgres/interface 4/4 (100.00%) 10/10 (100.00%) 35/35 (100.00%)
protocol 60/60 (100.00%) 266/266 (100.00%) 860/860 (100.00%)
storage 68/68 (100.00%) 304/304 (100.00%) 759/759 (100.00%)
storage/azure 26/26 (100.00%) 162/162 (100.00%) 487/487 (100.00%)
storage/cifs 2/2 (100.00%) — 6/6 (100.00%)
storage/gcs 34/34 (100.00%) 176/176 (100.00%) 574/574 (100.00%)
storage/posix 29/29 (100.00%) 165/166 (99.40%) 328/328 (100.00%)
storage/remote 40/40 (100.00%) 128/128 (100.00%) 568/568 (100.00%)
storage/s3 31/31 (100.00%) 200/200 (100.00%) 661/661 (100.00%)
storage/sftp 39/39 (100.00%) 408/408 (100.00%) 762/762 (100.00%)
合計 1705/1705 (100.00%) 10616/10618 (99.98%) 25148/25148 (100.00%)

/test/src/module内のCの単体テストモジュールも、関数と行を完全にカバーしていますが、このレポートには含めていません。